Posted by: Dilipkrishnan
SOA, Web services
Just as with any service in our day to day lives; e.g. auto repair etc.; services in software also come with contracts and service level agreements between every service provider and consumer. As services evolve and consumers uptake newer technologies and services, it becomes very important to “label”/”certify” every service contract/agreement because this is what enables a service provider to guarantee support for a “certified” service and a consumer to depend on a “certification” and hold the provider accountable for honoring the same. Versioning is a mechanism for “labeling” service contracts in a machine readable form.
Every service oriented application lives in a service ecosystem. The size of a service ecosystem could be from a single application to multiple applications that use services as a means to scale. At the other end of the spectrum it goes all the way upto a set of composable services in the cloud e.g. Amazon’s Mechanical Turk Service or Microsoft’s Biztalk Service. The greater the exposure of the service to consumers the more fragile it becomes in terms of changes in service interfaces. Small changes in “primitive” services have the potential to cause ripple effect of changes that affect dependent services and ultimately the consuming applications. One way to define primitive services is that they are the smallest unit of reuse in a service ecosystem. Breaking changes to these services need to be carefully planned to minimize these ripple effects. In the next couple of weeks we’ll look concrete examples on how to version and manage the evolution of services in an SOA ecosystem.
Next time : Service Versioning – Contracts