When you start with SOA you get some funding to buy the software, install it and develop your first services. The next services you develop will however be funded by projects. The requirements for that new service will be dictated by the project as it will be the first consumer of that service. To develop that service into a more reusable service will require more deisng and development time and therefore more funding. It’s a discussion you will always have with services that are project funded. Which is not always a bad thing, it keeps you honest.
The problem comes when you need to change some of the underlying infrastructure. There has been a new release of the SOA infrastructure you are using, it add some new features that will help operation maintaining the platform and it also has some performance benefits. But if you haven’t secured funding during the budget rounds at the end of the last year this isn’t going to happen. There is no project funded by end users that will pay for the upgrade and all the regression testing. The upgrade will only benefit the IT department and they will have to fund this. I’ve seen it happen more then once at several companies that they will just skip the upgrade this year. No one is getting into much trouble by missing an upgrade as it saves money to be spend on other new shiny things in the datacenter.
Then suddenly the SOA infrastructure vendor sends out an End Of Life notice for the software you are using. They are no longer going to support your version within 6 months. If you are lucky someone will read the notive, take it seriously and inform management. Then a lot of things will happen and the atmosfere won’t be all that friendly. How are we going to pay for this, it wasn’t budgetted, who forgot! We don’t have any people available for this as we have many projects lined up who have important deadlines. There are also technical issues, as you skipped releases upgrading might not be as straightforward as it could have been. You might even have to upgrade to an intermediate stage before you can get to the latest release.
As you haven’t done any upgrades up till now you don’t know how to do this, there are no run-books, best practices or even ready made regression tests. This means that you have to do this for the first time under a lot of stress in a short timeframe with limited resources. I don’t have to explain how that will effect the chance of something going wrong.
So if you are starting a SOA project make sure that you include life cycle management and include the costs in the yearly budget rounds. Upgrading should be made easy from the beginning, it should be in the DNA of your SOA infrastructure. Some vendors are better at this then others but it should be you who is safeguarding that the capability stays in your infrastructure. Just like regression testing should be a standard automated exercise. Don’t take services into production that come without a regression test or are hard to upgrade.