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 doesn’t 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 what’s 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 don’t receive a confirmation, you don’t 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. OMG’s 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 doesn’t 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 consumer’s 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 didn’t 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