Nowadays Enterprises are typically comprised of hundreds or thousands of applications that are custom-built, in order to support common business processes and data sharing across applications, these applications need to be integrated while integration isn’t necessarily a new problem, enterprise integration is no easy task because point-to-point communication normally has issues with scalability. These integration issues are further compounded with increased systems.
Nevertheless in the enterprise world there are patterns, a pattern is like an advice that describe solutions to frequently recurring problems, Used properly, it can help fill the wide gap between the high-level vision and the actual system implementation.
Among these we can find:
- Information Portal
- Data Replication,
- Ared Business Function
- Service-Oriented Architecture
- Distributed Business Process
- Business-to-Business Integration.
SOA, its definition from wikipedia says: “A service-oriented architecture (SOA) is a style of software design where services are provided to the other components by application components, through a communication protocol over a network ...”
However, in this book, Patterns: Implementing an SOA Using an Enterprise Service Bus book, the author says that enterprises that wish to implement an SOA need a more sophisticated, manageable infrastructure that can support high volumes of individual interactions, for this needs the Enterprise Service Bus allows client code to invoke services in a manner that is independent of the service location and communication protocol that is involved
So An enterprise service bus, also known as ESB, is a software architecture model used for designing and implementing communication between mutually interacting software applications in a service-oriented architecture, or SOA. In short, it’s an architecture used to integrate heterogeneous systems.
The advantage of implementing this architecture is that it reduces the number of point-to-point connections between communicating applications.
In further reading about the ESB, Ross Mason's blog talks about key factors that help determine when to implement an ESB.
Answering the questions Mason asks is a good start to thinking about if you need to implement an ESB or not and find the right software solution. While there are a lot of vendors on the market, I want to talk about my experience with Mule.
From the Mule Website
"Mule, the runtime engine of Anypoint Platform is a lightweight Java-based enterprise service bus (ESB) and integration platform that allows developers to connect applications together quickly and easily, enabling them to exchange data. It enables easy integration of existing systems, regardless of the different technologies that the applications use, including JMS, Web Services, JDBC, HTTP, and more. The ESB can be deployed anywhere, can integrate and orchestrate events in real time or in batch, and has universal connectivity."
You can use Mule to create integrations for many different use cases. From the most basic flows that allow you to create a simple application to more involved features that handle complex data, Mule can get the job done. Not to mention, each Anypoint connector was deployed with little effort and created the Mule flows in a matter of minutes. An interesting feature I saw was that the platform also enhances speed and improves productivity because it has pre-built connectors and templates, and you can also create your own connectors. This sort of architecture helps you scale up and scale out as your needs evolve.
I want to point out some key characteristics of Mule that I read about in dzone.
The Anypoint Platform is a tool written entirely for developers. We were building new Anypoint connectors for certifications, which facilitate the integration of Mule applications with our client’s APIs. This way we could provide a standard integration point and access web services and resources.
The development of the three connectors was completed in a couple of months and it has a ton to offer.
I was able to help with three projects where my main role was to create and implement a test for the endpoints and then make modifications or adjustments based on the results. Since it was open source, I was able to clone some connectors from the Mulesoft repository and see the structure of each project.
If you are interested in creating your own new Anypoint connector for your business, I would suggest you read the following tutorials about Create an Anypoint Connector DevKit and Use an Anypoint Connector.