Point-to-Point, Broker, ESB: Which Integrations Help Build a Loosely Coupled IT Architecture

How to choose between point-to-point, a broker, and ESB to build a flexible IT architecture without unnecessary coupling.

  • What does a loosely coupled architecture with effective integrations look like?
  • Core components of any integration
  • "Point-to-point"
  • Advantages of the point-to-point approach

25.7.2024 In this article, we look at which types of integration help build a loosely coupled IT architecture and which lead to a monolith.

We evaluate each integration type, point-to-point, broker (Kafka), and enterprise service bus, across five parameters. Reading time: 11 min.

Loose coupling is the foundation of a flexible IT infrastructure.

At the same time, the mere presence of integrations in a landscape is not an indicator of a monolith or its absence.

What matters is how these integrations are implemented.

One approach can lead to a tangle of hard-to-maintain connections and, as a result, difficult business scaling.

The other is to a landscape that can be changed and improved quickly on the fly

This article explains how integration approaches affect coupling and which method to choose to keep a company landscape loosely coupled.

We already touched on integration approaches in one of our earlier articles→; today we will look at this topic specifically from the perspective of building a loosely coupled architecture and business flexibility.

What does a loosely coupled architecture with effective integrations look like?

Before choosing an approach or tool, it is worth defining a benchmark and looking at how everything should work in the ideal case.

Below are the five main criteria for the ideal state of integrations: any integration/service in the landscape can be changed easily and quickly without affecting how the landscape works; such an integration handles peak loads and works without delays; a new data flow can be launched without modifying services; an error in one service does not cause problems in others; monitoring is easy and can be delegated to support instead of the development team. Integration efficiency depends on the relationships between components.

Let us look at the key components.

Core components of any integration

Regardless of the integration type, all of them include: a source system; an information receiver; an ETL layer (extract, transform, load); and a data store, the place where transferred information is written. This list does not reflect the nuances and logic of each specific integration.

But it will definitely make it easier to understand the pros and cons of each approach, since the properties of a specific integration depend on where the ETL functions and storage are located relative to the systems.

"Point-to-point"

The simplest and most understandable type of integration

And this is what most often characterizes monolithic systems. Imagine one service and another service exchanging information through direct integrations with each other.

There can be several such integrations in both directions

For example, one integration with 1C exports products to the website, a second sends new orders from the website to 1C, a third brings updated order statuses from 1C to the website, a fourth...

The list goes on endlessly

In this integration, ETL and the store are located inside the systems themselves. The source system extracts information from its databases and transforms it into a form convenient for consumption. The receiving system stores the information for further processing.

No intermediaries, extra storage, or shared context.

Advantages of the point-to-point approach

The fastest integration type in terms of development: off-the-shelf APIs and minor customizations are enough.

The development teams for different services agree on how they will be used.

This kind of integration is set up quickly, especially when there are only a few services in the environment.

Building a direct integration with simple logic is an inexpensive task.

Downsides of the point-to-point approach

There are more downsides to this integration. Strong interdependence between systems. For example, for a user to place an order, the online store must receive from 1C information about loyalty program status and the user's address. If 1C goes down or slows under heavy load, critical information will stop reaching the online store. Customers will not be able to place orders until 1C is restored.

What about coupling?

  1. Ease and speed of modifying integrations/services: Does not comply.

  2. A change in one system requires changes in related systems, which makes enhancements more difficult and slower.

  3. Handles peak loads and works without delays: Partially complies.

  4. Initially, integrations work quickly, but as the number of requests grows, the source system can become overloaded, leading to delays.

  5. Launching a new data flow without modifying services: Does not comply.

  6. Launching new data streams requires changes in each of the integrated systems.

  7. No problems in other services when one fails: Does not comply.

  8. An error in one system can cause problems in others because they are tightly interconnected.

  9. Ease of monitoring and ability to delegate to support: Does not comply.

  10. Monitoring is difficult because of the high interdependence of systems, which requires the development team to be involved. Result: 0.5 points of loose coupling out of

  11. If tightly coupled monoliths are not your goal, integrations

"Point-to-point"

best avoided.

Take the IT Architecture Quick Test

Find out whether you have a monolith or a loosely coupled architecture Take the test

Assess where AI can deliver impact in your process

Integration via a broker

In this type of integration, a message broker is added as an intermediate layer between the source and receiving systems. The systems do not interact with each other, only with Apache Kafka, RabbitMQ, or a similar service. IT systems still initiate sending and receiving information. In this integration model, the information store is moved outside the end systems: if the information has already reached the broker, the receiving system will take it from there at the agreed time.

ETL logic still remains on the side of the systems participating in the integration: responsibility for extraction, transformation, and loading is distributed between the source system and the recipient system.

Pros of broker-based integration

Data exchange becomes more controlled

In a broker, you can see which messages were sent, which were delivered, review logs, and view an event history. Source systems do not need to check whether the receiving system is available when a message is sent. Their responsibility is only the logic for building their own message queue.

Message brokers usually support contracts, meaning they validate messages against basic rules, such as the presence of a specific field in the required format.

This kind of integration makes development more standardized.

Almost every service has tools for connecting a broker

That means there is no need to build from scratch, invent workarounds, or reinvent integration logic every time.

A broker, like point-to-point, supports high data transfer speeds between services.

Drawbacks of broker-based integration

The broker burdens the source system with unnecessary actions.

If the broker was unavailable for some time, no new messages were added to the queue during that period.

The broker itself does not know what and which system tried to send to it

Accordingly, the source system has to check which message was last in the queue and resend everything that accumulated while it was unavailable.

The broker burdens the receiving system with unnecessary data.

A broker cannot choose which messages to pass on; it delivers the entire queue. For example, all assortment information or WMS data on warehouse stock, even if most of it is not needed by the receiving system.

But the latter still stores them in its own databases and, through internal logic, separates the 5% of required data from the 95% that is unnecessary.

Using a broker leads to contract hardening.

All participants in the process must agree on the format in which messages will be transmitted.

This removes flexibility and increases the labor costs of maintaining a single format.

Another downside is the lack of convenient and/or detailed retrospective analysis

For example, Kafka as a broker can store historical data, but if something breaks, you will have to reload the entire message queue from the earliest historical record to the latest one.

It is impossible to run any queries on current statuses.

The problem is most acute when you need to share history with another team or perform a migration.

Slower data reads

On the one hand, systems quickly exchange the full stream of messages, but on the other, it is hard to determine what is current and eliminate duplicates.

There is also a non-obvious managerial downside

Each system has its own product owner, while the broker is most often owned by the technical department.

For other departments, this is a plus (less responsibility), but in the end none of the interested departments feel they have control over the infrastructure.

What about coupling?

Ease and speed of modifying integrations/services: Partially complies.

Data exchange is standardized, but the need to maintain a single data format can limit flexibility.

Handles peak loads and works without delays: Partially complies.

The integration supports high data transfer speeds, but the source system may become overloaded due to excessive actions and data.

Launching a new data flow without modifying services: Does not comply.

A new data flow requires validation and possibly changes to comply with the broker's contracts.

No problems in other services when one fails:

Partially complies

The source system is independent of the receiving system's availability, but broker overload can cause delays.

Ease of monitoring and ability to delegate to support: Partially complies.

The broker allows data and logs to be monitored, but the complexity of retrospective analysis and event detail can make full delegation to support difficult. Total: 2 points of loose coupling out of

Integration via an ESB

  1. ESB is a practical tool for implementing integrations in a loosely coupled architecture. Integration through the ESB layer includes: source systems and consumers.

  2. A separate layer of ETL microservices that receive and send data, transform it, and normalize information.

  3. Data format, transfer speed, update frequency, all of this logic lives here. A separate storage landscape.

  4. It can be implemented in different ways: some buses support open-source solutions such as PostgreSQL or MySQL, while others use internal storage.

  5. All three components are separated and perform their own functions: the system generates and consumes data, the ETL layer delivers it to the right destination and in the required format, and the repositories, logically, store the data.

Pros of using a service bus

The load on each system becomes manageable.

The service's job is to provide access to the data via API (if it is a modern service), FTP, or any other available method. The ETL layer will fetch the data itself and pass it on to the store.

The service only cares that all information it is responsible for is current and complete at the moment of transfer.

Any system can be connected to the environment quickly, and enhancements can be made in any order.

This aspect is the main condition for effective business scalability.

Here is an example of how we solved a scalability problem by introducing an ESB layer at a company that manufactures electrical equipment and comprehensive energy-efficient solutions.

The bus handles information filtering

ESB sends a service only the data it actually needs - it is enough to build that logic into the connector.

Integrations are standardized, and service logic becomes simpler. The ETL layer uses standard logic for receiving and sending data.

Developing new connectors comes down to reproducing already built logic with adjustments for a specific data type or system-specific characteristics.

Development and monitoring can be delegated. This advantage follows from the previous one.

Development becomes simpler, and monitoring responsibilities can be taken off developers and delegated to support.

A properly built ESB integration implies fault tolerance of the entire IT architecture.

Services do not exchange data directly: the ETL layer stores it in dedicated repositories and retrieves the current version from there when needed.

Drawbacks of using a bus

Broadly, there are two: effort required at the start

To build the right integrations, you need to analyze the IT architecture: define areas of responsibility and identify necessary and redundant information. On average, implementing an ESB layer takes 15-20 months before MVP launch.

A fairly high upfront cost.

Right from the start, you have to pay for business analysis, designing the integration logic, and implementing bus tools such as the ETL layer, DWH, and so on.

Here we broke down in detail the costs of implementing the ESB layer at each stage.

What about coupling?

Ease and speed of updating integrations/services: Meets the benchmark.

Services can be easily enhanced or new ones connected thanks to the separation of the ETL layer and the data store.

Handles peak loads and works without delays: Complies

ESB makes it possible to control the load on each system, ensuring stable operation under peak loads.

Launching a new data stream without modifying services: Yes.

A new data flow can be launched without modifying services, since the data transfer logic is managed in the ETL layer.

No problems in other services when one fails: Meets the benchmark.

An error in one service does not affect others thanks to data isolation in the ETL layer and storage.

Ease of monitoring and the ability to delegate to support: Meets the benchmark.

Integration monitoring can be delegated to support, since ESB provides the necessary tools for observation and management. Total: 5 points of loose coupling out of

Important: choosing the right integration tool is not a magic fix for a monolith

  1. It is often believed that implementing a broker or ESB will solve all IT landscape problems. But that is not the case.

  2. It is impossible to build the right architecture without separating responsibilities and eliminating coupling.

  3. Even after introducing a bus, the architecture can remain monolithic if service boundaries are split incorrectly or the ETL connector logic is overcomplicated.

  4. As a result, the team endlessly generates code instead of making integrations simple and clear.

  5. Instead of loose coupling and fault tolerance, the result is an architecture that is hard to maintain.

  6. A misunderstanding of the approach or lack of experience with ESB can lead the implementer to build the integration incorrectly, for example by shifting unnecessary business logic to the intermediate layer.

  7. This affects both immediate development speed and the cost of future enhancements.

  8. To keep things from getting to that point, you need a competent implementation team: the entry threshold here is higher than for integrations

"Point-to-point"

.

Discuss the article: Point-to-point, broker, ESB: which...

Send via: