Enterprise service bus

From Wikipedia, the free encyclopedia
Jump to: navigation, search
All customer services communicate in the same way with the ESB: the ESB translates a message to the correct message type and sends the message to the correct producer service.

An enterprise service bus (ESB) is a software architecture model used for designing and implementing communication between mutually interacting software applications in a service-oriented architecture (SOA). As a software architectural model for distributed computing it is a specialty variant of the more general client server model and promotes agility and flexibility with regard to communication between applications. Its primary use is in enterprise application integration (EAI) of heterogeneous and complex landscapes.

Overview[edit]

The concept has been developed in analogy to the bus concept found in computer hardware architecture combined with the modular and concurrent design of high-performance computer operating systems. Motivation was to find a standard, structured and general purpose concept for describing implementation of loosely coupled software components (called: services) that are expected to be independently deployed, running, heterogeneous and disparate within a network. ESB is also a common implementation pattern for service-oriented architecture, most commonly in Java-based ecosystems.

Duties[edit]

An ESB transports the design concept of modern operating systems to networks of disparate and independent computers. Like concurrent operating systems an ESB caters for commodity services in addition to adoption, translation and routing of a client request to the appropriate answering service.

The prime duties of an ESB are:

  • Monitor and control routing of message exchange between services
  • Resolve contention between communicating service components
  • Control deployment and versioning of services
  • Marshal use of redundant services
  • Cater for commodity services like event handling, data transformation and mapping, message and event queuing and sequencing, security or exception handling, protocol conversion and enforcing proper quality of communication service

Ambiguous use of the term ESB in commerce[edit]

There is no global standard for enterprise service bus concepts or implementations.[1] Most providers of message-oriented middleware have adopted the enterprise service bus concept as de facto standard for a service-oriented architecture. The implementations of ESB use event-driven and standards-based message-oriented middleware in combination with message queues as technology frameworks.[2] However, some software manufacturers relabel their existing middleware and communication solutions as ESB without adopting the crucial aspect of a bus concept.

History[edit]

The first published usage of the term "enterprise service bus" is attributed to Roy W. Schulte from the Gartner Group 2002 and the book The Enterprise Service Bus by David Chappell.

  • Service - denotes non-iterative and autonomously executing programs that communicate with other services through message exchange
  • Bus - is used in analogy to a computer hardware bus
  • Enterprise - the concept has been originally invented to reduce complexity of enterprise application integration within an enterprise; the restriction has become obsolete since modern Internet communication is no longer limited to a corporate entity

In fact, the term "bus" was created in the 1980s by Teknekron Software Systems[citation needed]. Frustrated by how software seemed to always under-deliver, while hardware was always on time and under budget, Vivek Ranadivé set out to build software based on the premise of a "Software Bus" (which later became known as "The Information Bus" or TIB), where a "bus" is the standard data highway by which various elements—such as a computer system such as the CPU, the memory, the I/O devices, etc.—communicate. This concept would allow for the "tight" coupling of applications.

In 1986 Teknekron Corporation embarked on a consulting project with Goldman Sachs to redefine the "trading floor of the future" applying this approach. In 1987 the first TIB—for the integration and delivery of market data such as stock quotes, news, and other financial information—went live at Fidelity[citation needed], followed by First Interstate Bank[citation needed], then Salomon, eventually digitizing all of Wall Street[citation needed]. Teknekron was later acquired by Reuters in 1994[citation needed] to expand its use of the Information Bus in the financial services markets. In January 1997, Ranadivé founded Tibco Software Inc. to create and market software for use in the integration of business applications outside the financial services sector. In 1998 TIBCO Software released TIB/ActiveEnterprise suite. In July 1999 TIBCO went public on the NASDAQ Stock Market[citation needed] under the ticker symbol TIBX. TIBCO stands for The Information Bus Company.

ESB as software[edit]

The ESB is implemented in software that operates between the business applications, and enables communication among them. Ideally, the ESB should be able to replace all direct contact with the applications on the bus, so that all communication takes place via the ESB. To achieve this objective, the ESB must encapsulate the functionality offered by its component applications in a meaningful way. This typically occurs through the use of an enterprise message model. The message model defines a standard set of messages that the ESB transmits and receives. When the ESB receives a message, it routes the message to the appropriate application. Often, because that application evolved without the same message model, the ESB has to transform the message into a format that the application can interpret. A software adapter fulfills the task of effecting these transformations, analogously to a physical adapter.

ESBs rely on accurately constructing the enterprise message model and properly designing the functionality offered by applications. If the message model does not completely encapsulate the application functionality, then other applications that desire that functionality may have to bypass the bus, and invoke the mismatched applications directly. Doing so violates the principles of the ESB model, and negates many of the advantages of using this architecture.

The beauty of the ESB lies in its platform-agnostic nature and the ability to integrate with anything at any condition. It is important that Application Lifecycle Management vendors truly apply all the ESB capabilities in their integration products while adopting SOA. Therefore, the challenges and opportunities for EAI vendors are to provide an integration solution that is low-cost, easily configurable, intuitive, user-friendly, and open to any tools customers choose.

ESB hive of commodity components

Characteristics[edit]

Most observers[who?] accept certain core capabilities as functions of an ESB:

Category Functions
Invocation support for synchronous and asynchronous transport protocols, service mapping (locating and binding)
Routing addressability, static/deterministic routing, content-based routing, rules-based routing, policy-based routing
Mediation adapters, protocol transformation, service mapping
Messaging message-processing, message transformation and message enhancement
Process choreography[3] implementation of complex business processes
Service orchestration² coordination of multiple implementation services exposed as a single, aggregate service
Complex event processing event-interpretation, correlation, pattern-matching
Other quality of service security (encryption and signing), reliable delivery, transaction management
Management monitoring, audit, logging, metering, admin console, BAM (BAM is not a management capability in other words the ESB doesn’t react to a specific threshold. It is a business service capability surfaced to end users. )
Agnosticism general agnosticism to operating-systems and programming-languages; for example, it should enable interoperability between Java and .NET applications
Protocol Conversion comprehensive support for topical communication protocols service standards
Message Exchange Patterns support for various MEPs (Message Exchange Patterns) (for example: synchronous request/response, asynchronous request/response, send-and-forget, publish/subscribe)
Adapters adapters for supporting integration with legacy systems, possibly based on standards such as JCA
Security a standardized security-model to authorize, authenticate and audit use of the ESB
Transformation facilitation of the transformation of data formats and values, including transformation services (often via XSLT or XQuery) between the formats of the sending application and the receiving application
Validation validation against schemas for sending and receiving messages
Governance the ability to apply business rules uniformly
Enrichment enriching messages from other sources
Split and Merge the splitting and combining of multiple messages and the handling of exceptions
Abstraction the provision of a unified abstraction across multiple layers
Routing and Transformation routing or transforming messages conditionally, based on a non-centralized policy (without the need for a central rules-engine)
Commodity Services provisioning of commonly used functionality as shared services depending on context

² While process choreography supports implementation of complex business processes that require coordination of multiple business services (usually using BPEL), service orchestration enables coordination of multiple implementation services (most suitably exposed as an aggregate service) to serve individual requests..

Lightweight service bus technologies[edit]

Lightweight service bus technologies have many of the characteristics of an ESB. These solutions often focus on low-level ESB functions, such as connectivity, routing and transformation, and require coding or scripting to implement orchestration.[4] Developers operating at a project or tactical level, e.g., just trying to fix a problem, often gravitate toward lightweight service bus technologies, but there is often ongoing tension between these initiatives and an enterprise architecture whose goal it is to optimize infrastructure across multiple projects.[5]

Key benefits[edit]

  • Increased flexibility; easier to change as requirements change
  • Scales from point-solutions to enterprise-wide deployment (distributed bus)
  • More configuration rather than integration coding
  • No central rules-engine, no central broker
  • Easy plug-in and plug-out and loosely coupling system
  • Incremental patching with zero down-time; enterprise becomes "refactorable"

Key disadvantages[edit]

  • Tightly-couples the entire system, which leads to more impactful deployments and eventually, lower throughput of software changes to the user
  • The ESB often becomes very complicated and unwieldy
  • Increased overhead
  • Slower communication speed, especially for those already compatible services

See also[edit]

Existing ESB products[edit]

A more complete overview can also be found in the Comparison of business integration software article.

Books[edit]

References[edit]

  1. ^ Lapeira, Raul. "ESB is an architectural style, a software product, or a group of software products?". Artifact Consulting. Retrieved 2010-04-16. The first thing a ESB architect should have in mind is that as of 2010 there is no global standard for ESB. 
  2. ^ Curry, Edward. 2004. "Message-Oriented Middleware". In Middleware for Communications, ed. Qusay H. Mahmoud, 1-28. Chichester, England: John Wiley and Sons. doi:10.1002/0470862084.ch1. ISBN 978-0-470-86206-3
  3. ^ Richards, Mark. "The Role of the Enterprise Service Bus (presentation)". Retrieved 2009-06-04.  "I do not consider process choreography part of an ESB, if we consider an ESB as a high-speed messaging middleware. However, I do consider process choreography part of the ESB *platform*. Fortunately most ESB vendors separate out these major components into different products, but package them under a consolidated ESB offering. So, in the strictest sense of the word, no, I would not consider it as part of an ESB. It is a related capability."
  4. ^ Feraga, Matthias (6 Jun 2011). "How to: choosing between lightweight and traditional ESBs". Octo. Retrieved 23 April 2014. 
  5. ^ Fulton, Larry (12 Sep 2007). "Learn How to Embrace Lightweight ESBs". Forrester Research. Retrieved 23 April 2014. 

External links[edit]