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?
If the tool fits…
If the ESB that you’re looking at it going to give satisfy your versioning and transformation needs, then go ahead and use it.
What you don’t want is “Oh, here’s our ESB listening to our one endpoint for our one web service”. That’s simply insane.
Seems to me an ESB may well fit your needs quite well. You don’t have to check off all of the boxes. In fact, the only box you need to check off is the “Is this tool worth the resources and time to learn, leverage, support and deploy in our environment vs working with something we’re more comfortable with” box.
Because one problem with software like ESBs is that they can come with a lot of stuff, and thus a lot of documentation that can be difficult for a novice in the platform to wade through and pick what it appropriate, and how to configure it.
I’d grab an ESB and do a pilot, and then do some performance tests. If you don’t burn a huge amount of time on the pilot, and it seems to work out, then roll with it.