SOA is an IT architectural style that supports the transformation of your business into a set of linked services or repeatable business tasks that can be accessed over a network when they are needed. This network might be a local network, it might be the internet, or it might be geographically and technologically diverse, combining services in New York, London, and Hong Kong S.A.R. of the PRC as though they were all installed on your local desktop. These services can coalesce to accomplish a specific business task, enabling your business to quickly adapt to changing conditions and requirements.
When SOA implementation is guided by strategic business goals, you ensure the positive transformation of your business and can realize the chief benefits of an SOA:
The most common way to transform your business into linked services is by the use of web services. Web services allow applications to communicate with each other in a platform and programming language independent manner. A group of web services interacting together in this manner defines a particular web service application in a SOA.
The software industry is finally coming to terms with the fact that integrating software applications across multiple operating systems, programming languages, and hardware platforms is not something that can be solved by any one particular proprietary environment.
Traditionally, the problem has been one of tight-coupling, where one application that calls a remote network is tied strongly to it by the function call it makes and the parameters it requests. In most systems before web services, this is a fixed interface with little flexibility or adaptability to changing environments or needs.
Furthermore, web services can function on a more abstract level that can reevaluate, modify, or handle data types dynamically on demand. On a technical level, web services can handle data much easier and allow software to communicate more freely.
On a higher conceptual level, you can look at web services as units of work, each handling a specific functional task. One step above this, the tasks can be combined into business-oriented tasks to handle particular business operational tasks, and this in turn allows non-technical people to think of applications that can handle business issues together in a workflow of web services components. Thus, after the web services are designed and built by technical people, business process architects can aggregate them into solving business-level problems. To borrow a car engine analogy, a business process architect can think of putting together a whole car engine with the car frame, body, transmission, and other systems, rather than look at the many pieces within each engine. Furthermore, the dynamic platform means that the engine can work together with the transmission or parts from other car manufacturers.
What rises from this last aspect is that web services are helping to bridge the gap between business people and technologists in an organization. Web services make it easier for business people to understand technical operations. Business people can describe events and activities and technologists can associate them with appropriate services.
With universally defined interfaces and well-designed tasks, it also becomes easier to reuse these tasks and the applications that they represent. Reusability of application software means a better return on investment on software because it can produce more from the same resources. It allows business people to consider using an existing application in a new way or offering it to a partner in a new way, thus potentially increasing the business transactions between partners.
Therefore, the primary issues that web services try to tackle are the issues of data and application integration, and that of transforming technical functions into business-oriented computing tasks. These two facets allow businesses to communicate on a process or application level with their partners, while leaving dynamic room to adapt to new situations or work with different partners on demand.
Services are all about efficiency in creation, reuse for execution, and flexibility for change.
Web services can be implemented by using SOAP or REST. The following sections describe each concept.