
What is SOA?
The concept of a service is nothing new, but the notion
of an SOA has evolved over the past couple of years.
It's an architectural style of building software applications
that promotes loose coupling between components so that
you can reuse them. Thus, it's a new way of building
applications with the following characteristics:
- Services are software components that have published
contracts/interfaces; these contracts are platform-,
language-, and operating-system-independent. XML and
the Simple Object Access Protocol (SOAP) are the enabling
technologies for SOA, since they're platform-independent
standards.
- Consumers can dynamically discover services.
- Services are interoperable.
Figure 1 gives a overview diagram of service-oriented
architecture.
The basic building block of SOA is the service. A service
is a self-contained software module that performs a
predetermined task: "verify a customer's credit
history," for example. Services are software components
that don't require developers to use a specific underlying
technology. As Java developers, we tend to focus on
reusing code; thus, we tend to tightly integrate the
logic of objects or components within an application.
However, SOA promotes application assembly because services
can be reused by numerous consumers. For example, in
order to create a service that charges a consumer's
credit card, we build and deploy only one instance of
such a service; then we can consume this service from
any number of applications.
The other key advantage of SOA is that it lets you
automate business-process management. Business processes
may consume and orchestrate these services to achieve
the desired functionality. Thus, new business processes
can be constructed by using existing services. For example,
a customer order that has been submitted to shipping
can be represented by a business process that can asynchronously
interact with the requisite services.
Why SOA?
Today's IT organizations invariably employ disparate
systems and technologies. Most analysts predict that
J2EE and .NET will continue to coexist in most organizations
and the trend of having heterogeneous technologies in
IT shops will continue. Moreover, creating applications
that leverage these different technologies has historically
been a daunting task. SOA provides a clear solution
to these application integration issues by allowing
systems to expose their functionality via standardized,
interoperable interfaces.
Using SOA offers several key advantages. You can:
- Adapt applications to changing technologies.
- Easily integrate applications with other systems.
- Leverage existing investments in legacy applications.
- Quickly and easily create a business process from
existing services.
|