Summary of how to deliver an ESB into an Organization.
This is an excerpt from the Keystroke ESB Overview and Getting Started Guide…
Unless SOA,
ESB’s and CIM are viewed in light of Business Process Management, Customer
Relationship Management and other Business Oriented
Benefits.
i.e. How
they are to be used to implement/compliment BPM, CRM and add value to the
Business, we don’t know what problem we’re addressing, and hence whether we’ve
successfully done anything with the ESB and our SOA.
Until an
ESB built using SOA principles is used by specific Business Processes and
benefits relating to the Business Process are delivered, in areas such as say,
·
Business
Process implementation
·
Agile
Business Process Re-Engineering, change of rules etc.
·
Insight
via real-time Business Activity Monitoring historical data analysis to arrive at
meaningful information that can be used to improve Business Process
performance
·
Customer
Relationship Management
·
Improved
proactive and reactive responses to important Business
issues
then
whether the SOA and ESB implementation was at all successful cannot even be
seriously be contemplated. It just ends up being another part of the generally
dizzying array of IT legacy.
The CIM
argument is equally useless unless the CIM is understood by the Business users,
and used by many Business Processes in order to gain from re-use of the CIM
entities & schemas.
SOA should
therefore, not be judged by
·
whether a
particular web service or operation is re-used.
·
whether
the service is using UDDI or other mechanism to look up the service
endpoint.
·
how fast
it runs a data transformation, or by how it has some pretty drag and drop
functionality for doing data mappings.
·
how
quickly a client can point to an endpoint and invoke the
service.
Nor should
it be directly judged by compliance to specific standards or how it uses those
standards. Standards are a means to an end – they are not the end.
These are
technology specific measures. They do not have any direct Business meaning or
benefit.
Of course,
the more of the above technology specific measures that the SOA implementation
adheres to, the more amenable it is to re-use, robustness, productisation etc.,
so they are obviously all very important technical aspects of an SOA, ESB and
CIM implementation.
They do
not, however, directly make the SOA/ESB/CIM a success.
It’s
whether the Business Perspective’s measures have been met that determines
success, not the Technical Perspective’s measures.
At ground
zero, here are a number of reasons ESB’s go wrong:
·
Do NOT
pick a particular Product and bet your ESB on it
·
Do NOT
pick a Vendor and leave it to them
·
Do NOT
put a Centralized Physical Layer in the middle of Clients/Services (aka EAI) and
expect it to solve all your problems
·
Do NOT
confuse Logical Models with Physical ESB Models
·
Do NOT
deliver it as a single project
·
Do NOT
have a central group responsible for long term delivery, maintenance of the
deliverables (Software, Hardware, Network etc. of the ESB).
In essence,
there are only a handful of relatively simple things you should do, however,
they are instrumental to the success of an ESB initiative, and hence must be
done well:
·
Specify
what services/capabilities you want an ESB to have
o
Make up a
general list of capabilities that sound right
§
(see
OpenStandards
Presentation - BPM IMPLEMENTATIONS USING SOA, CIM's AND ESB's for
examples)
o
Use this
list as inspiration to try and identify the capabilities are especially
important, useful or “nice to have” in your organization
o
Have an
ongoing process – this needs to live as long as the ESB lives. The Organization
must never lose sight of this list of capabilities. It is the key driver of
everything an ESB means to your Organization. Forget about everything else that
you’ve ever heard or read about what an ESB is & what it should do etc. For
your Organization, this list is ALL that matters.
o
Classify
the items in terms of priority, and review them periodically as you deliver
them, and as the Organization’s requirements evolve over time. Review industry
best practices and add the applicable ones to the “one big day” list. This will
give you an idea of what you’ve got up your sleeve if something comes out of
left field. Move them up/down the priority stack as required. On the “Next To
Build” list, aim to have one or two capabilities at a time.
o
Only
build what you’re going to use. This ensures they are well tested. Ensure they
are VERY stable. If not stable, re-visit, re-build and proceed. Unlike any other
software in the Organization, the ESB implementation cannot afford to be loose.
It must be the leanest, most stable, most understood part of the Organization’s
Software assets. For this reason, try to keep it as simple as possible, with
each capability having REAL requirements and benefits.
·
Have a
Committee to manage the common capabilities list. Other features can be added by
minority groups and used within their realm (or Service Domain
etc.).
·
Have
implementations of the above capabilities in whatever platforms are strategic
for your Organization.
For example
o
.NET if
you’re a .NET shop
o
Java if
you’re a java shop
o
Both if
you’re a both a Java and .NET shop
Anything else viable on whatever platforms you
have
o
Mobile
o
Mainframe
o
…
·
Use the
Internet as inspiration. Leverage as much of Internet related concepts,
protocols, software etc. as possible. Don’t come up with your own implementation
until you’re sure there’s no equivalent of it in the internet space. This
approach helps guarantee your ESB will scale in many ways:
o
Multiple
stakeholder Buy-In
o
Development, Delivery, Operations &
Maintenance
o
Performance
o
Availability
o
Sustainability
o
Knowledgeable persons, useful & reusable
knowledge transfer, easily available (commodity) skill
sets
o
…
·
Treat the
ESB as a logical (and very rich & wide) Layer 8 to the ISO’s OSI Network
Model. Make it a layer by which any ESB competent node can deliver what
functionality is required by the IT department of an
Organization.
o
That’s
what the BUS in the Enterprise Service BUS is intended for. It’s a protocol
which when implemented, allows for any node to interoperate with other BUS aware
nodes. This may be in a centralized or hierarchical manner, or in a peer to peer
manner depending upon the capabilities required & mechanisms
chosen.
o
A common
mistake is to treat an ESB as a central point for applications to connect to.
That model quickly encounters scalability & logistics problems. Logically,
an ESB layer is one that sits between service providers and consumers.
Physically, it should be a layer that allows ESB aware applications to converse.
Unfortunately, the OSI model has not been extended to layer 8 as this area of IT
has been dominated by application frameworks and vendor technologies. The
industry has ripened and the time has come for Organizations to build their own
OSI layer 8. Over time, a standard set of OSI Layer 8 specifications and
implementations will prevail. The WS-* is a step in this direction, however it
is too all-encompassing (focusing more again on delivering existing application
level constructs into a Standards-Based set of technologies), and does not
deliver on simple, free & pluggable, transparent ESB qualities that
Businesses require. We still have disparate messaging, integration and data
transformation technologies – because vendors can still make money here. What
Businesses would like, however, is to be able to have all their systems have
basic capabilities to effectively communicate. Business (especially big
Organizations) would be happy to buy (usually at whatever premium) systems that
have a standard basic communication capability with other systems. i.e. ESB like
qualities baked into applications. Unfortunately, we are nowhere near that. One
of the purposes of ESB.NET deployments is to have it sit in front of specific
applications and provide this capability.
·
In each
platform, start with a framework that’s very flexible. Have people that are
passionate about each platform working on the ESB framework for that
platform.
·
Build a
platform that can be refined over time, is well understood and is easily changed
over time. Try to keep it as simple as possible.
·
Have a
low barrier to entry (within reason). This obviously ties in with the required
capabilities
·
To start
with, build a single capability in each platform at a time. Obviously, things
like connectivity are the most basic and important of all. To lower the barrier
to entry, pick standards based protocols as much as
possible.
·
Avoid
niche products, standards, protocols etc. as much as possible. Conversely, you
may have to taint some standards or protocols to make them easy or useful to
your requirements. Better that than to come up with something completely
new.
·
Base
everything on evolution. Revolution is not required. We’ve pretty much got most
of the technologies we need. We just need to apply them sensibly. Undoubtedly,
this will be the most difficult task.
·
Whenever
using a product, search for the capabilities in the above list. Ensure the
product is extensible enough to enable you to deliver on the above
capabilities.
o
Aim
high
o
Deliver
low
o
Deliver
wide
o
Get
everyone involved
§
All of IT
System Aspects
·
Business
Stakeholders (the Business needs to know what they’re spending their money on,
and what features & capabilities they’re investing in)
·
Service
Producers
·
Service
Consumers
·
Business
Applications/Systems representatives
o
Measure/Understand the benefits &
progress
o
Repeat
the above till you have the basics in place. The process should then take care
of itself.
·
Encourage
multiple implementations of the capabilities. Have a reference implementation
for one platform and a set of conformance tests that any ESB capability producer
should pass.
o
An ESB
Nirvana would be that ALL systems in your Organization can natively support your
ESB capabilities. To that end, aim for lightweight (or possibly even
embeddable), distributed & federation capable implementations so that they
can be deployed as close as possible to each system in the
organization.
·
Have
STRONG Governance of the ESB capabilities and teams claiming to be delivering
the ESB capabilities. Although measurable conformance tests need to be passed,
the principles behind the ESB should also be evaluated. Never let a single
application or group bully the ESB effort by pushing a particular technology or
product. Conversely, the Governance board should be open minded & platform
neutral.