This week, at the 2nd International SOA Symposium, seventeen SOA authors and technologists from companies including Oracle, Microsoft, IBM and Redhat, drafted and signed a Manifesto outlining the defining principles that constitute service-oriented architecture. The committee of industry leaders met at a previous conference in September and made plans for a second meeting this week in October after they were unable to reach a consensus on the document at the first meeting.
Steve Ross-Talbot, who was at the first meeting, blogged about the confusion about SOA that he had experienced: "in my world I often have to deal with people who equate WS-* to SOA and equate ESB to SOA. Which of course is not the case." SOA's manifesto now joins the already existing cloud and internet manifestos. You can see a video of the of the signing, which is reminiscent of a Congress bill signing.
Here is the SOA Manifesto in its entirety:
Service orientation is a paradigm that frames what you do.
Service-oriented architecture (SOA) is a type of architecture that results from applying service orientation.
We have been applying service orientation to help organizations consistently deliver sustainable business
value, with increased agility and cost effectiveness, in line with changing business needs.
Through our work we have come to prioritize:
Business value over technical strategy
Strategic goals over project-specific benefits
Intrinsic interoperability over custom integration
Shared services over specific-purpose implementations
Flexibility over optimization
Evolutionary refinement over pursuit of initial perfection
That is, while we value the items on the right, we value the items on the left more.
- Respect the social and power structure of the organization.
- Recognize that SOA ultimately demands change on many levels.
- The scope of SOA adoption can vary. Keep efforts manageable and within meaningful boundaries.
- Products and standards alone will neither give you SOA nor apply the service orientation paradigm for you.
- SOA can be realized through a variety of technologies and standards.
- Establish a uniform set of enterprise standards and policies based on industry, de facto, and community standards.
- Pursue uniformity on the outside while allowing diversity on the inside.
- Identify services through collaboration with business and technology stakeholders.
- Maximize service usage by considering the current and future scope of utilization.
- Verify that services satisfy business requirements and goals.
- Evolve services and their organization in response to real use.
- Separate the different aspects of a system that change at different rates.
- Reduce implicit dependencies and publish all external dependencies to increase robustness and reduce the impact of change.
- At every level of abstraction, organize each service around a cohesive and manageable unit of functionality.