Assume you need to define a completely new REST API for a given service. These rest APIs are distinguished by something like "v1" and "v2" in the path.
If you develop these services in Java, would you:
- Add the new access points to the given project and deploy a new version that supports both the v1 and the v2 paths?
- Remove all the v1 access points from the project, add the new v2 access points and deploy two different versions of your service simultaneously on your server?
Solution 1 has the disadvantage that it is difficult to update library versions because all changes need to be made for both APIs. Solution 2 has the disadvantage that you have two productive versions of the same service which might be confusing. Additionally, fixing bugs means fixing two programs.