Service-oriented architecture
In computing, the term Service-Oriented Architecture (SOA) expresses a software architectural concept that defines the use of services to support the requirements of software users. In a SOA environment, nodes on a network[1] make resources available to other participants in the network as independent services that the participants access in a standardized way. Most definitions of SOA identify the use of Web services (i.e. using SOAP or REST) in its implementation. However, one can implement SOA using any service-based technology.
Unlike traditional point-to-point architectures, SOAs comprise loosely coupled (joined), highly interoperable application services. Because these services interoperate over different development technologies (such as Java and .NET), the software components become very reusable i.e. the same C# (C Sharp) service may be used by a Java application and / or any other programming language which can access this service, due to the virtue of the interface definition being defined in a standards compliant manner (WSDL) which encapsulates / hides the vendor / language specific implementation from the calling client / service.
SOA provides a methodology and framework for documenting enterprise capabilities and can support integration and consolidation activities.
High-level languages such as BPEL or WS-Coordination take the service concept one step further by providing a method of defining and supporting workflows and business processes.
SOA definitions
Term | Definition / Comment |
---|---|
service | (Ideally) a self-contained, stateless business function which accepts one or more requests and returns one or more responses through a well-defined, standard interface. Services can also perform discrete units of work such as editing and processing a transaction. Services should not depend on the state of other functions or processes. The technology used to provide the service, such as a programming language, does not form part of this definition. |
orchestration | Sequencing services and providing additional logic to process data. Does not include data presentation. |
stateless | Not depending on any pre-existing condition. In a SOA, services should not depend on the condition of any other service. They receive all information needed to provide a response from the request. Given the statelessness of services, service consumers can sequence (orchestrate) them into numerous flows (sometimes referred to as pipelines) to perform application logic. |
provider | The function which performs a service in response to a request from a consumer. |
consumer | The function which consumes the result of a service supplied by a provider. |
discovery | Service oriented architecture relies on the ability to identify services and their capabilities. Therefore, a SOA depends on a directory which describes the services available in its domain. |
binding | The relationship between a service provider and consumer is dynamic; it is established at runtime by a binding mechanism. |
SOA design and development
The modeling and design methodology for SOA applications has become known by the terms service-oriented analysis and design and SODA. The SOA functions as much as a software development framework as it does as a delivery framework. In order for a SOA environment to operate successfully, software developers need to orient themselves to its mindset of creating common services which clients or middleware then orchestrate to implement processes. Development of systems using the SOA requires a commitment to this model in terms of planning, tools, and infrastructure.
When most people speak of a service-oriented architecture, they speak of a set of services residing on the Internet or an intranet using "Web services." A set of standards exists which generally feature in all discussions of Web services. These standards include the following:
Note, however, that a SOA does not necessarily need to use any or all of these standards to become "service-oriented."
In general, SOA is behind the scenes, not visible to the users. SOA is fronted by a client UI, and end users only see the Client UI. In other words, there is no SOA without clients using it. As such, SOA is an enabling technology, behind the scenes, waiting to be used.
Why SOA?
Enterprise architects believe that SOAs help businesses respond more quickly and cost-effectively to the changing market conditions they may face.
Products
SOA is not a product, although several vendors offer products which can form the basis of a SOA. Examples of such products include (alphabetical by vendor):
- Actional Corporation: SOA Management Software
- Apple Computer: WebObjects
- BEA Systems: WebLogic Platform & AquaLogic
- Cape Clear Software Cape Clear 6
- Cognos: Business Intelligence Platform
- Cordys: Business Collaboration Platform
- Eclipse: [2]
- Forum Systems: [3]
- General Dynamics: Openwings
- Gupta Technologies: SQLBase 9.0.1
- IBM: WebSphere Platform
- Infravio, Inc : [4]
- InterSystems, Inc : Ensemble [5]
- Microsoft: BizTalk and WCF
- Mule: Open Source Messaging Framework
- Neon Systems: The Mainframe Integration Experts
- Onyx Software: Onyx Web Services and the Onyx Process Manager
- Open Knowledge Initiative: Open Service Interface Definitions
- Oracle Corporation: Oracle Application Server
- Pegasystems: SmartBPM Suite
- Ruby on Rails: Get Real
- SAP: SAP NetWeaver
- Skyway Software: SOA Development & Deployment
- Software AG: XML Business Integration
- Sonic Software: Sonic ESB
- JBoss: JBoss JEMS
- Sun Microsystems: Java Enterprise System
- Sun Microsystems: Jini
- TIBCO Software: BusinessWorks & Service Deployment Platform (Project Matrix)
- webMethods: Fabric and ServiceNet
See also
- Enterprise service bus
- Enterprise application integration
- Service-oriented Development Of Applications (SODA)
Footnotes
- ^ An alternative view, particularly after initial deployments, is that SOAs properly ought not dictate physical implementation, so the formal definition should not include "network." High performance SOAs may not be viable deployed to distributed nodes on a network, and separate nodes for every (or most) services could be prohibitively expensive. See, for example, IBM System z9 for an alternative to distributed nodes.
External links
- Is SOA Right For You?
- John Reynolds' definition of SOA in two sentences
- Sun Javapedia wiki article on SOA
- IBM Article defining SOA and lessons learned from initial implementations
- http://www.service-architecture.com/web-services/articles/service-oriented_architecture_soa_definition.html
- http://bobbreedlove.com/tech/soa.html
- What is Service-Oriented Architecture?
- SOA Blueprints Specification
- Article describing the history of SOA, from an Openwings perspective
- SOA Zone - an industry leading blog
- RiA-SoA article
- PSGroup: SOA Cheat Sheet Paper