Home > Ask the SOA Experts > SOA testing and QA Questions & Answers > SOA versioning best practices
Ask The SOA Expert: Questions & Answers
EMAIL THIS

SOA versioning best practices

Rami Jaamour EXPERT RESPONSE FROM: Rami Jaamour

Pose a Question
Other SOA Categories
Meet all SOA Experts
Become an Expert for this site


Digg This!    StumbleUpon Toolbar StumbleUpon    Bookmark with Delicious Del.icio.us   


>
QUESTION POSED ON: 16 April 2007
Can you recommend any versioning best practices for SOA/Web services?


Digg This!    StumbleUpon Toolbar StumbleUpon    Bookmark with Delicious Del.icio.us   



RELATED CONTENT
SOA testing and QA
Emulating systems
Building a testing system for SOA
The business side of SOA testing processes
QA tests for BPM
BPM testing
Regression testing explained
Business process testing and simulation for optimized BPM
Service emulation pitfalls
Unit testing for SOA best practices
No testing tool for a jPDL Process

SOA performance
In SOA, cloud resources may exacerbate security and file transfers issues
Compuware to acquire SaaS provider Gomez for $295 million
APM suite from Oracle updated with Composite Application Monitor and Modeler
MicroFocus releases Modernization Workbench 2.1
APM software traces transactions across tiers, technologies
CA/Wily forwards transaction monitoring across distributed systems
Progress Actional update eyes end-to-end business transactions
Progress/Actional SOA diagnostic tool builds on Mindreef purchase
New year – same old SOA tempests?
BPM modeling tools said to boost business analyst abilities

RELATED RESOURCES
2020software.com, trial software downloads for accounting software, ERP software, CRM software and business software systems
Search Bitpipe.com for the latest white papers and business webcasts
Whatis.com, the online computer dictionary


From a design perspective, there are a few ways to go about this depending on the extent to which you expect the service to change over the course of its lifecycle. First, you need to decide which level to apply the versioning. It could be done at the operation level, or it could be done deeper down at the schema type level.

On the extreme end, you could maintain a version attribute or namespace for every complex type within the service, which would provide the ultimate flexibility in versioning since you can modify any type independent of the rest. It allows you to do more frequent changes, and it keeps the changes contained in scope, so there is no need to introduce new namespaces or complete new operations. However, this would add complexity to the code right from the start, and the complexity grows as new type versions are introduced. As an alternative approach, you could version at the service level or the operation level, where you bind new versions of the operations to new or existing messages as needed. The complexity here is slightly reduced, but small changes at a low level creep up, requiring new versions of the entire operation or service.

Both of these approaches result in mixing the business logic with versioning logic, and that's not a good thing. I would not recommend either of them. The best approach is probably to introduce a new layer, or intermediary which delegates the messages that come from one version to the right instance of the service. Such an intermediary can apply descriptive approach to the versioning logic, such as using XSL to transform the messages from one version to another. The benefit of this approach is that it offloads versioning away from the business logic into a separate layer, and its complexity grows with the intensity of changes introduced between versions rather than having complexity from the start - possibly unnecessarily, and the implementation is fully contained within the separate intermediary, thus leaving the actual services alone.

Aside from the design approach, the ultimate and most important best practice to keep in mind is to create and maintain a regression test suite for each version. You never know if messages from one version or another continue to be processed correctly unless there is a regression baseline available. In fact, you should never move ahead with new versions before having such a regression suite. Regression test suites can serve as the functional contract for correctness of the service so you know you did not break anything when introducing the new version.




Search and Browse the Expert Answer Center
Search and browse more than 25,000 question and answer pairs from more than 250 TechTarget industry experts.
Browse our Expert Advice



SOA Governance White Papers - BPM, EDA, IT Governance
About Us  |  Contact Us  |  For Advertisers  |  For Business Partners  |  Site Index  |  RSS
SEARCH 
TechTarget provides technology professionals with the information they need to perform their jobs - from developing strategy, to making cost-effective purchase decisions and managing their organizations' technology projects - with its network of technology-specific websites, events and online magazines.

TechTarget Corporate Web Site  |  Media Kits  |  Site Map




All Rights Reserved, Copyright 2001 - 2009, TechTarget | Read our Privacy Policy
  TechTarget - The IT Media ROI Experts