Recently, I've been thinking about the SOA lifecycle. What's interesting about it is that while most people acknowledge that SOA changes the traditional Software development Lifecycle (SDLC), we still have no clear definition of what the change actually is.
The most common attempt I see is to think of the SOA lifecycle as "design time, runtime, change time". But the problem is that even without SOA, everything IT builds still changes - so the notion of "change time" is really just part of the regular SDLC. This model doesn't tease out the changes caused by SOA infrastructure.
Here's my latest attempt at clearly articulating how the SOA lifecycle is different than the traditional SDLC.
In a traditional SDLC, you can broadly say there are two phases:
- Pre-production (design, development, QA, etc.)
- Production (deployment, operation, etc.)
In a SOA lifecycle, though, there's a new lifecycle phase which fits between these: I call it pre-consumption.
What is pre-consumption? It's a hybrid of pre-production and production - part of what's being built is in production (some of the services) and part is in pre-production (some of the consumers):
- To service providers pre-consumption looks like part of their production phase since their services are complete and operating in production.
- To service consumers pre-consumption looks like part of their pre-production phase since their consumer application is still being built.
For a good real-world example of pre-consumption in action look at salesforce.com. Their services are clearly in production. But, their customers are building applications that are definitely not in production.
No wonder we have such hard time defining the SOA lifecycle - to any one individual it looks just like their regular lifecycle. But, when you look at it overall for any given application, you realize that different people are in opposite ends of the lifecycle at the same time. This is the nature of pre-consumption.