ESB (Enterprise Service Bus)

What is ESB?

An ESB, or enterprise service bus, fundamentally it’s a service-oriented architecture (SOA). Helps to communicate between numerous, distributed software applications. The key feature of the ESB architecture is to integrate different applications by putting a communication bus in the middle and enabling each application to talk through the bus in a consistent and manageable way.

The ESB (Enterprise service bus) concept was born to move away from P2P (Point-to-point), tightly coupled integration between applications, which becomes brittle and unmanageable over time. The new system onboard required changes on all the existing applications to support the newly onboarded application. Point-to-point integration results in custom integration code being implemented in both applications and there has no central way to monitor, troubleshoot or manage.

ESB provides a more flexible approach to application integration and allows to communicate without dependency on or knowledge of other systems on the bus.

Why use an ESB?

In the current market situation, every organization wants to achieve agility by reducing time to market for new initiatives is the common reason to implement ESB as the backbone of their infrastructure. ESB facilities this by providing an easy, well-defined, “pluggable”, future-ready system.

  • The “Bus” concept decouples applications from each other. By using messaging protocols like AMQP or JMS it can be achieved.
  • Data Travels through the bus in a canonical format. This means there is one consistent message format travelling on the bus to communicate internally.
  • Provides security, data consistency by managing transactions. Message routing, Error Handling, Logging, Auditing and Various type of Monitoring and alerting.

Do I need an ESB?

ESB offers real value when there are at least a few integration points (at least 3 applications) to integrate. Also suited to achieve the loose coupling scenario between applications, where scalability and robustness are required.

Below is a few ESB selection checklist:

  1. Do you need to integrate 3 or more applications/systems?
  2. Have a plan to plug in more applications in future?
  3. Do you need to use multiple communication protocols?
  4. Do you need message routing capabilities or content-based routing?
  5. Do you need to aggregate messages from multiple source systems?
  6. Need to implement service that will be used by other applications?
  7. Is Bulk message processing required?
  8. Is data transformation, filter, and re-sequence required?

Integration Principals:

ESB architecture builds with some integration principles:

  • Orchestration:  Instead of implementing a single composite service, it can be achieved by using multiple small services and chaining them. That also promotes reusability and manageability of the underlying components.
  • Data Transformation: Canonical data format helps to simplify the data transformation to an application-specific data format.
  • Transportation: Handles transport protocol negotiation between multiple formats like JMS, JDBC, HTTP/S, and FTP.
  • Mediation: Providing multiple interfaces to support multiple versions, backward compatibility, and allowing multiple channels to use the same component to get expected data formats like flat file, XML, JSON, CSV etc.
  • Non-functional consistency: Includes Data consistency by using transaction, Security by enforcing policies. Achieve High Available (HA) goals to make a service scalable and element single point of failure.

Choosing of ESB Platform:

When choosing an ESB (Enterprise Service Bus), there are several important factors to consider, including:

  1. Integration capabilities: The ESB should support the integration of various applications and systems, such as databases, ERP systems, and legacy applications.
  2. Scalability: The ESB should be able to handle increasing demands for processing and data storage as the number of connected systems and applications grows.
  3. Performance: The ESB should be able to process a large number of requests and messages in a timely and efficient manner.
  4. Security: The ESB should provide strong security features, such as encryption and authentication, to protect sensitive data as it’s being transported and processed.
  5. Interoperability: The ESB should be compatible with various platforms, technologies, and standards, and should support the integration of diverse systems and applications.
  6. Flexibility: The ESB should be configurable and customizable, and should allow for the creation of custom integration flows and transformations.
  7. Support and maintenance: The ESB should come with adequate support and maintenance services, including regular software updates, bug fixes, and technical support.
  8. Cost: The ESB should be cost-effective, and should provide a good return on investment in terms of reduced development and maintenance costs, improved efficiency, and increased agility.