SOA Management
Is SOA Non-Trivial?
Exploring key service characteristics
Oct. 30, 2008 08:15 AM
Have you ever wondered what makes for good SOA style services? Well, wonder no more. Good services must be:
Reusable
Contract based
Composable
Abstract
Autonomous
Extensible
Discoverable
Stateless
Distributed
Manageable
You've most likely yawned over such lists before, and this exposition will probably be no different. However, in case you're wondering what I think about such things, read on. Be warned, there are no pictures...
Reusable
A service is said to be reusable if it can be used in more than one context, even in contexts for which it wasn't originally designed.
How do we achieve this noble goal?
1. Business Domain Modeling
If you understand your business domain, and model services according to that domain, your services stand a better chance of being reused than if they were built in isolation according to localized requirements. In other words, business process modeling, not individual project demands, should drive the requirements for services.
2. Adaptability
If your service can be easily extended, then it can be reused. Extensibility is about being able to change the service implementation or extending the interface without affecting existing customers. Extensibility is achieved through interface abstraction and well-defined versioning policies, but also surprisingly through aspects like testability and staff resourcing capability.
Testability is about verifying service backward compatibility using an automated regression test suite (that includes both functional and performance aspects of that service) that is key to service extensibility.
With respect to staff resourcing, delays in making required changes to services will hinder service reuse, so flexible resourcing capabilities are required.
3. Capacity Management
Eh? Yes, unless your service environment can support additional customers, that service cannot be said to be reusable. Capacity management is about sizing and providing service operating environments both for current and projected consumer volumes.
4. Visibility
If people don't know about services, then they won't be reused. A well-designed and publicized service registry will help potential customers to quickly identify services that meet their needs.
5. Governance
Even if you have done all of the above, people will find reasons not to reuse, e.g., if the service does not exactly match the customer's requirements or the customer is not prepared to wait for the service to be enhanced. To help with such cases, governance using both carrot and stick is required. Governance is first about defining the rules, then helping people to understand and follow the rules.
About Robert MorschelRobert Morschel is chief architect at Neptune Software Plc and has extensive experience in distributed software development for companies such as British Telecom, Nomura and Fidelity Investments. He blogs on SOA at soaprobe.blogspot.com.