versioning of services

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

versioning of services

Hubert, Eric
Hi all,

I'm in the process of evaluating WSO2 ESB (still version 1.5, I'm going
to switch to 1.6 tomorrow). Our main focus for an ESB is the central
configuration and administration of services, including versioning of
services.

So we need to find a way to run services in different versions in
parallel. The client shall get connected to the proper version of the
service (e.g. pre-production or production or some other version based
on a central configuration.
How would you tackle this problem with the help of WSO2? What solutions
do you see?

I configured a simple proxy service which evaluates a
version-information included in the SOAP-header via an XPATH-Expression
using a Switch Mediator for incoming messages. For each case I used a
send mediator which makes a lookup of a defined (version-dependent)
endpoint.
This works, but I'm not sure, whether there are more elegant solutions
to that problem.

After that I did some simple performance measurements (load tests using
soapUI) which I would like to share with you and discuss about it in a
separate posting.

Regards,
   Eric

--
Eric Hubert
Software Architect
Associate Director Research & Development

_______________________________________________
Esb-java-user mailing list
[hidden email]
http://wso2.org/cgi-bin/mailman/listinfo/esb-java-user
Reply | Threaded
Open this post in threaded view
|

Re: versioning of services

asankha
Hi Hubert
> So we need to find a way to run services in different versions in
> parallel. The client shall get connected to the proper version of the
> service (e.g. pre-production or production or some other version based
> on a central configuration.
> How would you tackle this problem with the help of WSO2? What solutions
> do you see?
>  
For example if you have a LoanService_v1 and a LoanService_v2 hosted
somewhere, and the ESB sits between these and the actual service
consumers / clients, you would define a Proxy service say LoanService
which would accept requests for both versions and route them as
necessary looking at the request version. This may be done by a switch
statement that looks at the namespace etc.

Another way would be to create a proxy service LoanProxy_v1 that routes
directly to LoanService_v1. Now after sometime, when you want to bring
in the v2 of the service, some of your clients may want to switch to the
new service since they want to use new operations etc.. but there may be
some that does not want to change or cannot change. If your IT admin
folks now want to retire v1 service and replace it with the v2 version
only, you can create a LoanProxy_v2 that routes to LoanService_v2
directly, and edit the LoanProxy_v1 to transform the request from the v1
schema to the v2 schema and then forward to the LoanService_v2 endpoint.
Once all clients migrate to v2, you can retire the v1 proxy.
> I configured a simple proxy service which evaluates a version-information included in the SOAP-header via an XPATH-Expression
> using a Switch Mediator for incoming messages. For each case I used a send mediator which makes a lookup of a defined (version-dependent) endpoint.
> This works, but I'm not sure, whether there are more elegant solutions to that problem.
>  
If you are using the first suggestion, you could also consider building
the destination EPR dynamically as required. I did this sometime back
for a customer as shown below:
    <syn:header name="To" expression="fn:concat('http://host/service_',
syn:get-property('version'))'"/>
    <syn:send/>
> After that I did some simple performance measurements (load tests using soapUI) which I would like to share with you and discuss about it in a separate posting.
>  
I am really keen to know more about this, and would suggest that you
tune your OS TCP stack and use HTTP 1.1 for best performance. You may
find the following articles interesting as well, and may want to look at
the benchmark.jar from the following links that handles HTTP 1.1 and SSL
correctly and has very good performance compared to ApacheBench for Web
services testing
http://wso2.org/library/1721
http://wso2.org/library/2259

asankha

_______________________________________________
Esb-java-user mailing list
[hidden email]
http://wso2.org/cgi-bin/mailman/listinfo/esb-java-user