A fundamental aspect of Service Oriented Architecture (SOA) is the notion of a service, and how the services are exposed and accessed at run time through an Enterprise Service Bus (ESB). But how do these services get conceived and exposed in the first place? How does one know if these are the right services to expose? And once one decides on the right set of services to expose, how should one manage a team to implement each service? I would suggest that the tools for designing a service oriented architecture, and collaborating during its implementation are as important as the integration middleware that the architecture will ultimately run on.
The bare minimum design and collaboration capabilities are service modeling (that provides the necessary input for an integration flow design), source control management and work item management:
Service Modeling: Fundamentally, a service is an abstraction of a repeatable business task. This means that a service, before it is implemented or deployed, needs to be described both in terms of the business function it performs, and the interface through which it can be invoked. The description of the business function will guide humans on the implementation and use of the service, but if formalized appropriately, the service interface can be made machine readable, and hence as a direct development accelerator or even generation of run time artifacts. For the service interface to provide the most added value, a good service modeling tool should be based on standards like SoaML and WSDL. Furthermore, development acceleration can be provided through automated generation of code templates, payload transformations, etc.
Source Control Management: Another essential capability needed in all software development environments, and not just for managing the design artifacts of SOA Integration is the use of a Software Configuration Management (SCM) server. All software development, and especially SOA Integration development is a collaborative activity involving multiple roles, i.e., service modeler, integration designer, integration tester and deployer (into the production runtime). An SCM maintains design artifacts from different life-cycle stages (e.g., service model in SoaML, WSDL, Integration flow, etc.) but also for different versions of these artifacts (e.g., test and production versions).
Work Item Management: As mentioned above, a service design is a collaborative activity involving multiple roles, i.e., a service modeler who identifies business functions to be exposed as a service (which may also involve collaboration with other business analysts for governance functions such as approval, quality control, reusability and duplicate check, etc.), an integration designer who takes inputs from a service model such as WSDL, generated code templates, and develops an integration flow for exposing an existing application or a newly developed code as a service, an integration tester and a deployer who deploys this new service into the production runtime. There may also be additional round-tripping across the roles as the requirements change and/or development problems are detected. A work item describes the task to be performed by a specific role, which may be created upon completion of another design task by another role. Typically, an SCM environment provides capabilities for managing development work items, i.e., description of development tasks to be performed by the right role. An integrated SCM & Collaboration support in a SOA environment would provide necessary capabilities for managing SOA design artifacts and development tasks.
An expert integrated SOA environment, leveraging the synergies of these essential capabilities, will greatly enhance an enterprise’s ability to initiate and scale an SOA initiative. This means that:
The capabilities truly are integrated
The provisioning, whether for a development environment or for a production environment, is as automated as possible so that cumbersome and error prone manual installation and configuration of the capabilities can be avoided.
We will refer to this codification of essential capabilities for automated installation and configuration of a SOA environment as the SOA Integration Pattern.
For more on IBM's view on SOA, please access www.ibm.com/soa