Enterprise Service Bus (ESB) pattern

Welcome to today’s session, where we’ll be diving into the Enterprise Service Bus (ESB) pattern—a crucial architectural approach that can streamline and simplify communication between the various systems within your organization. If you’re dealing with multiple systems that need to interact, you’ve likely encountered the challenges of tangled dependencies and complicated integrations, commonly known as “spaghetti architecture.” In this video, we’ll explore how implementing an ESB can transform this chaos into a clean, efficient, and scalable solution. We’ll cover the fundamental concepts, the benefits of adopting an ESB, and give you a sneak peek into how you can leverage this pattern on Azure. Whether you’re an architect, developer, or IT decision-maker, this video will provide valuable insights into why the ESB pattern might be the key to solving your integration headaches. Let’s get started!

Today, we’re going to talk about the Enterprise Service Bus (ESB) pattern and why you need one. In almost every organization, you have multiple systems. What tends to happen over time is that someone says, “Oh, I need my system to talk to that one. I need my point of sale to communicate with my financials.” Then, the financial system says, “Oh, I need to talk to the warehouse.” The warehouse might then say, “Oh, I need to talk to the product catalog.” The product catalog might also need to communicate with the financials. But then, the point of sale needs the product catalog, so you get a connection there. Over time, you find that every system ends up having to talk to every other system, and you end up with the proverbial spaghetti. This creates a lot of problems. Not only does it look like a mess, but when you try to maintain it, there’s confusion about which system needs to be changed when one interface is updated. You may think, “I only need to change this in four places,” but that system also needs to communicate with all those other systems.


So, you get loads of spaghetti—bad. This situation creates hard dependencies on other systems—bad. If I want to change one system, I potentially have to make loads of other changes because, if I change one interface, I suddenly have to change this system, and that system, and another system. The cost of change is bad. If anything goes wrong with one of these systems, it affects everything else—it’s brutal and bad. We don’t have that level of isolation because everything has knowledge of everything else. Moreover, a system can’t always do its work because it has to wait for all the others, leading to performance issues—also bad. To help solve this problem, various patterns have been developed over time. If we get rid of all this red spaghetti, what we do instead is implement an Enterprise Service Bus. Note that an Enterprise Service Bus is a pattern, not a product. So, in the middle, we put in an ESB.


This means that System A can talk to the ESB, and so can Systems B, C, D, E, and every other system you have. Now, each of these systems has its own data format or schema and protocol. For example, System A might communicate with REST, System B might use SOAP, System C might have flat files, and System D might use some other outdated mainframe TCP/IP. However, System A doesn’t need to know about TCP/IP. All it needs to do is send a message to the ESB, and then it can forget about it. The advantage here is that if you want to replace that outdated mainframe system with a more modern one, say System D Plus, you only need to change the one link to the ESB. Everything else remains the same. You’ve isolated all the other systems from that change, which is a significant advantage. It reduces the impact when you need to make a change. Additionally, as we replace old systems with SaaS solutions and move things to the cloud, this pattern makes gradual cloud and SaaS migration much easier—a big advantage for you.


So why would you want an Enterprise Service Bus? Well, it provides a clean architecture. You know where everything is, and each system has its own responsibility. The Enterprise Service Bus has its responsibility. You’ve achieved isolation in that the ESB handles the translation, but that’s the limit of it. When you need to change an interface, protocol, schema, or an entire system, it’s isolated. Another benefit is that if one system fails, it might not affect another at all because the functioning system can still send messages to the ESB, even if another system is down. When the issue is resolved, the messages will flow through, providing fault tolerance. Additionally, the ESB allows for business process orchestration. For example, if I receive a customer order on my website, that order needs to generate a sales order in the financial system and then go to the warehouse for dispatch. With an ESB, I can orchestrate this process, automating it across various systems.


There’s also the performance aspect to consider. While you do need to worry about the performance of your ESB—because nothing comes for free—if you’re building it on modern, cloud-based technologies, you should have the scalability needed. As long as it’s done correctly, performance should be manageable. In general, if you have multiple systems that need to talk to each other, you want to implement the ESB pattern. In the next video, we’ll discuss how to do that on Azure.

Chat to us about your Integration journey

Get in touch
BizTalk Migration Funding








    Share this post