We have multiple versions of our web services (both REST and SOAP) in production, and the number keeps getting bigger with every release.
Between versions, there can be minor changes (usually additions of new fields) to requests and responses.
If we were to retire old versions, how could we continue to service requests for old versions?
One aspect of a possible solution involves creating "virtual endpoints" to route requests for previous versions to the new versions of the same services. Thus, requests for /v1/customer/1 maps to /v2/customer/1. We are using Mashery through which this can easily be done.
We also want to apply transformation rules on requests and responses to generate XML and JSON responses that conform to the old contracts.
To summarize, we have a need for both routing and transformation rules to be applied to all incoming messages and responses. Is an ESB overkill for this? Our criteria don't quite fit the criteria outlined in http://blogs.mulesoft.org/to-esb-or-not-to-esb/. Is there a simpler solution to this problem? One that doesn't require modifying our code to implement versioning of requests and responses?