When we reach the point at which metadata drives the development and maintenance of services, evolving business requirements force us to break open and evolve our metadata first, and then to address the services dependent on that metadata. Most development methodologies and environments are not sufficiently equipped to deal with such metadata-driven change. This article recommends a shift in the way we manage evolution in metadata-driven applications.
A service-oriented architecture (SOA) is a metadata-driven architecture. Metadata is crucial to the development life cycle of Web services because the long term maintainability of the SOA is at risk when the business logic expressed in services is not visible to the IT department at a higher level than in the code itself. However, there are many different kinds of metadata, not all of which are visible in application development environments. Figure 1 illustrates the metadata that we care about in a SOA.
The top half of this diamond represents WSDL and "policy" metadata, which is what most developers think of when we talk about metadata in an SOA. This metadata is described in XML, hence the general understanding that services are XML based. WSDL and policy metadata are low in semantic business information and high in technical information - they provide or facilitate the plumbing that allows the services to function.