November 8, 2007

SOA: Bring it on!

Filed under: tech — SiKing @ 12:21 pm

First few days at a new job and there is a dizzying amount of Web 3.0 buzzwords and technologies flying around. I first made a poor version of this post after only two days of fumbling around on Wikipedia. Well, two more days on Wikipedia and one internal training course later, and here is what I managed to piece together.

A big deal around here is something called SOA: Service-Oriented Architecture. You can follow the link for a very in depth discussion, but the KISS explanation (paraphrased from the Wikipedia entry) is that classic software development uses functions as the basic building blocks; next step up came with the invent of object-oriented programming, where the basic building blocks are classes; the next step up from that uses entire systems or services as the basic building blocks. In this last step, the creation of the application is no longer called programming but orchestration, as almost all underlying code is abstracted away. This is what SOA is. An every day example of a SOA application is a travel website which has to interact possibly with an airline ticketing system, a car rental system, a hotel reservation system, and probably a credit card payment system all behind the scenes and transparent to the user. Sometimes, the application is not even hosted by the client – the sales guys call this SaaS: Software as a Service.

Several more terms often come in at this point in the discussion: WS-*: Web Services (systems or services accessible over the Internet), XML: eXtensible Markup Language (hopefully needs little to no explanation), WSDL: Web Service Description Language (XML description of what a web service does), BPEL: Business Process Execution Language (this one I am still fuzzy on), and REST: REpresentational State Transfer (abstract model of how the WWW works). These and others make SOA possible.

Another popular acronym is ESB: Enterprise Service Bus. This is simply a messaging system, using any number of standardized protocols, which the individual systems utilize to talk to each other, hence the notion of a bus. It is important to note, that the individual systems do not need to be in anyway aware of each other, in fact, they are often developed without any consideration for an ESB or even each other. The ESB is normally created after all the systems have been deployed. The ESB handles all the communication overhead, which is often quite complex. In the travel website example above, it is quite possible that somebody will perform a search for an airline ticket, but will not reserve the ticket until significantly later (once they make up their mind, and once they pay for it using their credit card) if at all. The ESB would keep track of all the request / acknowledge messages and much much more; even things like system failure recovery. So I now work for an ESB Platform provider.

When developing on an ESB, or orchestrating, one often talks about assemblies (individual parts of the application connecting the different systems), messages (information that moves around through the assembly, normally just a file of some type), mediations (processing and transforming messages), transports (moving messages using various protocols), and routing (conditional branching of a transport). There is a built-in job scheduler for tasks, called Quartz, which looks like UNIX-cron, but it’s not! All the assemblies are Spring-based (a framework for building Java-based applications).

Me being a geek (and a tester), I need to know about the guts of the whole thing. The ESB must be platform independent. This is done through application servers (an engine that runs an application for a client) or containers as they are called around here. So I no longer test something running on Windows, Linux, Solaris, or ghod-knows-what, now it runs on JBoss, Tomcat, WebLogic, or WebSphere. Another important ingredient in this soup is Java; the important acronym is JDK: Java Development Kit. The ESB also needs to keep its mind somewhere: Oracle, SQL Server, MySQL, or HSQL. Finally, all the goodies are wrapped up in Eclipse.


Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Blog at

%d bloggers like this: