Chapter 12. Versioning
WHEN YOU ESTABLISH SOA, YOU CAN’T EXPECT TO BE ABLE TO DO AND ANTICIPATE EVERYTHING AT once. Large distributed systems are never static. Requirements evolve, and new ones appear. Also, as you develop and implement services you constantly learn and improve, and you may want to apply your new knowledge to existing services. Therefore, you need the ability to update and grow.
As discussed in the previous chapter, SOA is a concept that has to deal with existing running solutions and services as well as new requirements that lead to the development of new solutions and services. Therefore, you need a mixture of maintenance and innovation.
This chapter will discuss how to deal with changes to services.
There are two common reasons why services (and interfaces in general) have to be modified:
When implementing new business processes you usually become aware of aspects you didn’t know about or consider at design time, resulting in services (implementations as well as interfaces) needing to be modified.
New or modified requirements may necessitate modifications of existing services.
Some people argue that with good design, the first case should not happen. One of my customers even deliberately introduced a process that made it difficult to make modifications once a service interface was specified, in an effort to force stability in the designs.
However, in practice, interfaces are no more stable than any other code. One reason is that people make ...