By now most everybody has heard of the term SOA which stands for Service Oriented Architecture and if you are like others, including myself, you have been inundated with high-level zero-informative type explanations that abstract the definition out to the point of no return. In this blog entry I would like give my take on SOA as it relates to a programmers mind and what I feel the moniker should really be.

Way back in the day when you wrote your first program there was most likely the “Hello World” application that gave you enough gumption to keep on trucking with your IT intentions. Through your first couple months of programming you most likely found places where code was repeated and thus created a maintenance nightmare in trying to keep all instances up to date. If you were fortunate enough to have a modular programming language (i.e. RPG ILE, Java, .NET, PHP, etc) at your disposal you could then take the chunks of code that were repeated in each program and make a separate callable “function” that could be used time and time again.

Wanna know what modularizing your code accomplished and what title you can now add to your next review/resume? That’s right, you are now a bonafide SOA programmer. How is that possible being that SOA is just now surfacing being preached by the masses as the “next great thing”. Well, someone, while walking from the couch to the fridge, manufactured this great concept called “web services” as a means to allow two different languages on two different machines/OS’s to “call” each other. While reaching for the brick of cheese in the fridge they came up with the idea to use HTTP as the transport protocol and XML as the data carrier. Walla! We now have web services. But wait, we need to give this a solid name that will cause IT managers to give us programmers something to research during our lunch hours. So on they way back to the couch, and three mouthfuls of cheese later they came up with the name Service Oriented Architecture. By the time it reached ears the could have named it more effectively SOA had been made into a formidable house-hold name by the forum junkies – so here we are with “SOA”.

Wow! A trip to the fridge can revolutionize the IT industry!

To summarize: If you have written RPGPGM1 that calls RPGPGM2 you have effectively written a Service Oriented Architecture. This latest round of hype is based on the fact that instead of relying on RPG prototypes for passing parameters (or *PLISTs) and OS/400 for making the communication from one program to the next we are using WSDL’s, XML, XSD’s, SOAP and HTTP to accomplish the same task – essentially recreating the program call interface with technologies that are 100% text based. I think a more appropriate name would have been WOA (Web Oriented Architecture) because that denotes more of what is actually occurring and what has changed from our legacy SOA. Not only does it describe it better, but it is much more fun to say in meetings: “Who wants to work on the WOoooaAA project? [all hands go up]” 😉

Just remember, you heard of WOA here first on! Comments anyone?

[tags]iSeries, SOA, Web Services, Service Oriented Architecture, XML[/tags]

7 Replies to “SOA? WOA!”

  1. Hi Sandy,

    Thanks for your comment. I guess I came out of the gates a little late on my redefinition of SOA (i.e. WOA) – I did some searches on google after reading your post. I had been working on a piece like this since my attendance at COMMON Mnpls (March 27th 2006).

    I by no means want to take away from anyone who has already declared their right to coining the term “WOA”, but I can assure you that I had no knowledge of anyone else coining the term before I posted this blog entry (assuming that is what you are getting at).

    Thanks again for your comments Sandy,
    Aaron Bartell

  2. I’m not sure the modularity is a sufficient condition for SOA or WOA. It is surely a necessary condition, but I believe there is more to the idea than just code re-use.

    It is an architecture that allows application re-use, so that you are using messaging to processes data consistently with one “service”. In the good old days you would have ported the program to another platform and processed the data there. SOA is a similar exercise to code re-use and modularity, but at the application level as apposed to the code level.

    The idea itself is not all that complex, but reworking your architecture to take advantage of the idea is.

  3. Thanks for your comments tiktaalink.

    Code = Business logic, plain and simple.

    Obviously one wouldn’t write a Java web service that’s sole purpose was to convert an integer to a string. No that would just be wrong because it doesn’t provide business benefit. (with that said I have seen programmers do this when new to web services) Now, if you had an RPG program on an iSeries that calculated an items price, that would be a great web service to create for other programs to consume.

    You took my statements about modularity and assumed I was talking specifically about method level invocation and that is simply not the case. But regardless thanks for the clarification as it will provide clarity to others that read this blog entry.

    Aaron Bartell

  4. >do u know how create a web service using rpg code?

    Yes. I am lead developer of RPG-XML Suite ( which is a toolset that allows RPG programmers to easily do web services from the iSeries – both offering them and calling them. There is zero Java and zero Websphere involved.

    Please post any follow-up questions to my email (aaron at vs. posting here.

    Aaron Bartell

Leave a Reply

Your email address will not be published.