SOA Getting It Right
SOA Getting It Right
Contributors:
AmberPoint
BearingPoint
Composite Software
MomentumSI
Progress Software
Editor:
Jim Green
Service
Oriented
Architecture
GETTING IT RIGHT
Contributing Authors:
David Besemer
Paul Butterworth
Luc Clément
Jim Green
Hemant Ramachandra
Jeff Schneider
Hub Vandervoort
Editor:
Jim Green
An Implementor’s Guide to Service Oriented Architecture
Getting It Right
www.SOAguidebook.com
ISBN-13: 978-0-9799304-0-9
ISBN-10: 0-9799304-0-5
First Edition
Printed April 2008
TABLE OF CONTENTS
4.4 Applications Of An ESB............................................................ 48
4.5 Mediation and ESBs................................................................. 53
4.6 Conclusion............................................................................... 59
TABLE OF CONTENTS
Chapter 8: Pulling It Together..................................... 95
8.1 Where To Start......................................................................... 95
8.2 Scope Of Implementation....................................................... 95
8.3 How To Measure Success......................................................... 96
8.4 Summary Of Recommendations.............................................. 96
TABLE OF CONTENTS
Chapter 1:
CHAPTER 1
The title of this book includes the word ’implementors’. That single word
describes the focus of our work here. This book is a treatment of the
practical issues an implementor would face when implementing a SOA. There Key RECOMMENDATIONS:
are other very fine books on standards and basic education about SOA and
web services. In fact, if you are not familiar with the web service standards, • Don’t let anyone overwhelm
you might find some of this other material very useful as preparatory reading you by trying to teach you
prior to digging into the implementation issues described herein. everything at once.
It has frequently been observed that you can have an understanding of the • Do as much as you can
philosophy of a SOA and the specifics of web service standards and still not digest, learn from it, and
know how to implement a SOA system that will provide lasting value to your then add to it.
enterprise. This book is an expedition through the considerations above the
standards that come from practical experience in implementing a SOA. It is • Regardless of the distance
a practical book for the practitioner. The goal is to make the implementation you travel, have confidence
of a SOA simpler and to encourage more people to deploy their own SOA. that you are on the right
After all, today a SOA is considered the best way to create an integrated path.
system that implements a consistent architecture on a large scale, providing
flexibility and agility across applications and data for long lasting value. • SOA is the only good
alternative for building large
As with other complex topics, those who have the right background, scale systems.
work on the issues daily, and study the topic in depth, will achieve an
understanding more comprehensive than others. There are a handful of
true experts in the industry that have achieved insights over time from their
singular focus on the topics at hand. A main purpose of this book is to
capture hard gained knowledge and make it available to a wide audience.
Leveraging this expertise, in a way that we can all benefit from, has from
the beginning been the primary goal of our endeavors. Hopefully we have
achieved our goal.
Since the SOA agenda covers a variety of different topics, no single person
is authoritative across this wide spectrum. The approach, therefore, was
GETTING IT RIGHT
1
to maximize the contributions of the book by leveraging the experience of
different experts in each specific topic. Also, we went beyond those who
create the basic standards and assembled a group of writers who understand
the standards, the theory behind the leading technologies and products, and
the issues with implementations. As a result, the book is stronger than if any
one person were to author it.
Given the importance of the writers and their busy schedules, we did not
attempt a group writing effort. Instead, we put together a ’compendium’
of information, with each chapter standing alone. As such, there are minor
differences of opinion that can be found in the book. Hopefully, this makes
the book richer, and doesn’t introduce confusion. You will find that in many
areas there is no absolute answer to the questions. The different perspectives
and focuses contained within are very much in alignment, but on some
topics we felt that the reader is better served by exposure to differing points
of view. In the final analysis, the more complex the issue, the more the reader
will have to interpret and adapt the input here to their specific situation.
There is no such thing as an ’SOA cookbook‘.
Each chapter deals with a major topic that is important to your SOA
implementation. Some effort has been expended to introduce topics in the
general order that you need to understand them. However, each chapter is
independent, so you can use the book as a general reference, and read each
chapter as your interest turns to that topic. Therefore, the book is not a novel
with a continuous story line that runs between the chapters. It is more of a
reference guide. The many recommendations in the book are put forward for
your consideration.
The contents of this book are the result of years of experience by experts.
To achieve the goal of being succinct, much of the background has been
omitted. As you gain your own experience with SOAs you will better
understand the recommendations herein. It is hoped that this book can be a
frequent reference, as well as an initial tutorial.
2 Chapter 1:
1.4 A Few Comments On SOAs
As with all systems that are partitioned with strongly defined interfaces, SOA
doesn’t necessarily create the highest performing system. Just as assembly
code can produce a faster application than a higher level language (at the
cost of higher maintenance), breaking the principles of a SOA can increase
performance. With the ever increasing performance of processors and
networks, a SOA approach assumes that the business benefits of lower
maintenance and increased flexibility are more than offset any inefficiencies
by the use of standards, components, and modularity. This, however, may
not be universally true. Web services standards may not be the correct
approach for all situations, including very high performant applications. (This
is the first example of practical advice in this book.)
It is important to realize that web services standards (like SOAP, WSDL, HTTP,
XML, UDDI, etc.) are specific and rigorously documented. SOA, on the other
hand, is a methodology. Use of the standards while not adhering to the
principles of the SOA ’philosophy’ yields very little. Much of this issue is dealt
with in the design of the individual service interfaces.
GETTING IT RIGHT
3
As indicated above, there are a number of implementation issues ‘above’ the
standards. In this chapter, several of these are discussed, including topics like
designing for reuse and error handling. You may or may not elect to follow
the recommendations, but the issues discussed are important and should
receive careful attention.
The capabilities listed above are indeed impressive. However, the addition
of an ESB also adds complexity, and numerous implementation trade-offs
will be required. In addition, there are different ’types’ of ESBs, and it is
important to understand as much as possible prior to product selection and
implementation.
If you are responsible for establishing the infrastructure for your SOA that
will support all of the services this chapter is a must read.
4 Chapter 1:
Chapter 5: Runtime Management
Even with the right organization (Chapter 6), who are well trained (Chapter
7), well designed services (Chapter 2), the right infrastructure (Chapter 4),
the right development practices and system of record (Chapter 3), things
can/will still go wrong. In fact, if you do things well, you will create a system
that is too sophisticated for you to easily observe it. To achieve the desired
business objectives, the system must be appropriately monitored and
governed at runtime.
This aspect of a SOA is fascinating in that the better things work, the
less you see. After achieving success with automation and transparency,
you then need to institute observe-ability to provide the proper runtime
governance, trouble-shooting, and control. Issues include practical topics
such as understanding what the current topology is and what is happening,
assessing the current health of the overall system, and ensuring the
continuing integrity of the system as it evolves—in other words, keeping it
running and under control.
If you are responsible for the overall SOA system design, you must
incorporate management into your plans. If you are responsible for the
operation of the SOA system this is your most important chapter.
If you’re an organization manager and only read one chapter, this is the one.
It is critical to understand that you should not view SOA as the objective. The
objective is to build a system that supports your organizational goals. SOA
is only an ‘approach’ to putting that system in place. From this perspective,
it is clear that the system should be put together by those who know your
business best. It will be easier to train your own staff (who know your
business) on SOAs than to train outside SOA experts on your business.
GETTING IT RIGHT
5
If you are charged with the creation of the SOA implementation team this
chapter is required reading for you.
A book such as this needs to be tightly focused and not too long. As such,
there are topics that are beyond the reach of our efforts here. We have
oriented our writing toward those that are starting their SOA efforts to help
them overcome the initial learning curve. There is not enough space to deal
with several of the advanced topics. If you move beyond the level of this
book and become frustrated by its incompleteness, while frustrating to you,
it would signify success of a sort for the authors. Should you find yourself in
such a state, you now know where to find us to get more help.
As you build your SOA system, it will enable and support a wide variety
of uses and application types. As tempting as it is, we have avoided
expanding into the ‘application arena’. You may, for example, be interested
in providing readable information to users through portals, collating and
calculating information in a business intelligence (BI) report, propagating and
synchronizing information between systems through application integration
(EAI), or automating a set of business tasks through business process
management (BPM). All of these areas (and others) will find your SOA
infrastructure enormously enabling. Unfortunately, dealing with these topics
alone would constitute a complete book in its own right. We have therefore
had to set aside these topics for another time and place.
Despite its limitations, this book not only provides a significant amount of
factual information, but conveys principals and methodology. If you maintain
the discipline described herein, you can go far beyond what we have written
and create your own chapters as extensions to ours.
6 Chapter 1:
1.7 Conclusion
No one thinks it all through at once. No one puts all of the pieces in place
perfectly. But once on the right path, it is more straightforward than it
first seems, and additional pieces fall into place logically. Don’t let anyone
overwhelm you by trying to teach you everything at once. Do as much as
you can digest, learn from it, and then add to it. Regardless of the distance
you travel, you will have accomplished a lot. Mostly though, you will have
instantiated a system that others can extend. The days of calcified IT systems
are numbered.
Whether you are planning a major overhaul of your large scale IT system, or
you want to create a few services using the new standards, a couple of hours
of study and preparation may help avoid common pitfalls and propel you
toward success. If so, then our efforts here will be rewarded.
GETTING IT RIGHT
7
8 Chapter 2:
CHAPTER 2
DESIGNING SERVICES
9
Unfortunately standards alone are not enough to ensure service
Individual Service Operation interoperability. Additional guidelines have been created by an organization
An individual service operation is called the Web Services Interoperability Organization (WS-I). WS-I’s Basic
invoked using a SOAP call, which Profile defines best practices within the Web service standards and promotes
encapsulates the service request the highest possibility for reuse and platform independence. Organizations
message (and subsequently, a response
message) for transport over the network can benefit greatly from following recommendations of the WS-I Basic Profile
– you can think of it as the envelope for their service development and deployment.
that contains a letter. The SOAP call can
be transported between consumer and
provider over a variety of mechanisms
Services generally either provide data to the consumer, or they create or
such as HTTP, SMTP, or a message bus. modify data in an underlying system. The former are called data services,
Because of the wide availability of HTTP and the later are called transaction services. An example of a data service
infrastructures within enterprises, most might be retrieveOrdersForCustomer, which might take a customer
web service calls today are transported
via HTTP. Recently, however, the use number as an input parameter. An example of a transaction service might
of message buses (ESBs) has been be updateOrderShippingStatus, which might take an order number and
increasing for transporting web service the updated shipping status as input parameters. These services present
calls.
separate challenges to the service provider and they are generally created
and deployed using different infrastructures. Data services are created and
deployed in an information server, while transaction services are created and
Service Request and Messages
deployed in an application server. These different types of services and their
The service request and response
messages themselves are written in
associated infrastructures are described in detail later in this chapter.
XML. The SOAP standard defines two
possible XML message formats, RPC Getting started with service development and deployment in your enterprise
and document, and two encodings, does not have to be difficult or expensive. Rather than following a ’boil
SOAP and literal. Most experts
agree that the best way to ensure the ocean‘ approach that seeks to define all enterprise-wide services needs
interoperability is to use the document in advance, it is commonly recommended to take an incremental, organic
format with literal encoding. approach to service development and deployment. Choose a project that
will benefit from a service-oriented approach and begin creating a collection
of services needed for that specific project. Once the first project is in
Web Service Specification production, select another project can reuse some of the services from the
Language Document
first project. You will more than likely need to create new services for your
The complete specification of a web
service (i.e., the location of the service
second project, but you will probably be able to reuse one or more of the
on the network, the specific operations services created for the first project. When reusing services, you may discover
available, and the request and response that the services you created for the first project require modification or
message formats, etc.) is embodied augmentation to facilitate reuse, which is perfectly normal. Because the
in a WSDL document, which service
consumers consult to figure out how collection of consumers is limited at this point, you will usually be able to
to use the service. The WSDL can be modify them with little effort. More important, you will have learned what
considered the API definition for a it takes to create reusable and scalable services for your enterprise. This
web service, and as such, it defines
the contract between provider and
pragmatic, incremental methodology allows you to show value quickly and
consumer. to refine your strategy as your service usage grows.
Securing service calls can be a complex topic, but the good news is that there
UDDI Directory are relatively straightforward approaches to security that can be implemented
WSDLs are often catalogued in a UDDI easily. As with services standards, there are both standards and best practices
directory that consumers consult to that can be combined to prescribe an approach that we will explore later in
discover services and their providers. this chapter.
10 Chapter 2:
2.2 Data Services
An estimated two thirds of all services will be data services, making them the
most prevalent form of services in an enterprise. Data services provide data to
a consumer in a form that addresses current and ongoing business demands.
The focus of data services is to make it easy for consumers to access and
use enterprise data in support of their business processes. However, in many
cases this requested form of the data does not match how the data is stored
in legacy systems, so the data must be transformed, aggregated, combined,
or otherwise modified to support current business needs. This is the primary
role of a data service: To virtualize (abstract) data from its native form for
use (and reuse) in the modern enterprise, while hiding (encapsulating) the
complex work of getting the data into a form for consumption. However,
providing data to a service consumer in an appropriate form can be
challenging for a variety of reasons, including:
• Protocols for getting data out of the underlying systems are vendor specific
and highly varied. You may be able to retrieve customer data directly from
your customer master using SQL, but you might have to use a web service
call—or worse—a vendor-specific API to get the order information from
the ERP system.
• The format of the data from the underlying systems is probably not XML,
and as a result, will require transformation prior to supporting a web
service call. The native format possibilities for the underlying data are
numerous (e.g. relational, delimited, proprietary, hierarchical, etc.) and
manually mapping these to XML is not practical.
• Legacy semantics of the data will not necessarily match current use cases.
For example, prior to the dot-com era, an internal data source might have
been created to hold information about a customer. At that time, it was
reasonable to establish fields regarding ’marketing opportunities’, In the
current usage, however, that same data might be presented to a customer
in a self-service portal as ’privacy preferences’.
DESIGNING SERVICES
11
2.2.1 Data Services Levels
• Physical Services. Physical services lie just above the data source and
they transform the data into a form that is easily consumed by higher-level
services. For a well-designed database, these services may be unnecessary
because the data can be understood and used as is. However, many
packaged applications store their data in a form that is designed for
optimal use within that application, and that form of the data does not
lend itself well to direct and transparent access. For this kind of data, it is
very useful to layer a collection of light transformation services just above
the physical layer. These services can change element names, cast data
types, and augment record contents. The output of these services can still
be considered relatively raw, physical data, but it has been put into a form
that is cleaner and more useful.
12 Chapter 2:
Figure 2.2: Data Services Levels
Application
Services
SALES COLLECTIONS
POSTAL WORK BENCH
CUSTOMERS DELINQUENT
BY GEOGRAPHY CUSTOMERS
Business
Services ACCOUNTS
RECEIVABLE
AGING
CUSTOMER
Physical
Services
INVOICE CASE
PAYMENTS ACTIVITY
LINES
of data services. With these logical levels of service granularity in use, you
will find that the business services can be reused throughout the enterprise
with few additional transformations required.
The challenges associated with providing data services, beyond the usual
scalability and high-availability production needs, dictate the need for an
environment designed specifically to easily create, deploy, and maintain data
services. This infrastructure environment is called an ‘information server’
and several vendors offer products in this category. An information server is
distinctly different from an application server (which will be discussed in the
DESIGNING SERVICES
13
Figure 2.3: Comparing Information and Application Servers
14 Chapter 2:
third-party data services, packaged applications (e.g., SAP, Siebel), files
(e.g., Excel), directories (e.g., LDAP), and legacy mainframes (e.g., VSAM).
It should also provide the capability to expand its reach through custom
development, allowing even the most obscure data source to participate in
the data services layer.
• Vision and Focus. The challenges associated with the data services
infrastructure comprise a discipline that is unique. The vendor you choose
to provide this capability to your enterprise should be clearly focused on
this problem, and have a vision for advancing the state of the art. Several
vendors claim data services functionality as part of their broad offerings,
but that slice of the platform will never get the focus it needs to be
effective. We recommend that you select a vendor that offers best-of-
breed in data services technology.
As the collection of reusable data services in your enterprise grows and the
production requirements of the service consumers become more demanding,
the information server will expand to form an enterprise-wide data services
layer. This clustered and highly available infrastructure establishes a
virtualization layer between enterprise systems that store data and enterprise
applications that use data. The presence of this data services layer in an
enterprise provides several long-term benefits, including:
• Consumers of a particular type of data will get that data from the same
shared service, ensuring consistency of data across the enterprise.
DESIGNING SERVICES
15
• As data capacity requirements grow, the data services layer can be scaled
to accommodate increasing demand. And because caching is available in
this layer, it may not be necessary to add corresponding capacity to the
underlying physical data source.
• System consolidation will require data to be grafted from only one of the
affected systems into the data services layer without affecting the high-
level business applications. This efficiency overcomes the consolidation
chaos commonly resulting from mergers and acquisitions.
16 Chapter 2:
one data source. The application server environment usually provides strong
transactional models that will assist the developer with this challenge, but
the developer needs to use them.
• Vendor Neutrality. Make sure the services that are created in the
environment do not require software from the same vendor on the
consumer side of the interaction. This is a key point in guaranteeing truly
reusable and loosely coupled services.
DESIGNING SERVICES
17
• Robust Transaction Semantics. The environment should support
various transaction implementation models, from two-phase commit to
compensation models, and it should be easy for the software developer to
wrap his work in a reliable transaction scope.
The web service standards and recommendations leave service creators with
broad latitude for designing service interfaces. From one viewpoint, this is
a very positive situation: You can design service interfaces that exactly meet
the needs of your enterprise. From another viewpoint, however, this broad
latitude creates a problem because it will be easy to inadvertently create
service interfaces that have no relationship with one another, are difficult to
use, and the resulting services will embody no unified design vision. In other
words, it will be a mess.
You may be able to take service design guidance from the dominant
packaged application vendor in your enterprise. Some of the application
vendors have made significant progress in providing service-based APIs. SAP
currently provides the most complete treatment, although it requires their
installed base to upgrade to take full advantage of their offering. Other
vendors have not made significant public commitments to service-based APIs,
so it’s not clear what direction they will take. If you are a customer of one of
these vendors you should demand to see their plans so that you can begin
your own planning. When you learn more about the APIs that your vendors
provide, you can consider modeling your own APIs along the same lines,
or wrap those APIs in your own to extend or elevate their interfaces. The
guidelines below will help you determine whether the vendor-provided APIs
are appropriate for your needs.
You should think of your service interfaces as the public API into your
enterprise data. As such, care should be taken to make them useful, easy to
learn, well documented, consistent, supportable, and extendable. If you have
ever been on the consumer side of a poorly designed API, you can appreciate
the need for simplicity and elegance – it should all hang together and make
sense to the consumer.
18 Chapter 2:
Fortunately, we can learn something about how to do this from another
software development paradigm: Object oriented programming. In this
paradigm, a developer creates a class for a specific type of data, and the class
implements methods (procedures) for manipulating that data. Related classes
that work with each other to accomplish something broader are usually
grouped into packages, and multiple packages that form a comprehensive
framework are packaged and distributed together.
With this service framework in mind, we can turn our attention to the design
of the individual services, beginning with some guidelines, including:
DESIGNING SERVICES
19
• Keep interfaces as simple as possible. Service consumers do not want a
comprehensive service that does everything possible on a particular kind
of data, but requires an overly complex service call simply to, for example,
change a phone number of a customer. Service consumers want it to be
easy and obvious how to accomplish their task.
• Establish and use a standard error reporting scheme for all services (refer to
the following section for more details).
• System Errors. These occur inside the execution of the service, but
they are related to the system rather than to the application logic. For
example, temporary disk space for assembling results might become full,
or a required data source is currently unavailable. These errors are usually
not correctable by the caller. This class of errors should be reported to the
caller as a fault in the SOAP invocation, with the standard fault code of
soap:Server. SOAP faults are like exceptions, and they are returned to the
caller instead of the return message. The caller can catch the SOAP fault
and process it accordingly.
20 Chapter 2:
• Application Errors. These are errors in processing business logic that
defines the service. For example, when a user attempts to set a phone
number to an invalid string. Application errors should also be reported
using SOAP faults, but with the standard fault code of soap:Client, which
distinguishes them from system errors. It is useful to establish a convention
for reporting additional information in the detail element of the fault.
The WS-I Basic Profile for interoperability allows arbitrary sub-elements
underneath the detail element so a schema snippet can be created
and included in every SOAP fault. This will result in offering additional
information that will be useful to the client (e.g., an application error
code).
2.4.3 Example
• Design a XML representation (schema) for the type of data that the
services will work with. A customer represented in XML might begin
something like this:
<customer>
<id>123456</id>
<creationTimestamp>2007-01-13 14:35:22.345</
<creationTimestamp>
<modificationTimestamp>2007-02-09 08:30:55.127</
<modificationTimestamp>
DESIGNING SERVICES
21
<firstName>John</firstName>
<lastName>Smith</lastName>
<gender>M</gender>
<birthDate>1962-07-10</birthDate>
…
</customer>
22 Chapter 2:
customers by geography, returning a list of countries, states, or zip codes,
and the corresponding customer count for each geography. The important
thing about designing these services is to wait until they are needed.
Designing these services in the absence of real business requirements is
usually time wasted.
This methodology can be applied repeatedly to all the data in your enterprise.
It is not recommended that you do it all at once, however, because when
consumers begin to use services you have provided, you will learn lessons
that can be applied to future efforts. Expanding your service collection
incrementally, as needed by the consumer community, is the most efficient
way to proceed.
• HTTP Basic Authentication. If your services are accessed over HTTP, your
server can use HTTP basic authentication to require a user to provide a
DESIGNING SERVICES
23
username and password to essentially ’log in‘ to invoke the service. This is
a simple but effective mechanism for authentication that is widely used.
When combined with a wire-level encryption (i.e., SSL), it is quite secure.
This kind of authentication mechanism is roughly equivalent to a normal
client login to a database today.
• Custom Login Service. You can provide a custom service that accepts
a user’s login credentials and returns an identity token. The identity
token is then presented as part of the input to each subsequent service
invocation. This mechanism is widely used today, but it does not promote
interoperability of services, and it requires all services to accommodate
the mechanism. Combined with a wire-level encryption, however, it is
quite secure. You can think of this approach as being equivalent to a login
box on a web page portal where the web protocol is probably encrypted
(HTTPS), but the actual authentication is processed by the application
(which is probably running in an application server).
Once a user is authenticated to the service infrastructure, there are two types
of authorization to consider:
The WS-I Basic Security Profile addresses both of these in detail, so we will
not duplicate that effort in this book. However, some general considerations
can be offered, including:
• If a user does not have permission to invoke a service, the simplest way to
indicate this is to immediately return a SOAP fault.
24 Chapter 2:
is authorized will be populated. Again, your service infrastructure should
provide general purpose enforcement mechanisms for this type of security.
• Proxy Protection. If the service call goes through a proxy, the secure
communications channel does not extend through the proxy, potentially
leaving the communications vulnerable. It is not always clear to the
provider or the consumer exactly where proxies exist in the call chain, so
care should be taken.
WS-Security
This is a collection of security standards designed to secure web services. Its
scope is actually broader than transport privacy (it can also be used to assist
with authentication), but it is primarily aligned with message security. The
WS-Security standards are not currently in wide use, but it is expected that
they will be as SOA implementations proliferate. A comprehensive discussion
of WS-Security is beyond the scope of this chapter, but the following is a
summary of what it provides:
DESIGNING SERVICES
25
• Message Integrity. Allows the consumer of the message to reliably
determine whether the message has been modified since being created.
Security is a broad and deep topic, and we have only scratched the surface
in this section. The important point is that you can extend your current
enterprise security strategies to embrace services as well. We recommend
you formulate your enterprise’s service security requirements, and then work
with the service infrastructure vendors to put software in place that meets
those requirements.
2.6 Conclusion
The collection of services you create will form the foundation for your service
oriented architecture efforts. Your foundation’s strength and longevity will be
enhanced if you follow the suggestions outlined in this chapter.
You can begin creating services today. You do not need to wait until you
have a comprehensive set of requirements, and you can get started with
limited staff and investment. Select a project with specific well-known needs,
and build the services needed to address those requirements.
26 Chapter 2:
DESIGNING SERVICES
27
28 Chapter 3:
CHAPTER 3
Success depends on the ability to coordinate activities as business services • Recognize the importance
are implemented and deployed. Application architects, functional analysts, of documenting and
project managers, and test and operations teams can be geographically maintaining a formal
or organizationally distributed, different services can be in varied states of System of Record (SoR) of
their lifecycle at any given time, and the potential for confusion is high. your services, their revisions,
Organizations therefore need effective management and controls to cope and their service level
with the business services lifecycle. agreements (SLA’s).
As services multiply, the problem is compounded. An uncontrolled, broad • Understand the difference
adoption of a SOA can lead to uncertainty and failure to achieving benefits— between a Service Registry
and can potentially engender more problems. and a Service Repository.
Even if reuse is not your primary concern, you need to understand • Put a SoR in place for
dependencies and interrelationships to determine the impact of change. control and visibility before
Reliable and maintainable systems can only be built if there is a way to you need it.
understand these impacts. The ability to catalog and categorize your
enterprise’s growing portfolio of services through inception, implementation, • Reconcile your use of a
deployment, and operation make services easier to leverage and manage. SOA SoR with your existing
By registering services, associated artifacts, and their relationships and Software Development
dependencies, you can manage the impact of change when it is necessary to Lifecycle Control (SDLC)
version a service. A SOA System of Record (SoR) is a key enabler for this. system.
You can only effectively achieve the planning, collaboration, management, • Go further than just
and governance functions necessary to support successful SOA adoption acquiring a Registry and
by having complete visibility into the service portfolio. The infrastructure Repository system. Plan how
required to support these functions are SOA Service Registries and you are going to use and
Repositories. This chapter explores how SOA Registries and Repositories act maintain it.
as the necessary building blocks for a successful SOA initiative.
The goal of a SOA service-centric SoR is to help the enterprise (i.e., enterprise
architects, service providers, and consumers) gain visibility into the SOA
service portfolio. A SOA SoR enables an organization to determine what
business services are available; identify which services the organization can
use; and assess the impact business requirement changes have on existing
processes. In other words, a SOA SoR helps organizations achieve agility.
A SOA SoR has two complementary components: A SOA Service Registry and
a SOA Repository.
30 Chapter 3:
Some vendors claim that their SOA Registry/Repository play a dual role of
carrying out registry functions and storing data (i.e., the repository function)
that relates to the description and design of the service rather than strictly
describing a deployment. Combining design and deployment within a single
registry/repository makes it difficult to manage service information across
multiple deployment environments. More importantly, that approach leads
to a situation where a developer can inadvertently make a change to a
production environment. It is necessary to separate design from deployment
to prevent the development team from making a change to a production
system. Look to a SOA Repository to support your design needs.
The SOA Repository is the place where you find information about a service
and pointers to where you can find additional information. Within the SOA
Repository, you can expect to find the actual service interface description (the
WSDL document and XML Schema documents) as well as documentation
describing important information including:
Also, look for information relating to the organization responsible for the
operations of the service, points of contact, and key stakeholders. You
will also find metadata such as the service lifecycle state, functional and
architectural metadata, the location of instances in various environments
(by virtue of being integrated with SOA Service Registries), and the policies
(and the content of the policies) that constrain or describe the behavior of a
service.
Some organizations start to create their SOA SoR using a spreadsheet. But
this quickly becomes unmanageable. Others extend their LDAP identity
management system, only to have their dream of directory enabled
computing disappear when identity management take priority over
application concerns. Some gravitate to platform discovery specifications
such as DISCO and WSIL. Others embrace SDA Libraries, CMDBs or registry/
repository standards. And some build their own registry, repository, or
combination of the two.
32 Chapter 3:
infrastructure based on a Web services software environment for both
internal and public services.
SOA Repositories
Your SOA Repository is the catalyst that brings your stakeholders together
and promotes collaboration. First, ensure that the SOA Repository you
choose is entirely integrated with your UDDI service registries to provide a
view of operational, deployment, and integration capabilities. In addition
to carrying out the functions described in the previous section, your SOA
Repository should also support the following:
• Many SoR systems that come with larger packaged applications are
designed to be used only for the services associated with that specific
product. For example, they sometimes require the use of specific
software development tools for that environment.
Your SOA visibility and control initiative can be successful if the fundamentals
receive the right attention. Remember, the goal is to bring together as many
stakeholders as possible—including service developers and consumers, those
with upcoming projects, and those that build, evolve, maintain, and operate
the services and the supporting infrastructure. With this perspective, keep in
mind that you are developing a methodology that will serve multiple projects,
and that will maintain an accurate SoR of the combined work over time. You
will find that a disciplined methodology is well worth the extra effort.
The following is an example set of steps that will start you on the right path:
34 Chapter 3:
• Leverage your SOA SoR as early as possible to get all stakeholders in
agreement.
At every step, focus on leveraging your SOA SoR to support the needs of
your stakeholders and your initiatives.
• Control. You will also need to equip yourself and your enterprise
architects with control capabilities. You’ll want to enforce guidelines
that facilitate interoperability and consistency without creating manually
intensive processes that slow SOA adoption. You’ll also want to implement
management capabilities that drive compliance with policies for service
implementation, operational policies, and best practices.
As you move towards service orientation, keep in mind that your goal is
to drive collaboration. Development and test teams that have adopted
software development lifecycle methodologies need to ensure that everyone
understands the service in the same way to facilitate increased reuse, better
failure recovery, and easier evolution of the service.
36 Chapter 3:
include the consumer’s view of the lifecycle activities relating to discovering a
service; due-diligence activities relating to the decision to use the service; and
the requisite service-level activities. Note that few organizations in the real
world fully adopt all of these activities in the disciplined way as listed below.
3.5 Conclusion
Don’t try to boil the ocean. Start small and focus on developing
methodologies along with visibility and control operations that will help
stakeholders collaborate better. Be inclusive—seek out your stakeholders.
Get them to participate in building and helping you sustain a SOA SoR and
impress upon them that everyone has a stake in it.
38 Chapter 3:
REGISTRIES AND REPOSITORIES
39
40 Chapter 4:
CHAPTER 4
Greater Agility of
IT Supported
• Think through what “role”
Business Processes you want an ESB to play in
your system.
Improved Reuse
of IT Resources • Decide what forms of
“mediation” you want from
your ESB.
Broader Integration
of IT Services
Native Interoperability
Through IT Standards
42 Chapter 4:
• Performance. Performance encompasses issues beyond direct
interoperability; these are considerations having to do with Quality-of-
Service (QoS) and Quality-of-Protection (QoP), or simply the entire realm
of service-level and security-policy. Alignment here is equally critical.
If a provider service was built to handle 2 requests per second with 1
second response time, consumers must be aligned with that service-level
expectation or realistic production interoperability cannot be achieved.
Likewise, if a provider service was deployed with the expectation that it
would only be consumed by internal services, and was then inadvertently
exposed for consumption by a public audience, it would be out of
alignment with expected security policy.
If services were left to ‘fend for themselves’ on all these points they would
either come up short on support for requirements essential to certain
contexts or they would become increasingly bulky . Moreover, the services
would be more costly to develop, operate and maintain and would lead to
duplication of those capabilities across multiple services with inconsistencies
between them.
On the other hand, services that indeed delegate all these considerations
entirely to common infrastructure, become inherently more reusable across
more contexts and thus become more agile and manageable at scale—
preserving the SOA chain of logic. ESB is this common infrastructure onto
which a service can delegate mediation of these concerns. Simply put, ESB
is a mediation layer for enterprise SOA whose express purpose is to mediate
differences in structural, behavioral and performance characteristics between
services.
In terms of SOA adoption, one might ask, when does ESB become
important? This can be summarized in three simple rules of thumb:
44 Chapter 4:
SOA operates at a much finer granularity than integration of traditional
monolithic applications. Simply put, there will be more services than there
were applications. As a result, interdependencies accumulate much faster
then before. If these are not managed early, they get out of control very
quickly and raise the cost of operating and maintaining the SOA, eventually
eclipsing the cost of the approach you were trying to replace.
Services are related by the transport they use, the processes they participate
in, the semantics and interaction model they share and so on. If each of
these is established in a point-to-point manner, the number of mediations
grows exponentially to the number of services, process and schemas.
Alternatively, if each of the processes, schemas and services has only one
set of relationships to consider—the ones it has to the ESB—the number of
mediations always remains proportionate and grows linearly in relation to the
number of services (see Figure 4.2).
“Units” “Units”
of of
Loss of Agility
Beneficial from Complexity Management
Work Overhead
Mediations
with ESB
The benefits of SOA begin to appear through reuse of common services and
schemas across processes. Using an ESB to mediate the structural, behavioral,
and performance interoperability dimensions will result in ‘units’ of beneficial
work growing at a faster rate than ‘units’ of management overhead
associated with new mediations. Time to value will accelerate.
Rule 2: When the process objectives of the SOA begin to span multiple
geographically distributed locations and/or federated organizational
boundaries.
This generally becomes essential between 5 and 10 locations, although
federation drivers will become acute sooner than distribution (i.e., as few
as three federated parties). This stems from the fact that technologically,
both are hard to manage and neither problem is satisfied entirely by a single
product.
46 Chapter 4:
4.3 Selecting An ESB Product
Stemming from the choice of host environment, ESB products exhibit certain
styles that associate with this implementation difference.
• Interaction Channel
• Process Channel
• Information Channel
• Event Channel
48 Chapter 4:
Figure 4.3: ESB Form Factors
Packaged/ Complete (or semi-complete) Out-of-Box • Generally more mature / • Potentially Higher initial
Commercial platforms that usually include the principal proven offerings cost (but likely lower
(licensed software) components of an ESB but may not provide lifetime TCO)
• Unique vendor advantages
complete Management Life-cycle and security
• Concerns over vendor
capability. Some commercial ESBs also • More complete enterprise
lock-in and/or future
separate out support for MOM, depending on support
direction/viability
other vendor or third-party products for this • Larger developer/ISV
capability. • Vendor alignment with
ecosystem
specific industry or use-
case requirements
Open Source Similar to Commercial ESBs but developed • Open Source community • Generally less mature/
(licensed software) in an Open Source or Community-Edition and ecosystem advantages proven
model. The latter however is often a free
• Lower initial cost (potentially • Questionable enterprise
‘introductory-version’ to a commercially
lower TCO) support policies and/or
licensed upgrade, that is intended to seed
technical capabilities (i.e.
community development for the commercial • Greatest Standards
performance, scalability,
offering and thus should not be confused with Conformity/Openness
reliability)
true open source licensing models. • Potentially lower risk of
technology ‘lock-in’
Hardware/ Specialized hardware device that is hardened • Potentially higher • Potentially higher cost
Appliance and optimized for discrete lower-level ESB performance and scalability
• Lacks advanced ESB
operations, especially transport mediation and on specialized functions
capabilities (e.g.
XML parsing (i.e. XML transformation, simple
• Generally simpler semantics, service
content-based routing, WSDL validations, SLA
management (i.e., orchestration, etc.)
management, Security, etc.)
operations & network-
• Disjointed management
engineer friendly)
(e.g. separate from the
process or application
environment)
ESB as a Service ESB functionality offered by a third-party, • Low/Zero initial capital • Less Mature as a business
network-based provider. Most often expense; potentially lower model (although
Utility/ Software- offered in a SaaS, Managed Hosting or TCO generally based on similar
as-a-Service (SaaS) Outsource model by a Systems Integrator, technology)
• Faster initial implementation
ISP or Telecommunications Carrier. Examples
• Potentially narrower
include: • Minimal internal
range of support
requirements (e.g. training,
• EDS, AirSOA, an ESB for the Airline Industry capabilities (i.e., little
hardware, related systems,
sold as an outsourced, managed-service customization of
etc.)
packaged services)
• British Telecom, BT iBus, an ESB marketed
• Potentially better support
as a telecom service (dial-tone), which is • Potential security risks
for B2B and industry-specific
provisioned through specialized customer-
applications/use-cases
premises hardware and billed as a
subscription (monthly) service.
INDUSTRY USE-CASES
Government Citizens Services Portal, Cross-Agency Portals (e.g. Justice, HS, DMV)
INDUSTRY USE-CASES
Insurance Policy Master distribution (e.g. claims centers and branch offices)
Manufacturing RFID/Auto-ID Track & Trace, Shop Floor control and monitoring (BAM)
50 Chapter 4:
Figure 4.4 summarizes Industry specific ESB use-case examples that are
representative of each of these four channel types.
Interaction Channel
As an interaction channel, ESB is positioned to participate in the flow of
interaction by mediating exchanges between ‘front-end’ consumer services,
through to back-end process- and data-oriented provider services. Gartner
refers to this as Interactive or Uniform SOA and associates it with services
operating in portals or controlling rich-client, mobility and alternate user
interfaces channel (ATMs, Kiosks, IVRs, etc.)
Process Channel
In this role, the ESB behaves in an orchestration-centric manner, where its
purpose is to mediate services along a business process pipeline. While BPM
often sits above this type of SOA-level orchestration (to mediate human
interaction and long-running processes) ESB service orchestration performs
fine-grain service sequencing for machine-to-machine interactions. Gartner
refers to this role as Integration or Composite SOA.
Information Channel
As an Information Channel, the ESB role can be described as information-
centric, where function is geared toward provider-side services. In this case,
mediation is on behalf of back-end provider services exposed for data access
and transactional purposes. ESB provides access to data services, where they
would most likely be invoked by user-facing and process-control oriented
Event Channel
The event channel role is, as the name suggests, event-centric and oriented
around the notion of syndication. Gartner refers to this as Event-Driven
Architecture (EDA) or Notification-based SOA. The ESB purpose is to support
a distributed fabric of event channels, distributed using publish and subscribe
model of communication. Producer services publish messages (events) of
relative interest into this namespace and the bus mediates these events over
to syndicated consumer services that subscribe to and act upon them. Typical
usage scenarios are where organizations have many functions that need to
‘Respond to Business Events in Real-time’—specifically when one type of
event may be of interest to many different functional roles.
52 Chapter 4:
processing—no matter how much you optimize the batch process. However,
abrupt, flash-cut-over to event-oriented paradigms is usually not feasible
for reasons of scale, scope, risk, cost and a myriad of other constraints. The
journey from batch to real-time can only be accomplished in incremental
steps. ESB therefore becomes the ideal assistant in that journey as its
support for interaction model mediation permits a gradual shift to real-time
SOA without the disruption or risk. As such, certain ESBs accentuate this
application by either bundling or offering companion ETL capability to assist
in the orchestration of file oriented process (like ETL), while at the same time
providing means to parse data sets into individual transactions, or document-
level granularity, for discrete handling on process flows.
54 Chapter 4:
Third point of mediation: Semantics
Returning to the telephony metaphor, imagine if you will a situation where
I spoke English but the person I wanted to call only spoke Chinese. In
enterprise SOA, it would mean that every service would need to be fluent in
all the languages spoken by every service it would be likely to interact with.
This is a form of point-to-point integration that can kill a SOA agility and
manageability quickly.
As a design goal, it’s not that services should always be prohibited from
calling other services directly, whether for service orchestration or error
recovery purposes. It is however a point of caution to make very judicious use
of direct service invocations.
A service tries to update a database with a service request that has been
made against its interface. However, there is a network problem which
prevents the service from connecting to the database. If the service were to
incorporate its own error recovery logic, say to perform a retry some number
of times, it hijacks the opportunity for the infrastructure to provide more
advanced remediation; for example rerouting to another service that has
a functional database connection. If the service were to take on the entire
burden of understanding alternative strategies and being aware of all the
possible retry locations in the network, it not only becomes contextually
bound to that understanding of recovery but also becomes less location
independent as well. Here, service orchestration, placed in the infrastructure
and outside the service context, could be used to perform a wide range of
recoveries.
56 Chapter 4:
context of a global management architecture and framework.
QoS specifically breaks down into 5 distinct but highly interrelated issues:
• High availability
• Load distribution
• Routing optimization
• Queuing (asynchronous delivery)
• Publish-and-Subscribe (1:N distribution cardinality, or syndication)
The ESB infrastructure should, and usually does, support some degree of
HA architecture that ensures continuity of communications and integrity of
message flow between service end-points. The most robust incarnations of
these models provide five-nines, ‘continuous-availability’ of the infrastructure
through sophisticated state-full replication between ESB elements, such
that any failure of an infrastructure element remains entirely transparent to
attached services (i.e., no loss of connection, logon or transaction state). In
conjunction with the next two aspects of QoS, this also extends degrees of
fault-tolerance and HA to the services themselves.
Regarding route optimization, one can also then consider the earlier example
where service developers might be motivated to directly connect two services
for pipeline speed between them. If two services needed to be deployed in
a way that reduced the message passing latency between services in order
to make the entire service orchestration run faster, the optimal architecture
would be to place all the services in the same execution container and pass
the messages between the services as objects that are not dependent upon
the network between each service step. However, if the services needed to
be deployed to support maximum scale, handling potentially thousands of
simultaneous requests, one might be more inclined to deploy the services
across many containers to horizontally scale the application platform. If
service designers were forced to decide these options one-way-or-another,
and optimize the implementation of the service for either, the service would
not be in a position to readily adapt and be reused in the alternate context. If
an ESB was used, this decision could be deferred to deployment time, where
an operations engineer could determine the appropriate scale and latency for
the situation and make policy-driven deployment decisions to support either
or both simultaneously.
Over and above speed, scale and latency considerations, quality of service
also extends further to include message integrity and durability concerns
as well. At its core this amounts to the ESB’s ability to provide reliable
queuing. Additionally it introduces support for synchronous to asynchronous
interaction mediation. For example, if someone wants to ask you a question
over the phone in real-time (synchronously) but you are unavailable so they
leave you a voice-mail, ‘queued’ in the persistent storage of your voicemail
box which (asynchronously) ‘brokers’ the question for you. This is a form of
‘guaranteed’ delivery that mediates sync to async interaction and enables a
level of loose coupling (of both time and dialog mode), while still assuring
proper delivery, that forms one of the principal drivers for an ESB.
58 Chapter 4:
Interrelationships Between The Seven Points Of Mediation
Having now reviewed the seven points of mediation individually, it is worth
noting one key observation that you may have made along the way: that
there is a strong interrelationship between the various points of mediation
just described. In each of the examples used to illustrate the discrete points
of mediation, there was an implied dependency on one or more of the other
forms of mediation. Look for an ESB that encompasses all seven points
of mediation in a comprehensive manner and enables all of them to be
managed in a coordinated way across all service interactions.
4.6 Conclusion
Over and above the interoperability provided by standards, ESB fills gaps
not yet satisfied by state-of-the-art and even enables mediation across
incompatible standards. ESB binds the links of the ‘SOA-chain of logic’
together to ensure that your SOA initiative fully achieves the reuse, agility
and business value objectives you seek.
In this chapter we will address some of the practical issues that arise in the • Understanding the
course of performing runtime governance tasks, describe the best practices composition and behavior of
for addressing issues, and show how runtime governance solutions, when your service network
implemented properly, can lead to increased agility and decreased costs.
• Controlling your service
We will address important considerations, including: network as well as detecting,
diagnosing and, ultimately,
• Understanding service network topology
preventing problems that
• Ensuring the operational health of the Service network
arise during the operation of
Managing performance and availability
the service network
Delivering appropriate service levels
• Detecting and diagnosing exceptions in the behavior of the
• Ensuring the correctness of
service network
your operational system as it
• Securing the Service network
evolves over time
• Ensuring the integrity of the Service network as it evolves
RUNTIME MANAGEMENT
61
5.1 Understanding Topologies
In this instance you would rely on runtime governance, which solves this
problem by dynamically discovering the topology of the service network. It
observes the actual components that are installed in the environment—no
matter if it exists in a development, staging or production environment—
and records their existence. Since these are SOA-based environments
and the service interfaces can be accessed dynamically, details of the
discovered service’s interface can also be recorded. As an added benefit,
the runtime governance system can record the discovery information in a
registry or repository, making the information available to the architecture,
development, and operational teams. We’ve seen that the most successful
IT shops instrument all their service environments used in development, QA
and operations. They can then use the information on discovered services as
the basis for the overall SOA governance by recording which services exist,
their current state, and the rate at which the services are being promoted
from one lifecycle stage to another. This information, along with usage
information described below, is used to prepare reports for corporate
management detailing the effectiveness of their SOA initiatives.
In a similar vein, you will certainly need to know the effects of a component
failure, the potential impact of a change to a component or who is using a
particular component. In order to answer these questions you first need to
62 Chapter 5:
know the interdependencies among your application components—another
capability you’ll derive from your SOA runtime governance system.
This information forms the basis for impact analysis. You can see which
components of the service network are likely to be impacted by a change
to a service. Generally, impacted components will be in the set of callers of
the changed service and/or the set of services the changed service calls. The
set of callers should be computed transitively to gain visibility into ‘indirect’
callers of a service. Given this information, we can determine who will be
impacted and can give all interested parties (i.e., the callers) advance warning
of the change so they can prepare. Using your runtime governance system
you can even take this a step further by recording the set of end users of a
particular service. For instance, you can use this information to notify users of
outages caused by the failure of a particular service. This is another example
of a SOA best practice enabled by runtime governance—taking a proactive
approach to work with the user community.
RUNTIME MANAGEMENT
63
IT professionals familiar with the operation of traditional systems are familiar
with performance and availability management as well as service level
management. However, the service network throws a few wrinkles into the
problem—issues that must be considered both by the runtime governance
system and the IT organization responsible for the service network.
For example, services are reused. That means the load on the services
themselves may change independently of applications that use those
services. Thus, the performance of each service (component) must be
tracked over time and correlated against the known reuse of the service to
determine if new uses of the service will prevent it from properly supporting
existing applications. To reuse a service it must indicate how long it will
take to produce a response. This represents its expected service level. Under
unexpectedly heavy loads the service might not meet this constraint. The
trick then is to keep the service from overloading. To do this, you need a
way to keep the set of clients of a service from demanding more capacity
than the service can offer. Alternatively, you would need a way to increase
the capacity of the service. Use runtime governance to solve this problem
by tracking and limiting service requests to maintain the request load below
that required to meet service level agreements or by adding capacity in
conjunction with other infrastructure management systems. There are several
strategies to consider, including:
• Configure the service such that all users, at their maximum load, can
be serviced
• Use historical statistics to determine a reasonable peak load
• Dynamically adjust the limits for each user to reflect the current load
This problem is a bit insidious when you consider the services that prove to
be most reusable are the first to experience a problem. To stay ahead of this
issue, track changes in reuse rates to determine which services should be
monitored most closely.
64 Chapter 5:
first staged in a pre-production environment.
Discovery is the first step to visibility. Once we know the topology of the
service network we need to understand its dynamic behavior. Is it up and
running? Is it properly processing business transactions? Is it performing as
we expect? Runtime governance should be able to answer, or at least aid in
answering, these questions for the technical operations team.
A related problem is one where the user does not receive an answer or
the system is not processing requests. The macro level impact is known
but the reason for the failure and the location of the failure is not. In such
cases, figuring out what went wrong and where can be a very difficult task.
A classic approach for diagnosing these errors is to have each service log
capture information about what it sends and receives, as well as some of
its internal activities. The technicians responsible for each service then get
together and manually trace their way through logs, correlating messages
and looking for anomalies. One organization reported they spent more than
14 hours looking for such a problem that impacted only one customer’s
transactions—all other customer’s transactions were processed correctly.
After significant effort, they realized that one service had been updated in a
minor way but that change had a deleterious effect on transactions whose
serial numbers were encoded in a specific format used by only one customer.
This would have been much easier to find if correlated log information from
all the participating services was readily available to the diagnostic team.
Using runtime governance, you can take much of the labor out of this task.
Messages can be recorded and correlated automatically. Standard patterns
can be detected automatically and queries and inspections can be applied
to the correlated messages in an effort to find anomalous behavior. Once a
problem is found, the exact location of the problem is known and corrective
action can be taken. If the problem is chronic, perhaps due to some physical
failure or some recurring logical inconsistency, the runtime governance
system can automatically detect failures and initiate corrective actions.
RUNTIME MANAGEMENT
65
A great example of the benefits of this runtime governance technology is
illustrated in its application to various order fallout or transaction failure
problems in integrated systems. That’s because the behavior of integrated
legacy systems are difficult to predict in all possible situations and under all
possible stimuli. Automatically correlating messages and using the resulting
log information for diagnostic purposes is essential to the proper operation
of the system. As each problem is diagnosed, further rules can be added
to the exception system to detect similar problems in the future, thereby
making the system even more responsive.
5.4 Security
A service may not be aware of who the ultimate consumer of the service
is, and, at the same time each service must share data that may be used in
unpredictable ways by other applications involved in the transaction. An
intermediary in one transaction may act as a service consumer in another
transaction. Those other applications may dynamically ’plug in‘ to an existing
transaction, or may suddenly be accessed by a foreign partner, where the
previous week all access was confined to users within the enterprise walls.
66 Chapter 5:
enforcement at the service endpoint. This is conventionally known as ‘last-
mile security.’
If security processing does not occur locally on the machine where the service
is running, inevitably all requests will have to traverse the network for one
final hop after security processing has taken place. The effect of this is that
when an SOA message is at its most vulnerable, an inferior—or even worse
— proprietary security mechanism is employed. Therefore, the best practice
is to deploy a solution that enables embedded last-mile security—policy
enforcement at the service endpoint.
Authentication
Authentication is the process of verifying the identity claimed by a service
requester. In an SOA, best practice is for the requester to supply credentials
in a WS-Security header that can be authenticated by the service. Two types
of credentials are most common in current systems.
• Username/Password Pairs
• X.509 Certificates
Authorization
Authentication determines the identity of the service requester. Authorization
determines what an authenticated user is allowed to do. Flexible
authorization is a critical component of an SOA due to the potential for
RUNTIME MANAGEMENT
67
unintended reuse of services. For example, you may release a service to
support your internal administrative users, only to find later that the service
is to be included in a composite application exposed to your overseas
subsidiary. For example, it may be necessary for regulatory reasons to
restrict the operations accessible to users in the subsidiary. Rather than
modifying the business logic of the service to account for these new users,
the enterprise should rely on a runtime governance system for providing and
enforcing flexible access control (authorization) policies to inbound service
requests. ‘Coarse-grained’ authorization policies determine whether the user
can access a service holistically. ‘Fine-grained’ authorization policies specify
exact features or ‘operations’ accessible by a user.
Privacy means that only authorized users can see the content of the
message—this is usually enforced through encryption schemes or content
filtering mechanisms. Integrity means that the content of the message has
not been tampered with—this is usually enforced by including a digital
signature in the message.
68 Chapter 5:
the message are still required since SSL is a link-based protocol. Once the
message has been received by the SSL endpoint the message reverts to its
clear text form.
RUNTIME MANAGEMENT
69
Runtime governance has introduced facilities for supporting a new discipline
– operational validation –developed specifically to address the problem of
validating the service network in the face of:
Use the runtime governance system for validating both the functional and
performance characteristics of the application:
• The captured traffic also forms the basis of service simulators used for
testing new applications against federated services for which native test
facilities have not been made available.
5.6 Conclusion
Runtime governance plays a vital role in any SOA system. Not only does
it reduce costs and increase operational effectiveness, it ensures that
applications perform as expected and withstand changes as the service
network evolves.
70 Chapter 5:
detect issues, it must also resolve them before these problems can affect the
business.
Due to the number of moving parts in a SOA environment, it’s not a scalable
solution to rely on manual effort to handle runtime governance tasks.
Wherever possible, automate your runtime governance to achieve greater
effectiveness and minimize the chances of human error. Your runtime
governance solution must span a heterogeneous infrastructure on which
the service network resides, so it is important to look for a solution that’s
well integrated with leading application servers, enterprise service buses and
other SOA infrastructure. Close vendor partnerships in this industry can take
some of the bumps out of your SOA adoption path.
With a runtime governance system that provides visibility into and automated
control of your complete services network, you’ll be better prepared to reap
the benefits of SOA.
RUNTIME MANAGEMENT
71
72 Chapter 6:
CHAPTER 6
• Implement a portfolio
Your ability to reconcile these seemingly contradictory organizational
of service-management
mandates—in which a highly structured vision of your company’s business
capabilities.
and technological future facilitates a decentralized explosion of creative
development activities—will determine the success of your SOA strategy. • Align your software
development lifecycle (SDLC)
processes with your SOA
efforts.
Indeed, whether your SOA initiatives fly or fail depend on your ability
to institute a robust governance function that maintains control over all
SOA-related activities throughout the enterprise. Among other things, a
centralized approach to governance will allow you to:
• Recruit and/or train personnel with the appropriate skill sets. One of the
chief challenges facing companies wishing to implement SOA is finding
business and technical professionals capable of implementing the SOA
vision. One common solution is to hire outside consultants who possess
the necessary expertise; however, it’s critical to institute a process for
transferring key skills and knowledge to internal workers from Day One.
74 Chapter 6:
• Align your software development lifecycle (SDLC) processes with your SOA
efforts. Again, this is best done by a centralized authority that can facilitate
consistency across all organizational units.
• Level 4: Measured Business Services. At this stage, you can finally effect a
transformation from reactive to real-time business processes. By defining
and meeting business-oriented performance metrics, you can measure ROI
based on SOA’s positive impact on the business.
One of the biggest myths of SOA is that you should start small and create it
on the fly. Start small, yes. But without a strategic vision, you could end up
like the firm with the hundreds of individual services and no ROI in sight.
Here are three ‘due diligence’ steps you should take in preparation for
beginning your SOA endeavor:
This statement should include details of how SOA projects will be funded,
and what sort of processes will be put into place so that services have a good
chance of being discovered and reused throughout the organization.
The vision statement should also provide the basic framework for governance
and begin laying the groundwork for an enterprisewide SOA center of
excellence.
You should also think of your vision statement as the foundation for your
SOA evangelism activities that you should jump start fairly early in the SOA
process. Some starting points to make as you prepare to ‘sell’ your vision
include:
76 Chapter 6:
• Business users. You will get their attention by emphasizing the reduced
costs, decreased time to market, and enhanced quality of service that SOA
can deliver.
After performing your preliminary due diligence, you should begin designing
and building the necessary governance structures that will make it possible to
empower decentralized development of services while helping guard against
‘rogue’ initiatives by individual groups. Depending on what governance
structures you already have in place—for example, you may already have a
strong IT project management office—you may decide to leverage existing
organizations rather than set up new ones.
Staffing a PMO for SOA requires somewhat different skill sets than a
traditional IT PMO.
Center of Excellence
Also known as the enterprise architecture (EA) Group, this organization
should enforce technology compliance against a well-documented
organizational blueprint and set of architectural principles. The center
of excellence should report directly to the CTO and has responsibility for
achieving strict compliance, service reuse, and budgetary goals as well
as for establishing key architectural standards, guidelines, principles, and
recommendations. And if the center of excellence is not involved early in the
SOA process, you might not effectively mitigate all the technological and
financial risks.
78 Chapter 6:
technical subject matter expertise. Indeed, the center frequently acts as an
internal consulting organization so that experience and knowledge gained by
one development effort is shared across the enterprise.
Certainly this center must be staffed with technical experts. But those people
must also have a process-centric viewpoint, possess the ability to understand
business requirements, and understand how to translate complex technical
concepts into language non-technologists can readily understand.
The professionals on this board must understand enough about the business
needs as well as culture of individual departments or divisions to establish
realistic guidelines for discovering and modifying services. By controlling
changes to either the data or the services, this prevents individual users from
making alterations that preclude others within the organization from using
the services or data.
For your SOA center of excellence to be effective, it must meet three key
requirements. First, it must have a good understanding of the requirements
of multiple internal customers. Next, it must possess a strong sense of how
much you will need to invest up front in a service to make it universally
reusable. Finally, it must establish an effective governance structure to
manage the reuse of any services created.
To succeed at all this, the SOA center of excellence must implement a ‘service
discovery model’ that provides a layered view of technology assets to support
the business, and which provides a visual depiction of your ability to reuse
services across various lines of business (see Figure 6.1).
• Business Capabilities View. Your SOA center of excellence must first create
a view that establishes high-level requirements that are aligned with your
organizations overarching strategic vision.
• Technical Component View. After that, the center of excellence lays out the
technical components that support the business service view.
SERVICE LEVEL
Get Approve Approve
Pricing Pricing Fee • Technical service level enables information
Options Change Waiver exchange with the business component.
• Technical services are defined in terms of a
specific protocol ( e.g. request/response,
batch, XML etc.) and in most cases have a
set of associated service level agreements.
80 Chapter 6:
• Technical Service View. Finally, you specify how the technical services and
associated technology assets will support both the enterprise business view
and business service view.
Once the initial set of projects has been identified, the SOA center of
excellence group takes responsibility for refining them further based on
detailed analyses of additional factors including your organization’s ability
to reuse the services in question; the complexity of the services in terms of
implementation, governance, deployment, monitoring, and management;
and balancing the tactical versus strategic business and technical objectives
Phase 2 1. Instrument the governance process and 1. Governance body executing against
tighten metrics metrics
2. Define, use, and monitor ROI methods 2. ROI models and instances of achieved
ROI
3. Begin implementation of enterprise
SOA components (security, continuity, 3. Infrastructure planning and procurement
integration)
4. 3-5 Reusable services
4. Begin construction of initial services
5. Multiple LOB involvement
5. Expansion of effort to include multiple
LOBs
Phase 4 1. Introduction and usage of BPM and rules 1. Definition and usage of key performance
support indicators (KPIs)
2. Construction of dashboards to monitor 2. Instrumentation of advanced operational
KPIs environment
3. Overlay messaging, eventing, and 3. Design and implementation of complex
complex event management within the event handling
SOA framework
82 Chapter 6:
You need to consider the following organizational dimensions when
constructing the roadmap:
• Business vision and strategy. This is the high-level business vision that
articulates how your organization plans to improve its current business
processes to meet the evolving consumer and market demand.
Finally, you need to make sure that the organizational framework is in place
to monitor and manage the actual development of projects. In particular, this
means adjusting your application development methodology to account for
SOA-specific skills, responsibilities, and structures.
Dependencies
• For emerging standards, principles, and structure
• Business domain teams to satisfy business goals
Design
• Design of services that comply with client standards
• Review and Sign-Off
Deploy
• Deploy the services in production
• Register the services for enterprise-wide discoverability
Operate
• Monitor services for continuous operation within SLA limits
• Monitor and manage services for policy and compliance
6.8 Conclusion
84 Chapter 6:
ORGANIZING FOR SUCCESS
85
86 Chapter 7:
CHAPTER 7
Service Orientation cuts through virtually all aspects of IT affecting how Key RECOMMENDATIONS:
individuals to do their own job, as well as how they interact with others.
Industry analysts such as Gartner have been quick to point out that SOA is
• Start with a skills assessment
less about the technology and more about the change in work processes.
of where you are today.
Workforces require more than just new tools; they need practical guidance
on how their jobs will change on a daily basis. This requires a commitment
• Develop a training roadmap
to training and mentoring to enable the shift. SOA Capability Development
that integrates with your
and the associated Change Management are fundamental to transforming
SOA strategy.
an organization.
• Tailor training by role to
maximize individual and
7.1 Getting Started organizational effectiveness.
Skills Assessment
Where are you at today? IT departments vary significantly in their
understanding of SOA. The first step to planning the journey is to know
where you are starting from. A skills assessment is an easy way to survey the
IT organization on their knowledge of general SOA concepts, as well as more
in-depth topics related to their specialty area.
CAPABILITY DEVELOPMENT
87
Most SOA Training providers, will have a method for quickly determining the
level of skills maturity in an organization. This typically involves a select few
interviews with individuals in various roles, asking questions related to core
SOA concepts and techniques.
There are two primary objectives related to the Skills Assessment. First, the
assessment determines group strengths and weaknesses so that the training
material can be customized to best meet the needs of the class. Second,
the assessment is often used as a baseline for measuring the growth of the
organization. In this scenario, skills of sample students are tested at both the
beginning and end of the program to identify the level of knowledge that
has been gained. Additionally, gaps that may remain can be identified.
The majority of organizations who have ventured down the SOA path have
chosen to perform ‘role based’ training for their staff. This allows individuals
with similar jobs to experience the same training and advice about how
to improve their job function. And although no two organizations are
alike, a set of job titles has emerged as being core to instilling SOA in an
organization. This set includes, but is not limited to CIOs, IT Executives,
Business / IT Liaisons, IT Application Owners / Managers, Enterprise
Architects, Data Architects, Solutions Architects, Project Managers, Business /
Process Analysts, Software Developers, Quality Assurance Professionals, SOA
Infrastructure Specialists and Operations Specialists.
88 Chapter 7:
CIO / IT Executive
IT leaders have been bombarded with the vendor’s view of SOA. While
analysts and the press have attempted to clarify the situation, many IT
leaders have been given erroneous information. Executive education should
focus on the benefits, strategy, costs, risks and timeline. Demonstrations
of new technologies or advanced architectures may help bring light to the
topic, but should not be a focal point. The primary emphasis should be
placed on aligning their understanding of what SOA is, with the rest of the
organization. Brief workshops directed at a specific aspect of SOA are an
excellent method to accomplish this objective. Virtually all CIO’s are time
constrained and are unable or unwilling to attend a traditional classroom
setting. Consider complementing the workshops with one-on-one sessions
between the CIO and the local SOA champion(s). Remember – getting the IT
executive leadership educated and on-board with the program is an essential
step!
IT Manager
As the IT Executive Leadership becomes more educated on SOA, they will
request more information from their staff. Line managers must have a broad
understanding of SOA. It should incorporate a deep understanding of how
their staff will be applying SOA concepts as well as how activities will change
within their peer organizations. IT Managers are encouraged to attend
training along with their staff in their domain (architecture, analysis, QA,
etc.). In addition, they are encouraged to take training that provides a more
in-depth view of SOA. Consider this more of a ‘survey course’, enabling them
to understand the big picture.
Enterprise Architect
IT analysts, such as the Burton Group, have been quick to point out that
SOA is first and foremost, an enterprise architecture discipline. Service
oriented practitioners agree that the ‘service’ is the new unit of planning
and management in an EA framework. The same practitioners will also note
that SOA reference architectures, policies and guidance are essential to a
successful program. This said, it is strongly recommend that EA’s focus in
two areas. The first is related to the overarching infrastructure changes are
required to take place. This includes education on modern SOA registries,
intermediaries, repositories, orchestration engines, etc. Related to this, the
EA should begin to grow their knowledge in how these elements work
together to create a united SOA reference architecture. The second area
is related to managing groups of services within a domain (Customer
Domain, Product Domain, etc.) A new key activity played by the EA is that of
‘Enterprise Service Architect’. Here, the individual is taught how to think of
the organization as a ‘set of services’ (not just organizations or functions) and
how to identify, and plan the actual realization of these services.
CAPABILITY DEVELOPMENT
89
to view their systems as a set of reusable assets, rather than a stand-alone
system. Modern systems are being redesigned into a more loosely coupled
structure, where distributed services are the new unit of work. Recombining
these services into a ‘composite application’ rests on the shoulders of the
solution architect. Their training should focus on both the decomposition of
a system into reusable assets, along with the re-composition of assets into
fully functional integrated systems. This involves training in ‘Service Design’
as well as ‘Composite Application Development’.
Data Architect
Data Architects and Information Engineers are perhaps some of the most
well equipped people to understand the value and impact of a SOA program.
These individuals have experience in many of the areas that others lack such
as creating shared services, governing changes to shared services, managing
metadata and operating mission critical operational environments. However,
these people are most likely not aware of how their canonical models and
metadata systems need to be shared with other IT organizations. Their
systems and methods will need to be upgraded to adhere to new corporate
SOA standards for data delivery, security, transactional integrity and a host of
other issues. In addition, more emphasis will be placed on their organizations
to deliver a single-source of truth (MDM, CDI, etc.) and to deliver more
sophisticated real time access to distributed data sets as a service (EII,
federated data queries, etc.) Training for data architects should include
modern techniques for data quality, integration and distribution.
Software Developer
Many Software Developers think that SOA = Web Services. The first item
that needs to be addressed with this group is to reeducate them on what
SOA is and is not. They must be shown that the organization is moving to
a model where assets are planned, shared and evolved. It is often difficult
for software engineers to adjust to the concept of ‘building a piece of the
solution’ rather than ‘building the whole solution’. In fact, some software
developers may never make the transition. The second item of attention
is teaching them how to go about building the services. Most developers
specialize in a platform or language like Java or .Net. These platforms have
special API’s to provide Web Services or RESTful interactions. The developer
90 Chapter 7:
must also grow a strong understanding of XML, service interfaces and
mapping service interfaces back to objects. Last but not least, the developer
must understand new techniques for unit testing their system as well as
building and deploying their systems along service boundaries.
QA Professional
Quality Assurance professionals will inherit a new breed of systems to
validate and verify. These individuals will immediately be challenged by two
fundamental changes. First, services are designed to meet the needs of
unintended users. That is to say, they are designed to be abstract enough
for new consumers to use them with no changes. This presents a challenge
to QA groups who are often used to testing systems for very specific use
cases. Secondly, the systems which are delivered will be loosely coupled,
distributed and potentially built on heterogeneous platforms. Many QA
professionals only recently mastered the task of GUI testing and server side
load testing. Composite applications and the services that they use present
a similar challenge but will take the complexity to a new level. Training
should focus on testing individual services (load, functional, security, etc.) as
well as on testing the new distributed Composite Applications (integration,
performance, etc.)
CAPABILITY DEVELOPMENT
91
7.3 Tailoring The Curriculum To Your Environment
I have created extensive SOA training programs for the enterprise. However,
each enterprise has slightly different requirements. It is often necessary to lay
the SOA training foundation leveraging a specialist provider for the first 90%
and to tailor the last 10% toward your unique environment.
Tailored content typically focuses on decisions that you have made internally
that you want to communicate to the department. This might include specific
policies for designing services, the use of one protocol over another or how
to use internal templates for service analysis. It is often useful to deliver
‘bonus material’ on your specific environment either during training sessions
or as a post-training supplement. As an example, some organizations will
train their staff on the general concepts of a SOA registry, taxonomy, etc.
Then, they will go to a Web browser and pull up their specific instance of the
registry showing the user’s important things like how to access it, how to get
an account, who to call if they have issues, etc.
Interactive Workshops
Often training isn’t enough. Workshops are a great way to have a more
collaborative exchange of ideas with coworkers. People who have attended
classroom training may have grasped the concepts but have a hard time
applying it to their job. Workshop sessions are most successful when
they are pre-planned, facilitated and have a structured set of exercises
for the attendees to work through. Sessions that are popular include
“Understanding SOA Governance”, “Building a SOA Roadmap” and “Service
Investigation and Planning”. The duration of these sessions is typically
anywhere from a half day to two full days.
Workshops can also be useful when stall-outs occur. This is when a group
of people go back to their old habits. Remember, instilling service oriented
concepts takes time and effort. SOA program leaders have to be on the
lookout for this. It is recommended that you don’t chastise those who fall on
old habits, but rather work with them to remember the new way of doing
things. Often, the people aren’t intentionally doing it incorrectly, they just
forgot about the new way.
92 Chapter 7:
7.4 Change Management
You can lead a horse to water… but you can’t make him drink. SOA program
leaders have the responsibility to empower the workforce with tools,
processes and skills. However, some people will continue to resist any kind
of change. As mentioned earlier, it is encouraged that you to work with
troubled groups or individuals to understand the importance of this effort
and what is expected out of them.
7.5 Conclusion
The benefits that can be achieved by adopting service oriented concepts and
principles are abundant. The primary obstacles will most likely be humans.
Organizations must commit to training the teams in the new tools, processes
and concepts. They must also acknowledge that this is a large transition
and some of the staff will be resistant to any kind of change. However,
commitment to a change management program, on-going education,
workshops and community efforts all increase the chances of success.
CAPABILITY DEVELOPMENT
93
94 Chapter 8:
CHAPTER 8
Now that you know a lot about SOA, one of the most frequently asked
questions is “Where do I start?” The reason this question is not definitively
answered by now is that there is no single answer. Some focus on the Key RECOMMENDATIONS:
development environment, others on the registry or the ESB, or on the
organization and processes. Each person will attack the issues from a • Start anywhere, but start
different perspective, and put different priorities in different areas. Since nonetheless.
there is no “cookbook” where the ingredients have to be mixed in a certain
order, don’t worry too much about the sequence of activities while you learn. • Learn and measure as you
go.
As has been repeatedly pointed out in the book, small implementations can
be achieved without many of the technologies and infrastructure products • Come back to this book
described herein. Get to work and do some things on your own. When whenever you seek a
you run into limitations, you will then know what to look for in planning refresher on core principles
larger implementations, product selection, and infrastructure capabilities. and key considerations.
Unfortunately, you can’t become an expert by reading a book, including this
one, so ‘go get your hands dirty’.
PULLING IT TOGETHER
95
8.3 How To Measure Success
96 Chapter 8:
• Reconcile your use of a SOA SoR with your existing Software Development
Lifecycle Control (SDLC) system.
• Go further than just acquiring a Registry and Repository system. Plan how
you are going to use and maintain it.
PULLING IT TOGETHER
97
Chapter 8: Pulling It Together
• Start anywhere, but start nonetheless.
• Learn and measure as you go.
• Come back to this book whenever you seek a refresher on core principles
and key considerations.
98 Chapter _:
DRAFT COPY
99
100 ABOUT THE AUTHORS
ABOUT THE AUTHORS
David Besemer
Chief Technology Officer
Composite Software
Paul Butterworth
Chief Technology Officer
AmberPoint
Paul is the Chief Technology Officer for AmberPoint, the leading provider
of SOA management solutions. In recognition for his work at AmberPoint,
Paul was named one of InfoWorld’s Top 25 CTOs for 2007. Prior to founding
AmberPoint, Paul was the CTO for Forte Tools at Sun where he was
voted a Distinguished Engineer by his peers and was responsible for the
technical strategy for the Sun developer tools products. As a co-founder of
Forte Software, Paul was the Chief Architect and Senior Vice President of
Engineering and Customer Services. Before founding Forte, Paul served as
Chief Architect and Director of Product Engineering at Ingres Corporation.
He holds both a BS and a MS in Information and Computer Science from
University of California at Irvine.
Jim Green
Chairman and CEO
Composite Software
Hemant Ramachandra
Managing Director, Business Systems Integration
BearingPoint
Jeff Schneider
Chief Executive Officer
MomentumSI
Hub Vandervoort
Chief Technology Officer
Progress Software