Untitled Document
Introduction
Walking through the IKEA store a few weeks back I noticed a poster highlighting
IKEA's green credentials and the trio: "Reduce, Reuse and Recycle."
I started thinking, as any SOA practitioner should, about the implications of
the green movement and its parallels in how we build SOA solutions. Some of
the reasons that we see customers adopt SOA include: interoperability, ease
of development and maintenance, visibility, and, of course, reuse. At the superficial
level, SOA is somewhat green because it encourages reuse of existing capabilities
as services. What about recycling? And what about reducing waste and inefficiencies?
Reducing the impact on the surrounding environment and systems?
A successful SOA project usually results in driving more traffic to backend
systems that will need to be scaled out, taking more hardware resources not
less. In some sense, a service consumer is naturally akin to a greedy consumer
that hogs resources of backend systems and drives traffic through them grinding
the CRM, finance applications, legacy systems and databases to the edge -- a
re-incarnation of the free-rider problem if you like.
So where does the wastefulness come from in SOA, and what can be done to manage
it?
As with the green movement in general, the solution boils down to being a responsible
consumer. We are all being taught to be more conscious about consumption every
day in the real world. In the case of SOA the things that are being consumed
are backend capabilities that provide services Just because you can call a service
a hundred times doesn't mean you should. Conversely just because a specific
service consumer calls your service a hundred times only for you to return the
same result, it doesn't mean that you should do the same amount of work for
each service call. What is beautiful about the solution that we talk about here
is that it results in reducing the operational risk associated with doing SOA
in addition to taking out the waste!
Reduce: Where do the inefficiencies come from?
If a service consumer is being wasteful, then the obvious question is where?
As you look into the way that applications are built in a SOA environment, you
start to see. We recently looked at a wireless telco's Web portal where customers
can view, print, pay and add additional service to their account. This system
is linked to billing, CRM, provisioning and legacy systems. Although the application
was built using SOA principles, what we noticed was that during the typical
customer interaction, the billing system in particular was called an average
of 3 times. This is a big deal.
1