For years, organizations have complained that their applications are too hard to integrate, too inflexible to keep up with the rate at which their businesses change, and too expensive to maintain and upgrade. This is because most applications were originally developed as monolithic entities using proprietary technologies and whatever design principles the individual developers chose at the time. The resulting applications are, in many ways, similar to homes built entirely from handmade components without consistent blueprints.
By contrast, SOA applications are built in a very different way. In an SOA, applications are assembled from modular services that are built using consistent design principles. Each service communicates with all other services via industry-standard protocols. This allows developers to quickly swap out one service for another to change the way that the application behaves. This makes SOA applications similar to modular homes in which all parts are standardized; it is one reason why such applications are also known as composite applications. Unlike monolithic applications, composite applications can be rapidly and easily customized. They can also integrate more easily with each other than traditional software.
There is another interesting parallel between SOAs and modular homes. Like such homes, SOAs can be assembled from components made by people who may never communicate directly with each other and who work for different organizations. Those who develop services need not know anything about the applications that will eventually use them. Their only concern is to create services that perform precisely defined functions in a predictable way, such as providing an up-to-date map when given a specific address.
At this moment, an entire industry is springing up to create libraries of industry-standard services that can be used to create SOA-based applications. As the SOA ecosystem evolves, software will practically take on a life of its own as applications constantly discover and make use of an ever-expanding body of services. This will enable software to evolve and improve over time without the need to install new releases. The resulting applications will be more integrated, flexible, and easier to use and maintain. They could also make companies more responsive to their customers and partners while reducing their IT costs.