Introduction
When working in a heterogeneous SOA environment there is usually a range of business components implemented using different technologies. The development tools will vary by technology, and by developer preference. Supporting a wide range of development tools will enable developer efficiency.
And there are development tools geared towards the different target platforms, like Oracle JDeveloper, Mule IDE, Netbeans, xml/wsdl generators etc., not to mention the .net side.
deployable unit
But when a deployable unit is prepared it is time to feed it into the release process. This is of course to keep manual intervention, and developer tools, away from the production environment.
Only deployable units that have been run through test, and QA, are processed through to staging and production.
release process
The release process requires a clear cut between development process and production environment. Did I mention ITIL?
And manual intervention should be limited, all the manual steps are error-prone. Putting effort into a standardized way of generating deployable units, and a well-defined process of certifying these deployable units is the way to go.
maven to produce deployable units
We have chosen maven to produce deployable units. Stay away from ant if you can. Still the developer can use the best available tool for efficiency on producing the deployable unit content, but final DU (deployable unit) is generated using maven. Maven is the obvious choice for this task. Wide range of plugins, and possibility to extend with self-made plugins. We had to create some maven plugins on esb and bpel-suitcase generation. This was to handle the different endpoints for different environments (DEV, INTTEST, SYSTEST, STAGING, PROD).
For coding components, like java ws, the different environments is handled by logic. So the component is self-responsible for resolving its environment, and corresponding properties.
The build time knowledge of environment properties is only relevant for configuration components, (esb/bpel).
script to support release process
To support the operational team on release process, a small set of scripts, adapted to the target enviroment is created. When Weblogic was target platform we used wlst, when Oracle SOA suite is target platform, we use the admin-client.jar library, combined with shell-scripts. All platforms will support command-line deployment!
It does take some preparation, but confidence on deployable units is mandatory in a SOA environment
Summary
Spend time establishing a release process within a SOA environment. Prepare to spend some time on establishing the final touch, suitable for your organizations needs, but remember that most is done in advance. You will find it in your target platforms libraries and documentation. Pull it out, twist it, and use it as you like.