September 3, 2009

Service Oriented Architecture - SOA

One of the great buzz words we all see is SOA. Every person I talk to, describes it differently. Everyone thinks of different pros and cons when ever they extol the virtues of SOA. Some people always talk in terms of Web Services and SOAP, other always refer to service buses and queues. How can we concisely describe "What is SOA?"
  1. The design and architecture of the system must include services. Doesn't matter if these are web services, services subscribed to a message bus, or something else. They just have to be services.
  2. The services should push your design to be more modular, flexible, and not tightly coupled. Otherwise you might just be missing the point.
  3. When possible services should be as generic as possible, so they can be leveraged as much as possible. Specialized services are a must, but they should only be used when necessary.
  4. Not everything should be a service. If you find yourself trying to force something into a service, your probably trying to hard. If it doesn't naturally fit as a service, don't push it
This is obviously not all inclusive or exhaustive, but just some very basic principles of things to look for. A few books that I would recommend for more in depth information are SOA: Concepts, Technology, and Design and SOA Design Patterns. Both are by Thomas Erl and are good studies of the basic concepts and ideas behind SOA.

No comments: