Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
When designing software systems, teams often have a tendency to overemphasize service design and the aesthetics of the user experience (UX). Although designing the UX and services using SOA principles are incredibly important, neglecting to pay careful attention in designing the service implementation can result in software that is difficult to change. As I enjoy saying to tease my SOA friends, within each service awaits a rotting design.
Modularity shines in helping to design flexible service implementations. Figure 6.6 illustrates this concept.
Figure 6.6. Designing service implementations
When designing services, teams often pay careful attention to designing the service interface and devote time to understanding and adopting the appropriate interface style, such as REST, POX, SOAP, or messaging. A great benefit of SOA is that individual services can be autonomously reused and evolve independent of other services. Unfortunately, if careful attention isn’t given to how the service implementation is structured, the service loses its ability to evolve and survive.