I recently heard a presentation from David Chappell talking about how SOA is failing in many organizations.
Below is not a summary of what he talked about but my own new thoughts on a subject I am still learning much about while listening to his presentation.....
I have to give it to David Chappell. He has a way of bringing together concepts in a very simple and engaging way.
At a recent architecture conference
( video http://channel9.msdn.com/posts/matthijs/David-Chappell-The-Microsoft-Application-Platform-A-perspective/ )
( slides http://www.davidchappell.com/themsapplicationplatform--aperspective--chappell.pdf )
he contrasts long term planning vs. business strategy and how business strategy is a way of obtaining competitive differentiation through business innovation. Business innovation being the aggregation or refactoring of a discreet set of existing organizational and 3rd party business capabilities to create a new value chain that brings something unique and desired in the market.
Or brings it in a unique and cost effective way.
He then makes a link between business strategy and application platforms and how most business strategy ( and business capabilities ) are supported by software. Custom software that runs on these platforms.
Since these business strategies are supported by software, the software platform you choose will be a very important factor for how well your business strategies succeed and how cheaply ( in time, money and resources ) they fail ( if you can even try them at all ).
The custom software we build that drives innovative business strategies face the challenges of:
Time to market, capital and operational costs, the ability for those costs to be flexible in the face of rise and fall of demand for your innovation and how quickly you find out your idea will "fail or scale".
In explaining these concepts Chappell strongly positions Microsoft's integrated software + services platform offering against competitors platforms from Google, Amazon, Oracle, and IBM.
He then makes a slight detour into the land of why SOA is Dead.
We know that SOA = building services to front your organizations software assets. The purpose of this is to have at your disposal a unified development platform for your business to build new applications to quickly build answers to changing market conditions. This is the famous "business agility" promised by SOA.
Mr. Chappell seems to imply that this is in the domain of long term planning and not business strategy.
It is a business strategy for Microsoft or Amazon to standardize everything and essentially become a platform that others can use. In Microsoft's case they are in the business of creating platforms. In Amazons they had the specific need to get more out of all the idle CPU power in their data centers.
Creating a SOA or business platform is not your business strategy.
You are probably not in the business of creating business platforms specific to your business ( unless you are ).
You probably ARE in the business of bringing a chain of discreet business capabilities to the market to be consumed. Some of these capabilities will be an amalgamation of other discreet capabilities internally and through your partners in a value chain. And yes all these capabilities would indeed benefit from having standardized web service interfaces and SOI in between.
The problem is that SOA tries to do all this for you ( and then some ) ahead of time.
One of the many problems with this approach is that every service has a cost to building and maintaining it. There is no incentive for the owners/builders of this service to care and feed it unless they, as a business unit, are getting paid for the cost of running it. or put another way... unless they are explicitly part of a value chain.
What incentive do they have of taking on more "customers"?
And how can you efficiently determine the shape and scope of the service(s) that a particular software asset should expose?
Chappell points out that ISV's can do this with their software because they deal with many different client scenarios and have explicit feedback from those experience on how to best shape and scope the interfaces.
Now, not only are you NOT getting paid from your "customers" but you dont know who your customers are and what they will need.
You are essentially just providing services for "the good of the company".
Chappell told a funny story about how, during the three years he spent explaining SOA to companies, one audience member got up and said "That's socialism!!!"
He says SOA is not architecture it's altruism.
Service Oriented Altruism?
I say what about BOA, Business Oriented Architecture?... ( chuckle )
Business Oriented Architecture.... where an application platform and architectural paradigm are chosen on demand at the moment when the evolution of the platforms, the architectural paradigms
and the business drivers align to allow for business strategy innovation?
You might have a great business idea, but the software that drives it costs too much or the capabilities don't exist yet.
You might have a wonderful platform and great and powerful potentially reusable software assets but no business idea.
You might have all that in 19xx but Object Oriented doesn't exist yet.
Business Strategy driven by software seems to the cross connect of these three things.
The planets aligning so to speak.
Currently the state of the art of our platforms more or less allow us to expose functionality from our software assets as standardized webservice interfaces that we can chain together where that chain can flexibly live and breath across organizational walls and I.T. walls ( firewalls, security domains, heterogeneous Server and Client OSs etc..).
The driving forces behind the creation of these platforms are lowering costs but what allows them to happen are Standardization ( WS*, HL7, REST.. etc.. ) and Utility computing.
At the end of Chappells session he contrasts how the Microsoft platform compares with its on-premises and cloud competitors.
Below are a visual representation from his slides ( http://www.davidchappell.com/themsapplicationplatform--aperspective--chappell.pdf ) of Microsoft's Business Oriented Architecture platform or Software + Services vs. competitors on-premises + cloud stacks.
( J2EE not here but mentioned as "fragmented" ).
[long sentence coming]
Microsoft's Azure Services Platform + current offerings is an integrated stack providing the application foundation, infrastructure and application services across cloud and onpremises scenarios with development tools that reuse existing developer skillsets to execute on demand business strategy initiatives based on the principles of Business Oriented Architecture.