In-Depth
Principles of SOA
- By Jason Bloomberg
- February 28, 2003
The Web services honeymoon is over. Numerous enterprises
have built their Web services pilot projects and have proven to themselves that
this most recent evolution of distributed computing technology can reduce
integration and development costs substantially. In addition, critical Web
services standards are falling into place, and vendors are coming to market with
robust security and management products. It is time for forward-looking
enterprises to take the next step.
The next step for many companies is to move beyond simple point-to-point
applications of Web services to a broad application of Web service technologies
both within the enterprise and among business partners. This move requires an
architectural change to loosely coupled, standards-based Service-Oriented
Architectures. More than a new architectural approach, such architectures
require a different perspective on the role of IT in the organization. The role
of the service-oriented architect, therefore, is critical to the success of
companies looking to achieve the substantial returns business agility can
provide. Today's enterprise architect must understand the practice of
Service-Oriented Architectures. The potential rewards for this effort are
enormous -- finally, distributed computing technology promises to be flexible
and nimble enough to respond to business needs and provide the business agility
companies have craved for so long, but which has always been just out of
reach.
Service-Oriented Architectures are an approach to distributed computing that
thinks of software resources as services available on a network. Such
architectures are nothing new; CORBA and DCOM are familiar examples. However,
these older examples of service-orientation suffered from a few difficult
problems. First, they were tightly coupled, which meant that both ends of each
distributed computing link had to agree on the details of the API. A code change
to a COM object, for example, required corresponding changes to the code
accessing that object. Secondly, such Service-Oriented Architectures were
proprietary. Microsoft unabashedly controlled DCOM, and while CORBA was
ostensibly a standards-based effort, in practice, implementing a CORBA
architecture typically necessitated the decision to work with a single vendor's
implementation of the specification.
Web services is an evolutionary development that improves upon DCOM and
CORBA's weaknesses. What is new about today's Service-Oriented Architectures
built with Web services is that they are standards-based and loosely coupled.
The reliance upon universally accepted standards like XML and SOAP provides
broad interoperability among different vendors' solutions, and loose coupling
separates the participants in distributed computing interactions so that
modifying the interface of one participant in the exchange does not break the
other. The combination of these two core principles means that companies can
implement Web services without having any knowledge of the consumers of those
services, and vice versa. The Service-Oriented Architectures we will discuss are
the standards-based, loosely coupled kind, which we will refer to as SOAs.
The power and flexibility that SOAs can potentially offer the enterprise is
substantial. If an organization abstracts its IT infrastructure so that it
presents its functionality in the form of coarse-grained services that offer
clear business value, then consumers of those services (whether they are at the
same company or one of that company's business partners) can access those
services independent of the underlying technology issues that support them.
Furthermore, if service consumers can discover and bind to available services
while they are active, then the IT infrastructure behind those services can
offer extraordinary flexibility to the businesses that invoke them.
Achieving these levels of power and flexibility, however, is a difficult task
that requires a new approach to architecture. Enterprise architects must become
''service-oriented architects'' who understand the practice of SOA, as well as
SOAs themselves. This distinction -- between the practice of architecture and
the architectures that result -- is subtle, but critical. This article discusses
the practice; that is, what service-oriented architects must do to build
SOAs.
The principles of SOA
SOA is a type of enterprise architecture
and, as such, it begins with the needs of the enterprise. However, the
difference between SOA and other approaches to enterprise architecture is in the
business agility that SOA offers. Business agility is the ability of a company
to respond quickly and efficiently to change, and to leverage change for
competitive advantage. For the architect, building an architecture that provides
business agility means creating an IT infrastructure that meets as-yet-unknown
business requirements -- a situation that throws traditional IT planning and
design out the window.
To meet the needs of the agile enterprise, the practice of SOA has the
following core principles:
* The business drives the services, and the
services drive the technology. In essence, services act as a layer of
abstraction between the business and the technology. The service-oriented
architect must understand the dynamic relationships between the needs of the
business and the available services on the one hand, as well as the technical
underpinnings that offer the layer of abstraction required by the services.
* Business agility is a fundamental business
requirement. Instead of dealing
with concrete requirements from business, SOA considers the next level of
abstraction: The ability to respond to changing requirements is the new
''meta-requirement.'' The entire architecture -- from the hardware on up -- must
reflect the business agility requirement, because any bottleneck in the SOA can
torpedo the flexibility of the entire IT environment.
* A successful SOA is always in flux. To visualize how a SOA is supposed to
work, it is better to think of a living organism rather than the traditional
''building a house'' metaphor that gave software architecture its name. IT
environments are in a constant state of change, so the work of a
service-oriented architect is never done.
For the architect used to building houses, tending to a living organism
requires a new way of thinking. Fortunately, however, the foundations of SOA
rely upon familiar architectural principles.
The foundations of SOA
There are two increasingly popular
movements in IT -- one architectural, the other methodological -- and each has
something to offer the service-oriented architect. First is the Model-Driven
Architecture (MDA), which is championed by the OMG, the same body that looks
after CORBA. MDA states that architects should begin with a formal model of the
system being built, ideally in the Unified Modeling Language (UML), which is
also shepherded by the OMG. MDA begins with a platform-independent model that
represents the functional requirements and use cases of the users of the system.
From this platform-independent model, architects can derive whatever
platform-dependent models they need to specify the design of the system under
construction. These platform-dependent models are so detailed that they can be
used to automatically generate the implementation code itself.
The core strength of MDA is that the designs for systems are fully specified;
thus, there is little leeway for misinterpretation when the systems are built,
and the models can be used to generate working code. But MDA has some
limitations. First, MDA assumes that the business requirements are fully
specified before the model is built, which is not the case in the typical
dynamic business environment. Second, MDA does not offer a feedback loop; if
developers need to diverge from the models, there is no set way to keep the
models up to date.
The second foundation of SOA is the Agile Methodology (AM) movement, most
notably represented by Extreme Programming (XP). AMs like XP provide a process
for building software systems in environments where requirements are unknown or
in flux. XP requires that a user representative work closely with the
development team, helping to write tests that guide the daily work of the
developers. All members of the team pitch in on the design, which is kept as
minimal and informal as possible. The goal of AMs is to build just what the user
wants, avoiding extraneous work on artifacts like formal models. AM's core
strength lies in its agility -- the ability to deal with changing requirements.
AM's main weakness is its limited scalability. For example, XP works well for
small teams and projects of moderate size, but as the project scope grows, it
becomes more difficult for team members to have a solid grasp of all aspects of
the project without a concrete, comprehensive plan to work from.
On the surface, MDA and AM appear to be contradictory -- MDA assumes fixed
requirements, while AM assumes the opposite. MDA centers on formal models, while
AM eschews them. However, at the risk of being iconoclastic, we will take
certain elements from each of these approaches and put them together into a
coherent architectural practice.
There are three levels of abstraction in a SOA, following the first principle
of SOA: The business drives the services, and the services drive the technology.
AM connects the business model directly to the implementation, as represented in
the platform-dependent model. MDA does not separate the business model from the
platform-independent model, but takes the platform-independent model as its
starting point. SOA must connect these models, or levels of abstraction, into a
single architectural approach. We will make this connection by looking at the
five-view approach to architecture.
The five-view approach to SOA
Enterprise architects find their
profession both challenging and gratifying because they must consider IT from
many perspectives. Philippe Kruchten (who is in charge of the development of the
Rational Unified Process) distilled these perspectives into what we will call
the five-view approach when applied to SOA.
Four rectangles represent different ways of looking at an architecture,
representing different stakeholders. The fifth view, the use-case view, overlaps
the other views and plays a special role with regard to the architecture. The
deployment view maps software to the underlying platforms and associated
hardware, the way that systems specialists view the architecture. The
implementation view describes the organization of the software code, and is the
view favored by programmers. Business analysts work with the process view, which
addresses the runtime issues of the software. Finally, the logical view
represents the users' functional requirements. In the case of SOA, the
service-oriented architect must be able to connect the users to the services,
and the services to the underlying technology, following the threads of use
cases in the use-case view.
To show how the service-oriented architect must work with each of these
views, let us put them in the context of the SOA meta-model. There are two
overlapping realms of SOA: The business realm represented by the business model
and the service model, and the technology realm represented by the service model
and the platform-dependent model (the service model is shared by the two
realms). Business users who use the logical and process views work with
coarse-grained business services, orchestrating them into processes as needed
depending on the fluctuating requirements of the business. Technologists, on the
other hand, work to build and maintain the abstraction layer between the
services and the underlying technology. The central model, representing the
services themselves, acts as the axis around which the business moves.
The SOA meta-model inherits the platform-independent and platform-dependent
models from MDA, but adds AM's interaction with the user as well as an agile
feedback loop, represented by the two-way arrows between the ovals. Likewise,
the meta-model solves AM's scalability issue by introducing the intermediate
level of abstraction provided by the central service model. Users can thus deal
with the day-to-day concerns of the business, reflecting any changing
requirements in the service model. Technologists can then respond to these
changing requirements quickly and effectively because the underlying technology
is model-driven.
What is different about the practice of SOA and more traditional approaches
to enterprise architecture is the way it enables agility. Remember that the
third principle of SOA states that SOAs are always in flux. This environment of
constant change is the cornerstone of the practice of SOA. The stakeholders
shown in this figure continue to effect changes throughout the architecture on
an as-needed basis. The line between design time and runtime blurs as the
technologists respond to the changing business requirements as a normal part of
day-to-day operations.
The missing pieces
We have provided a broad, high-level
framework for the service-oriented architect, showing how elements of MDA
and AM can help provide the tools users need to create and maintain SOAs.
Nevertheless, many pieces are still missing from the SOA puzzle -- pieces that
software vendors and professional services organizations must provide. In the
business realm, vendors must offer service-oriented business process, workflow,
and service orchestration tools and services. Modeling tools must be available
that can adequately reflect business services in an agile, platform-independent
way. Technologists must have tools that can generate code from models, and
update those models when the code changes. And finally, vendors must offer
SOA-enablement software that allows service-oriented architects to build and
maintain the level of abstraction between services and underlying technology in
a reliable and scalable way. Fortunately for today's enterprises, such products
will be coming to market soon.
The most important missing piece, however, is the top-down approach to SOA
outlined in this article. Most of today's thinking about Web services is bottom
up: ''Here's how to build Web services, now let's use them for integration.'' That
approach to using the technology is a great first step, because Web services can
dramatically lower the cost of integration, which is a story today's technology
managers love to hear. As the economy improves and IT finally pulls out of the
doldrums, however, companies will look to IT to offer increasingly strategic
value to the organization. Service-oriented architectures provide the framework
that will enable IT to offer this value in the form of business
agility.