Service Oriented Architecture : SOA 2.0 Introduction
Conceptualizing Service Oriented Architecture
Let us take a look at some of the key features of Service Oriented Architecture (SOA). The best way to go about doing this is to break SOA down in to its core verbal elements. We’ll start with the last letter first: A. We will first examine architecture in reference to SOA.
Usually, in the realm of software, architecture tends to define the overall intercommunication of different high-level components. To put it simply, this is how a solution is broken down into logical units – and how they will operate with one another. In a way, SOA is representative of an approach to architecture that focuses on how services are defined and how they interact with one another. SOA is not something you can just go out and buy. It is a set of architectural principles. While you might be able to directly purchase certain middleware that enables services and technologies, they alone do not constitute SOA.
Now it is time for us to move on to the SO part of SOA. Being service-oriented basically means that you are employing an architecture that consists of a variety of services. This might sound familiar to those who have had some experience in the past with Object Oriented Design. In fact, OOD and SOA have a lot in common.
By thinking in terms of services, you are effectively considering how to make your business function so that it stands on its own. This approach is enabled through the use of SOA. It takes into consideration the needs of both the providers and consumers of services.
The providers of services offer functionality in the form of interfaces to the service capabilities they are providing. The consumer then accesses those capabilities. Such consumers may be an application or even another service provider. So, for instance, a checking account service may offer a functionality set that relates to a particular checking account. Such an account may offer the possibility to make deposits, withdrawals, create new accounts, etc. These capabilities, you may notice, are very particular to the context of a checking account service. We have not yet stated whether such a service might be provided by an ATM machine, a bank teller, or software.
A lot of people tend to believe that this definition of SOA is merely the latest way to describe the functionality of applications. The fact is that a lot of applications in today’s day and age have already been built with an end user in mind. Thus, an application may encapsulate a group of several different tasks that are somehow related, yet also retain some degree of discretion.
SOA distinguishes itself in that the consumer of certain application functionalities may very well be another service or application. It is true that human users mostly prefer all functionality to be aggregated together and also accessible through a single user interface. But a lot of other applications do not come with this requirement. Thus, it is logical to have functionality organized around a set of services which may or may not be self contained, yet even in the event that they are, can be somehow woven together in order to create a higher level of services or functionality.
Once these principles of architecture have been applied, you will find yourself with a lot of services that are able to interact as a means of providing a specific functionality set with benefits for your business. This is when re-use comes in to the game. You are now able to quickly build up another solution that will reuse a lot of these services while also providing additional services that the business may require. Such services are woven in to a sort of ecosystem of software. In this scenario, they cooperate as a means of achieving some sort of business objective, while possibly participating in some other ecosystems that offer similar service capability for a possibly different end solution.
SOA Defined in the Here and Now
As of the year 2007, service oriented industry professionals view architecture as an underlying structure that supports communications among different services. In such a context, a service can be thought of as a unit of work that is performed on behalf of some form of computer entity, which might be a human user or another program. Service Oriented Architecture is now viewed as a method for two separate computer entities, such as programs, to interact in a way that enables one of those entities to perform a unit of work on behalf of the other entity it is connected to. Service interactions are viewed through the utilization of a description language. Every interaction is self contained and coupled loosely, enabling every interaction to be independent of any other interaction.
Simple Object Access Protocol, or SOAP based web services have evolved as the most common SOA implementation. There are, however, non-web service implementations that exist that provide similar benefits. Service Oriented Architecture’s protocol independence thus means that consumers can communicate with the service in a variety of ways. In an ideal set up, there should be a management layer that is situated between protocols and consumers as a method for ensuring total flexibility in terms of implementation protocols.
Whether you are aware of it or not, you have most likely come in to contact with Service Oriented Architecture – most likely when you made an online purchase.
One question that people commonly asked after being introduced to the wonders of Service Oriented Architecture is: why haven’t people been using this for the last twenty years? People tend to forget that one of the main things you will need in order to build a system out of parts is a standard method of representing software parts. If no such standard exists, then things can be incredibly difficult. Service Oriented Architecture is not exactly a new thing. Businesses have spent the last fifteen years trying to come up with a set standard. While CORBA and DCOM have been in existence for a while, they never became worldwide standards.
It is the Internet that has in many ways set up standards – namely HTTP and HTML – that link together people all over the globe. Businesses witnessing the growth and the development of the Internet decided to use similar strategies to link their own computer systems together. Such businesses first came up with Web services standards. Such services are based on technologies that originated on the Internet and make use of such technologies as XML and HTTP as a means for representing software parts and linking together a number of different computer systems.
In recent years, there has been an adoption of web services as the standards upon which to base Service Oriented Architecture. Software vendors such as webMethods have brought out on to the market a variety of products that have made Service Oriented Architecture quite useful.
Service Oriented Architecture, Web 2.0, and mash ups
Web 2.0 can be regarded as the second generation of websites. These are distinguished from the first generation by the fact that visitors are now able to contribute data for sharing and collaboration purposes. Web 2.0 applications utilize web services. These may include Ajax program interfaces, wikis, web syndication, or blogs. It should be noted that there are no set standards for Web 2.0. At the same time, Web 2.0 is characterized by the fact that it builds on existing web server architecture as well as the utilization of services. Thus, Web 2.0 does indeed display some characteristics of Service Oriented Architecture.
Mash ups are also regarded by a lot of people as Web 2.0 applications. The phrase “enterprise mash up” has been coined as a means to describe web applications that combine content from more than one source in to an integrated experience that shares a lot of the same characteristics of service oriented business applications. Service oriented business applications are applications that are made out of services in a declarative fashion.
SOA 2.0: Advanced SOA
There has been much negative press in recent years in regards to Oracle’s touting of SOA 2.0 as the next generation version of Service Oriented Architecture. Its combination of Event Driven Architecture with Service Oriented Architecture considers the first iteration of Service Oriented Architecture to be a mere client server drive. Despite the fact that it has been presented as a new term, a lot of critics claim that what this merger actually is an advanced Service Oriented Architecture, rather than a 2.0 version.
The truth is that a lot of pure play middleware vendors such as TIBCO and webMethods have had Service Oriented Architecture 2.0 attributes for many years now. Service Oriented Architecture 2.0 can thus be viewed as a marketing and product placement strategy rather than a novel approach to Service Oriented Architecture.
Other commentators in the industry have criticized the decision to attach a version number to an application architecture design approach. Still, others feel that the term “next generation” should be utilized to apply to the evolution of Service Oriented Architecture techniques from Information Technology optimization to the development of businesses.