Service-oriented architecture (SOA) has become the new de facto standard for designing and creating reusable business rules and logic that can be shared enterprise wide in a distributed (multiplatform) manner. Well-executed SOA implementations will bridge the wide gap between enterprise architecture and business strategy, as companies achieve a closer alignment of IT and the business and, in parallel, implement the robust reuse of existing technology and application code with unprecedented agility and cost effectiveness. However, the rapid adoption of distributed cross-platform Web services and SOA architecture fundamentals has resulted in a multitude of unmanageable complexities for IT managers and architects, many of whom are just now starting to take their first steps in untangling their SOA webs.
Without an adequate means of control, SOA can quickly lead to trouble. Because business logic is shared outside of traditional silos (organizational units, dedicated systems, etc.), the potential company-wide impact of any given piece of code (or service) becomes greatly increased. One change to a service may impact many business segments, thus, there is a pressing need to fully comprehend service interrelationships because they may (more often than not) solve multiple (though similar) business problems and contain complex domains of ownership.