At IONA's Sales Kick-off event in January this year I heard a phrase
that I instantly liked. The phrase aligns exactly to what I think about
SOA Adoption: Think Big, Start Slow and Scale Fast. No doubt
this is probably not an original catchy phrase - even in the world of
middleware. But it makes a lot of sense, especially post-Internet
Bubble era.
It is amazing though how many organizations get caught either in the trap of analysis paralysis - where they can't start a project "as big as SOA", or in the big bang
trap - where they feel that to adopt to an initiative like SOA they
must do everything from the start and have all the pieces in place. In
the former they never get started; and in the latter they either never
get finished, or they finish in failure (the dreaded but all too common
cancelled project).
SOA is a big investment that will take large organizations years to
fully implement. Service enablement, registries, policies, high
availability, security, transactions, etc. are all important
architectural components for building large scale SOA implementations.
However SOA adoption doesn't necessarily require large up-front costs.
Implementing SOA can be, and in most cases should be,
incremental. Too often we get into a bureacratic, "big government",
approach to rolling out this type of initiative. And we all know how
well most governments both budget and spend resources!
So let's look at this catch phrase a little closer.
- Think Big -
This is about the fact that organizations should have big dreams about
how SOA can be leveraged in their organizations. There is little point
in having small aspirations for deploying SOA. So even though I caution
on the approach to adopting SOA, I am not trying to discourage having
big ambitions for SOA. On the contrary, Think Big!
- Start Small - In my Java != SOA
(abbrev.) post I talked about some lessons learned developing
successful service oriented applications using CORBA. In it I said:
... not all SOA implementations need all the details
that we "experts" debate about in forums, on blogs and in standards
bodies. These standards need to be discussed, defined and ratified for
maybe the top 5% (if even that) of organizations that need them all.
But there are lots of organizations that need only the basics to
implement SOA. If their needs grow then the standards will be there for
them but they don't need it all immediately. I think the comprehensive
nature of the standards causes paralysis for those implementing SOA. We
all need to tell the market to START SMALL!!! (even if you're big).
Obvioulsy for mature IT organizations with well defined processes and a
history of successful deployment, and with lots of well managed
resources, one can start perhaps bigger. Start small is relative. The
point here is that if SOA is so completely new to your organization,
don't assume that you should or can deploy an entire conversion of all
your applicaitons and business processes to a SOA. Also don't assume
that you require entire SOA governance infrastructure from the start.
Identify what is required to make your 'Start Small Initiative'
successful while keeping in mind that it may be required to scale fast
as it's success grows. E.g. you may not need a full blown service registry, such as UDDI, for your first initiaitive,
but some thought as to how you will get there as your services grow is
required. Don't waste time and resources on a registry until you have
enough services to justify the investment.
- Scale Fast - If the right amount of thought has gone
into the Think Big process, which is always ongoing, then scaling your
SOA will come much easier. Education on the enterprise qualities of
service, SOA governance, and understanding how important scalable
service enablement is, will help you make the right decisions that will
allow you to scale later (or sooner). Remember that not all service enablement is equal.
A simple Web services approach with SOAP/HTTP might seem fine today but
it might not meet the performance and throughput requirements of
tomorrow. Using a EAI type hub might have made sense with a handful of
services and thousands of transactions a day, but with hundreds of
services and millions of transations it just won't scale. For me, I see
so much effort put into how we're going to manage and monitor our SOA -
this is without doubt VERY important, but less thought into the
enablement technology itself. But, as I learned from talking to many
people over the years, if you can't get services enabled due to legacy
technology or if the enablement technology is weak, then when success
comes your services aren't ready for prime time. All the monitoring
tools in the world will mainly just tell you "your deployment is
stressed and unhealthy" and there will be little you can do, fast, to
change that. And chances are it's going to cost you lots of money.
Which is why the Think Big process is so important.
So how to proceed assuming that the current hype around SOA is real
- that there are large cost savings to be made and time to market
opportunities to be gained: Organizations should analyze some of the
key business drivers for their companies and then examine where value
can be achieved through SOA with an incremental approach. Look not just
for "low hanging fruit" but also for high yield, high value fruit.
At IONA we've recognized that some
of our most successful SOA deployments are ones that addressed high
value/yield opportunities as a way of getting started. Opportunities
that made significant cost savings and/or significant time-to-market
gains. Hitting a home run early helps generate momentum for the next
SOA rollout initiaitive. It feeds the Think Big, Start Small, Scale
Fast engine.