So I have been remiss - very badly - I do have my excuses, but I wont bore you with those.

Anyway, back to the topic that I was going to follow-up on - SOA.

In my earlier post I said that SOA is about a vision for the (virtual) enterprise; a progressive effort to manage the complexity of enterprise application portfolios - let me clarify in some more detail.

We have been building applications more or less as silos over the last couple of decades; with the advent of the Internet we have had to address the connected nature of applications, but for the most part we have (tried to) retrofit applications to address their connectedness rather than fundamentally rethink the design of the applications themselves. The interest, hype etc. around EAI is essentially a manifestation of this.

We are more and more moving into a model where the notion of a standalone application disappears - to be replaced by the orchestration of one or more (business) capabilities to deliver the functionality to the consumer (either human or system).

What are these business capabilities? Now this is the million dollar question - this is at the heart of the new model. What are these business capabilities and how do we know that we have a good factoring of these business capabilities?

I suggest that the way to think about this is as follows - we are horizontalizing the application portfolio i.e. rather than the model where we have vertical silos that provide for HR, CRM etc we have a model where capabilities like Authentication, Authorization, Logging, Metering, Billing, and to make a little more interesting Customer, Invoice etc are developed as horizontal capabilities to meet the needs of the enterprise rather than to meet the needs of a single (silo-ed) application.

This horizontalization is at the core of SOA - and how we factor these capabilities (think of them as Business Services for now) is what I think about a lot these days. I will post my thoughts on how to approach this problem in subsequent posts.

When I depict this graphically I usually draw a bunch of vertical blocks to depict the silo-ed model, and then draw a bunch of horizontal blocks to depict the model that we are moving to.

Now does this mean that SOA is a top-down, big-bang, BUFD (big up-front design) approach? Absolutely not!

I think we all know what has happened and happens to top-down, big-bang, BUFD approaches.

In my experience over the past few years working with some of the leading edge enterprise customers around SOA, almost always the approach that works is what we in my team have been informally calling the 'Middle-out' approach.

More on that in a later post. This time I do promise to follow-up within a much more reasonable time.