What is Service Oriented Architecture (SOA)?
There is no single unique and easy way to define or explain SOA. Given a room full of C-level executives, IT Managers, IT-Architects, and developers with each asked to give a one sentence explanation of what SOA is, for sure, each answer will be different. What is the fundamental message behind SOA? What is it trying to achieve and what does it provides the adopter with? This will help the reader to be able to define or explain it correctly. Let's list some of most common facts he/she may have heard about SOA:
It's a style for building loosely coupled and distributed applications
It's all about service providers providing services to service consumers that conform to contracts
It provides a programming model based on standards defined by various standard bodies including OASIS, WS-*, and so on
Note
Service Oriented Architecture (SOA) is a set of architectural styles, patterns, principles, procedures, and criteria for building solutions and applications.
Such applications exhibit the following characteristics:
Loosely coupled from operating systems, programming languages, and protocols
Expose coarse grained Business Services that can be mapped to business capabilities
Business Services are Modular, Encapsulated, and Reusable
Can be Composed, Orchestrated, or Choreographed
Services expose standardized interfaces
Services are described though contracts and hence discoverable
Leverages a standards-compliant middleware
The process of adopting an SOA is a journey and possibly an ever-evolving, ever-learning, never ending one. With SOA, you progress and mature over time to reach a state where you can truly achieve the benefits, as promised.
Process, Business Services, and Components—the core constructs
Business Processes represent the flow of activities required to complete a business process, which, in turn, help achieve a business objective. They are orchestrations, choreography, or compositions of Business Services targeted to achieve business goals.
Business Service, to be more precise, represents a discrete business function that makes meaningful sense to an organization. A Business Service can be composed of one of the many fine-grained functions or atomic services, and by the true definition of SOA, encapsulation, it can dynamically behave depending on how it is invoked. Services form the building blocks of SOA and should be reusable, decoupled, exposed in a standardized fashion, and derived from disparate IT resources.
Components realize and provide services from one or more applications and these components are wrapped into the Business Services. Components help realize not only the functionality of the services they expose, but also ensure that their Quality of Service (QoS) is good, as guaranteed by the service provider. The following figure depicts how all of the above are interrelated and interconnected at a very high level.