SOA in Practice: SOA Glossary |
|
|
Now available:
Nicolai
M. Josuttis
SOA in Practice
The Art of Distributed System Design
O'Reilly
ISBN-10: 0-596-52955-4
ISBN-13: 978-0-596-52955-0
|
This glossary is a maintained
version of the SOA glossary initially published in "SOA
in Practice" by Nicolai
M. Josuttis. You
can use this glossary provided you mention book (title and author) and/or refer
to the original Web site, which is http://soa-in-practice.com/soa-glossary.html.
2PC
(two-phase commit)
An approach for maintaining consistency
over multiple systems. In the first phase, all backends
are asked to confirm a requested change so that in the
second phase the commitment
of the updates usually succeeds.
In accordance to the principles of loose coupling,
in SOA compensation is usually used instead of 2PC.
Activity
Possible term for one step in a business process.
In the context of SOA, an activity
is typically implemented by a service.
Agent
A Web Services term for participant,
which is the general term for a consumer
or provider.
Architecture
According to [BassClementsKazman03],
the architecture of a computing system is the structure or
structures of the system, which comprise software (and hardware) components,
the externally visible properties of those components, and the relationships
among them.
Asynchronous communication
A form of communication where there is a
measurable time interval between the sending and receiving of the content of
any message. Message-oriented middleware is
typically implemented based on this concept by introducing message queues that
queue (persist) messages sent by a system until they are accepted by the
receiving system(s).
Asynchronous communication is a form of loose coupling
because it avoids the requirement that the sender and receiver of
a message must be available at the same time.
Asynchronous request/response
Another name for the request/callback
message exchange pattern.
Backend
A system that maintains the data and/or
business rules of a specific domain.
Usually, it provides a specific role or has a specific
responsibility in a system landscape.
In SOA, a backend is usually wrapped by
some basic services.
Basic service
Common term for services
that provide basic business functionalities of
a single backend.
These services are usually part of the first set of services
that wraps or hides implementation details of a specific backend. Basic
services can be data-driven or logic-driven. They are the base for composing
higher services such as composed services
and process services.
BPEL
Business Process Execution Language.
An XML-based language used to
orchestrate services to
composed services or process services.
The resulting services are Web Services.
IDEs allow you to create BPEL files using
graphical user interfaces.
Engines allow you to run (and debug) services implemented with BPEL.
BPM
See business process management
and business process modeling.
BPMN
Business Process Modeling Notation.
A graphical notation for business processes maintained
by the OMG.
Bus
An abstract software pattern used to transfer data
between multiple systems.
In contrast to the hub and spoke pattern,
it uses a federation of components that all follow a
common policy or protocol to send,
route, and receive messages.
Business process
A structured description of the
activities or tasks
that have to be done to fulfill a
certain business need.
The activities or tasks might be manual steps (human
interaction) or automated steps (IT steps).
Business processes might be managed (see
business process management)
and implemented using modeling notations such as
BPMN or EPC
or execution languages such as BPEL.
Some people differentiate between workflows and
business processes by
stating that business processes describe more generally
what has to be done
while workflows describe how
activities or tasks should be carried out.
Business Process Execution Language
See BPEL.
Business process management
(BPM)
A general term that refers to all
activities carried out to manage (i.e. plan, implement, document, observe, and
improve) business processes.
Business process modeling
(BPM)
According to [BloombergSchmelzer06],
"a set of practices or tasks that
companies can perform to visually depict or describe all the aspects of
a business process, including its flow,
control and decision points, triggers and conditions for
activity execution, the context in
which an activity runs, and associated resources."
Business Process Modeling Notation
See BPMN.
Choreography
A way of aggregating services
to business processes.
In contrast to orchestration, choreography does not compose
services to a new service that has central control over the whole process.
Instead, it defines rules and policies that enable different services to
collaborate to form a business process. Each service involved in
the process sees and contributes only a part of it.
CMMI
Capability Maturity Model Integration.
An approach to
categorize and improve the product and software development processes of
organizations.
CMMI is an extension of SW-CMM (formerly just called CMM), which
deals with the aspects of software development.
Part of it is a model to categorize the maturity of an
organization by different levels
("initial", "managed", "defined",
"quantitatively managed", and "optimizing").
Compensation
An approach for maintaining consistency over multiple systems. In contrast to
2-phase commit, compensation doesnt update
all the backends synchronously. Instead, it defines compensating activities to
be performed in the event that not all corresponding updates of different systems
succeed (regardless of whether the updates are performed sequentially or in parallel).
As a consequence, this approach leads to looser coupling
of systems; however, it might require more effort to implement. BPEL
has direct support for compensation.
Composed service
Common term for services
that are composed of basic services
and/or other composed services.
Consumer
General term for a system that has the
role of calling ("consuming") a service
(which is offered by a service provider).
Another term used for this role is (service) requestor.
Contract
The complete description of a
service interface between one consumer
and one provider.
It includes the technical interface (signature), the semantics,
and nonfunctional aspects such as service-level agreements.
Sometimes a contract is also called a
"well-defined interface."
CORBA
Common Object Request Broker Architecture.
An OMG standard that allows remote access to
objects of different platforms.
Although its initial purpose was to provide an infrastructure
to access distributed objects, CORBA can be used as a SOA
infrastructure by focusing on its concept of Object by
Value (OBV).
Domain
A definable (business) area or scope
that plays a specific role and/or has a specific responsibility.
In SOA this might be a company, a division, a business unit,
a department, a team, or a system.
Domain specific language
(DSL)
A specific graphical or textural
notation for a meta model.
It allows you to specify the concrete behavior of
a model in a precise, condensed,
readable, and complete form.
EAI
Enterprise Application Integration
(sometimes also just called Enterprise Integration, or EI).
An approach to integrate distributed systems such that they
use a common infrastructure (middleware and/or protocol).
With this approach, for each system it is enough
to provide and maintain only one adapter to the infrastructure,
instead of a specific
adapter for each of the systems it communicates with.
The infrastructure might use a bus
or hub and spoke approach.
SOA can usually be described as
an extension of EAI where EAI
provides the technical aspect of interoperability.
For this reason, the
concepts of EAI can be considered as being a major part of
or even the same as an enterprise service bus.
EDA
See Event-driven architecture.
Enterprise Application Integration
see EAI.
Enterprise service bus
(ESB)
The infrastructure of a SOA landscape that enables
the interoperability of services.
Its core task is to provide connectivity, data transformations,
and (intelligent) routing so that systems can communicate
via services.
The ESB might provide additional abilities that deal with
security, reliability, service management, and even
process composition.
However, there are different opinions as to whether a tool
to compose services is a part of an ESB or just an additional platform to
implement composed and process services outside the ESB.
In addition, tool vendors tend to define an ESB as something to buy, while
you might also consider a standard such as Web Services
to be an ESB because conceptionally they define all that is necessary to
provide interoperability between systems
(without the need to buy some specific hardware or software).
An ESB might also be heterogeneous, using various middleware
and communication technologies.
You can consider EAI solutions as (part of) an ESB.
EPC
See Event-driven process chain.
ESB
See Enterprise service bus.
Event
A notification sent to a more or less
well-known set of receivers (consumers).
Usually, the receivers of an event have to subscribe for a
certain type of event (sent by a certain system or component).
Depending on the programming or system model, the systems
sending the events (the providers) might or might not know and
agree to send the events to the subscribing receivers.
You can consider events as part of the publish/subscribe
message exchange pattern.
Event-driven architecture
(EDA)
A software architecture pattern promoting
the production, detection, consumption of, and reaction to
events.
Some consider EDA to be an extension of or complement to SOA;
others consider EDA to be part of the SOA approach
(a special message exchange pattern
where the service provider
sends a message to multiple consumers).
Event-driven process chain
(EPC)
A graphical notation for business processes,
mainly promoted by SAP.
Fire and forget
Another name for one-way messages
(a message exchange pattern where a
service sends a message without expecting a response).
Frontend
A system that initiates and controls
business processes by calling the necessary services.
That is, it acts as a service consumer.
It might be a system with human interaction or a batch program.
Governance
In general, a term that describes the task of
"making sure that people do whats right."
In SOA, governance is about architectural decisions,
processes, tools, and policies.
HTTP
Hypertext Transfer Protocol.
The fundamental protocol of the World Wide Web.
In a secure form (using SSL transport-layer security),
it is called HTTPS.
Hub and spoke
An abstract software pattern used to
transfer data between multiple systems.
In contrast to the bus pattern, it uses a central
component that coordinates all communication between senders and receivers.
IDE
Integrated development environment.
A (usually graphical) project-oriented environment
for the development of specific software.
Idempotency
The ability of services to deal
with messages that are delivered more than
once so that redeliveries do not have unintended effects.
In an unreliable network, if you dont receive a confirmation,
you dont know whether or not a message was delivered
(it is possible that the receiver processed the message
and its response was lost).
If you want to be sure the message gets delivered
and send the message again, the receiver should be able to
deal with this second message in such a way that it does not produce
an effect different from that of receiving the message only once.
For example, if the message is a
request to add money to a bank account, the receiver should add the money only
once even if, for reliability reasons, the message was sent twice.
Interoperability
The ability of different systems to communicate with each other.
Interoperability between different platforms and programming languages
is a fundamental goal of SOA
Note that standards do not necessarily ensure interoperability.
For this reason, in the Web Services
world a special organization called WS-I
provides profiles
to make the standards interoperable.
JMS
Java Message Service.
The standard Java API for message-oriented middleware (MOM).
Because it is only an API standard, it provides portability
(allowing you to change the middleware while keeping the interfaces)
but not interoperability (allowing you to use
different MOM implementations).
Loose coupling
The concept of reducing the dependencies between systems.
There are different ways to decrease the
tightness of coupling between systems,
such as having different object models, using
asynchronous communication, or using compensation
instead of 2PC
to maintain consistency.
In general, loose coupling leads to more complexity.
For this reason, in a specific SOA you have to find the right
amount of loose coupling.
Maturity model
A model to categorize the maturity of an organization
by different levels.
Most famous are the Capability Maturity Model (CMM) and its
successor, the Capability Maturity Model Integration (CMMI).
Following this approach, many organizations have developed SOA maturity models.
MDSD
Model-driven software development.
An approach where a significant amount of schematic code, which has the same
structure but varies depending on the concrete situation, is generated out of
an abstract model.
In the context of SOA and this book it might also stand for
model-driven service development.
Message
A chunk of data sent around as part of a service call.
Message exchange patterns define
typical sequences of messages to perform service calls.
Message exchange pattern
(MEP)
A definition of the sequence of messages
in a service call or service operation.
This sequence includes the order, direction, and cardinality
of the messages sent
around until a specific service operation is done.
The most important message exchange patterns are
one-way, request/response,
and request/callback
(asynchronous request/response).
For example, the request/response MEP
defines that a consumer
sends a request message and waits for the answer, which is sent by
the provider as a response message.
Message-oriented middleware
(MOM)
Middleware that is based on
the concept of asynchronous communication.
Examples are WebSphere MQ (formerly MQ Series) by IBM, MSMQ by Microsoft,
Tibco Rendezvous, and SonicMQ.
Meta model
A description of a model.
A meta model refers to the rules that define the structure a model can have.
In other words, a meta model defines the formal structure and elements
of a model.
Model
An abstraction.
In SOA a model is typically used to specify services.
With the help of MDSD you can generate
different code and other artifacts out of it.
The structure of a model is
typically described with a meta model.
For the model, there are typically one or more specific graphical
or textural notations
(sometimes called domain specific language, or DSL)
that allows you to specify the
concrete behavior in a precise, condensed, readable, and complete form.
Model-driven software/service development
See MDSD.
OASIS
Organization for the Advancement of Structured Information Standards.
An international not-for-profit computer
industry consortium for the development, convergence, and adoption of
e-business and Web Services
standards. See http://www.oasis-open.org.
OMG
Object Management Group.
An international, not-for-profit computer industry consortium for the
development of enterprise integration standards.
OMGs standards include UML, MDA, and BPMN. See
http://www.omg.org.
One-way
A message exchange pattern where a service
sends a message without expecting a response.
Another name for this pattern is fire and forget.
Orchestration
A way of aggregating services to business processes.
In contrast to choreography,
orchestration composes services to a new service that has central control
over the whole process.
For Web Services, BPEL is
a standard for orchestration, for which development tools and engines are
available.
Participant
General term for a consumer or provider.
Alternatively, in Web Services terminology, agent is used.
Policy
A general rule or guideline.
In SOA, policies have an impact on the infrastructure
(ESB), the provider(s),
and the consumer(s).
A policy might be a mandatory law
(such as a required naming convention)
or a goal
(such as the maximum number of versions of a service in operation).
Process
A structured set of the steps
(activities or tasks)
to fulfill a certain need or reach a certain goal.
Different processes are involved in SOA:
The goal is to implement business processes.
To do this, you must have processes to establish and manage solutions
and services
(solution lifecycles, service lifecycles, and so on).
Also, on a meta level, you have the
process of establishing SOA and SOA governance.
Process service
A service that represents a long-term
workflow or business process.
From a business point
of view, this kind of service represents a macro flow,
which is a long-running flow of activities
(services) that is interruptible
(by human intervention).
Unlike basic services and
composed services, these services
usually have a state that
remains stable over multiple service calls.
Profile
In the context of SOA and especially Web Services,
a profile is a set of standards each of a specific version combined
with guidelines and conventions for using these standards together
in ways that ensure interoperability.
Provider
General term for a (part of a) system
that has the role of offering ("providing") a service,
which might then be used/called by different consumers.
Publish/subscribe
A message exchange pattern
where a service consumer subscribes to get a
notification message from a service provider
when a certain condition or state occurs or changes.
The subscription might happen at design
time or at runtime. If the provider doesnt know the consumer,
this pattern is the base of event-driven architecture,
where the notification is an event.
Registry
Registries manage services from a technical point of view,
unlike repositories, which manage services from
a business point of view.
Registries manage all the technical details necessary for using
services at runtime (signatures, deployment information, and so on).
Usually, a registry is
considered to be a part of the infrastructure (ESB).
Repository
Repositories manage services and their artifacts from a
business point of view.
That is, they manage interfaces, contracts,
service-level agreements, dependencies, etc.,
to help to identify, design, and develop services.
Unlike for a registry, the service description
should be independent of technical details and infrastructure aspects.
That is, it should not be necessary to change a repository when a
company switches to a new infrastructure (ESB).
Request
A message that is sent by a consumer
as an initial message in most message exchange patterns
(see request/response and request/callback).
Sometime this term is also used as a synonym
for a service call.
Request/callback
A message exchange pattern where a
service consumer sends a request
message but does not block and wait for a reply.
Instead, it defines a callback function that is called later,
when the response
message sent by the service provider
arrives.
Sometimes request/callback is called
asynchronous request/response.
Requestor
Alternative term for consumer
(mainly used in the context of Web Services).
Request/response
A message exchange pattern where a
service consumer sends a request message
and expects an answer.
Usually the consumer blocks until the response message
sent by the service provider arrives.
Sometimes, however, the blocking is not required.
In that case, there is a separation between
synchronous and
asynchronous request/response.
The latter is also known as the request/callback
message exchange pattern.
Response
A message
that is sent by a provider
as an answer to a service request
(see request/response).
Service
The IT realization of some
self-contained business functionality.
Technically, a service is
a description of one or more operations that use
(multiple) messages
to exchange data between a provider
and a consumer.
The typical effect of a service call is that the consumer
obtains some information from
and/or modifies the state of
the providing system or component.
Services can have different attributes and can be of different categories.
The most famous categorization differentiates between
basic services,
composed services, and process services.
A service is usually described by an interface. The
complete description of a service from a consumers
point of view (signature and semantics) is called
a "well-defined interface" or contract.
Service-level agreement
(SLA)
A formal negotiated agreement between two parties,
which in the context of SOA are usually a service provider
and a service consumer.
For a specific subject an SLA usually records the
common understanding about priorities, responsibilities, and warranties, with
the main purpose of agreeing on the quality of the service.
For example, it may
specify the levels of availability, serviceability, performance, operation,
or other attributes of the service (such as billing and even penalties
in the case of violations of the SLA).
Service-oriented architecture
(SOA)
There are various definitions for SOA.
Some specify only that it is an approach for architectures where the interfaces
are services.
However, in a more specific sense (and according to my understanding),
SOA is an architectural paradigm for dealing with
business processes distributed over a large and
heterogeneous landscape of existing and new systems that are under the control
of different owners.
The key concepts of SOA are services,
interoperability, and loose coupling.
The key ingredients of SOA are the infrastructure (ESB),
architecture, and processes.
The key success factors for SOA are understanding,
governance, management support, and homework.
Note that Web Services is not a synonym for SOA;
Web Services are one possible way of realizing the
infrastructure aspects of SOA.
SOAP
SOAP is the basic protocol of Web Services.
As an XML-based format, it defines the format
of the header and body of a Web Services message.
Formerly the acronym stood for "Simple Object
Access Protocol," but because SOAP was neither simple nor for
objects or access, the term now stands for itself.
The protocol still allows different
types of message exchange. The most commonly used is the
"document/literal wrapped" pattern.
Software architecture
See architecture.
SSL
A cryptographic protocols that provides secure communication
on the Internet protocol HTTP
(which is often called HTTPS then).
Task
Possible term for one step of a business process.
In the context of SOA, a task is
typically implemented by a service.
Two-phase commit
See 2PC.
UBR
The UDDI Business Registry,
which was founded in 2000 with the intention of becoming a
worldwide registry
for public Web Services.
However, the idea didnt work, and the UBR was switched off in 2006.
UDDI
Universal Description, Discovery, and Integration.
A Web Services standard for registries.
Initially designed for the UDDI Business Registry (UBR),
it now serves as a standard for
the technical management and brokerage of Web Services.
W3C
World Wide Web Consortium.
An international consortium for the development of standards for the
World Wide Web, which also develops SOA standards such as
XML and SOAP.
See http://www.w3.org/.
Web Services
A set of standards that serves as one
possible way of realizing a SOA infrastructure.
Initially started with the core standards
XML, HTTP, WSDL,
SOAP, and UDDI, it now contains
over 60 standards and profiles
developed and maintained by different standardization organizations,
such as W3C, OASIS, and WS-I.
Workflow
Similar to a business process,
a description of the activities or tasks
that have to be done to fulfill a certain business need.
Some people differentiate between workflows and business processes by
stating that business processes describe more
generally what has to be done while workflows
describe how activities or tasks should
be carried out.
WS
General abbreviation for Web Services.
Also used as common prefix for Web Services standards.
WSDL
Web Services Description Language.
An XML-based language that describes
service interfaces from a technical
point of view.
Although it is a Web Services
standard, WSDL can also be used for other infrastructures.
WS-I
Web Services Interoperability Organization.
An open industry organization that standardizes
Web Services standards as profiles
to make them interoperable.
See http://www.ws-i.org/.
XML
eXtensible Markup Language.
A human-readable general-purpose notation widely used for the description and
exchange of data.
Specific XML formats can be defined by and validated against
an XML schema definition.
XML Schema Definition
(XSD)
A language used to describe a set of rules to which a
corresponding XML
document must conform in order to be considered valid.
It includes a set of basic data types.
Disclaimer: Very often
there are conflicting definitions of a SOA term available. In doubt this
glossary uses therefore the meaning that fits best in my opinion and correspondes
with how the terminology is used inside "SOA
in Practice". See [WS-Glossary]
for another glossary of the Web Services community.
For updates and feedback please send an email to soa-glossary@josuttis.com
(if you click on it to reply, you have to replace "_AT_" by "@").
Note however that I get a lot of emails so that I might not be able to answer
immediately. In addition, we have the problem of spamming. For this reason,
please use a proper
subject, use plain text, and keep the size of the email below 100kB. If you
don't get an answer after a certain period of time, you might try it again (with
different wording) to make sure the email was not caught by a spam filter.
You are visitor no:
Copyright 2007 by Nicolai
M. Josuttis