Skip to main content

What is an ESB?

ESB is another of these amorphous terms that means different things to different people.
An ESB can be thought of as the next generation of Service Oriented Architecture. Everybody knows web services today, and they have been used extensively to allow companies to break the tyranny of proprietary architectures. Now you can wire applications to service providers without having to know or worry about the provider's underlying operating system or programming language.

It is an architectural concept/construct - not a technology, despite some vendors (and even gartner) telling you otherwise. You'll find many different types of technology can fulfil the conceptual role of an ESB, hence be careful not to associate it with a particular technology. Therefore designing the architecture is more important than choosing a 'product'.

An Enterprise Service Bus (ESB) is the "backbone" of the service-oriented architectural model which allows different protocols to be communicated throughout the organisation. With the onset of many different protocols for sharing information for web services, aggregation, remote calls etc. there were a range of different protocols invented to handle these. Protocols such as SOAP, REST, xmlrpc, JMS, RSS, atom and the list goes on. These and more standard protocols such as smtp, nntp etc can all be managed for easier communication between endpoints by the ESB. Think of it as a "protocol translator" for your service-oriented architecture.

Enter the ESB. With the use of an Enterprise Services Bus, the service providers now advertise their services with the bus. "Here is a GeoCoding service", "Here is a service for posting transactions to the General Ledger" and so on. Now when a service wants to post to the GL, it will subscribe to the service by its identity and not its location (where identity is something like "accounting.gl.posting").

Obviously this breaks you of the tyranny of dealing with large numbers of web services that all talk to each other. It provides you a central common point for dealing with security, providing transactional support and guaranteed delivery instead of dealing with multiple different ways of doing these things.

Network Administrators also get one dashboard to view traffic between service providers and subscribers, instead of a mix of in-house developed and third party solutions.


And at the end of the day, this is where an ESB will save you money. It does not generate money in and of itself, but it greatly improves developer productivity, shortens development cycles and greatly simplifies the maintence of the application in production. As I said right at the start, the ROI depends on how much pain you are feeling with SOA today in a complex environment.

The picture shows how ESB is used in a typical enterprise application.

Comments

Popular posts from this blog

SAAS Simple Maturity Model

There are two architectural models – commonly referred as SAAS Maturity models- that describe the transition of a service to what is called Multi-tenant efficient, highly scalable application. The SAAS Maturity model described by Microsoft has four distinct stages and is illustrated below. Another similar well-known model for SaaS-maturity is known as Forrester-model but adds another stage known as "Dynamic Business Apps-as-a-service". The three key Attributes of a SAAS Architecture: Configurability: Metadata used to configure the way the application behaves for customers Multi-tenant Efficiency : Maximizing the sharing of resources across tenants Scalability: Maximizing concurrency, resource efficiency SAAS Simple Maturity Model (Microsoft, 2006) SaaS Maturity Model (Forres

SpringBoot : Performance War

Reactive Systems are designed to address challenges posed by modern software systems - the challenges related to large number of users and high throughput. Reactive systems are expected to be highly responsive, resilient, elastic and message driven. In this article we will: Build a set of fully non-blocking REST API using SpringBoot 2.0, WebFlux and Reactive Redis. Performance test the above Reactive APIs against the traditional non-reactive APIs. The code used in this example can be downloaded from GitHub Step 1: Create a skeleton Reactive WebFlux SpringBoot project Create a SpringBoot maven project using - https://start.spring.io/ Add the following dependencies: spring-boot-starter-web spring-boot-starter-data-redis spring-webflux spring-boot-starter-data-redis-reactive Refer to the dependencies in pom.xml Step 2: Create Domain Objects The demo project uses the domain objects Customer and Account . A customer can have multiple accounts.

Web Service Framework comparison

Web Services is one of those concepts made all the more difficult to understand because of the myriad acronyms and abbreviations that are superfluous in any discussion. Covering all the concepts and standards associated with Web Services is a vast topic in itself. There are a large number of standards around Web Services. These standards define the norms of a Web Services implementation and ensure that a Web Services is accessed independently of the client platform. There are numerous frameworks available to select to build web service today. Below is the most widely used ones. Product Does it fit my need? Axis2.0 Apache Axis2 is a complete re-design and re-write of the widely used Apache Axis SOAP stack to build on the lessons learnt from Apache Axis. An advantage of Axis 2 is its support for the binding frameworks XMLBeans. Axis 2 with XMLBeans is widely