Middleware is software that connects other software together. The name makes its meaning obvious: software that sits in the middle. This is shown in the diagram below.
As shown in figure 1, software Application 1 can connect directly to software Application 2. Connecting Application 1 and Application 2 directly is called point to point integration. Or Application1 and Application 2 can be connected together via middleware. Integration using a middleware is shown in Figure 2.
If Application 1 and Application 2 can connect directly with each other, why is middleware needed at all ? The answer has to do with creating reliable and long-lived designs and architectures.
Why do we need connection between applications(apps) ? So that they can communicate with each other. This communication normally happens using messages. A message is a unit of communication between apps. Messages can be exchanged in either direction over a connection.
Let us take an example: Integration between CRM(Customer Relationship Management) and Billing in a Telecom scenario. The CRM app stores all the customer information: his address, contact details, his interactions with the customer service rep. etc. Now suppose the customer service rep(CSR) using the CRM needs to look at a customer’s bill payment history ? The CSR will need to get this information from the Billing system. This is where integration is useful. If the CRM app is connected to the Billing app, the CRM app can fetch the customer’s billing history from the Billing System and show it to the customer service rep(CSR).
If there is no connection between the CRM and the Billing apps, the CSR will have to log in to the Billing System and get the billing history of the customer. This may sound simple: why doesn’t the CRS just log into the Billing app ? Consider that the CSR now wants to get some details of the customer’s phone call. These details are not available in the Billing app. The CSR will then need to log into yet another application. The need for integration increases as the number of application in the technology landscape increases. Diagrams 3 and 4 compare the differences in complexity when we integrate a large number of apps.
Challenges in integration and how middleware helps:
|Integration challenge||How middleware helps|
|Message reliability||Messages can be persisted at the middleware layer, to avoid loss of messages|
|Application availability||Even if the receiving app is not available the middleware can persist the message and deliver it later|
|Orchestrating multi-step integrations||Only possible in middleware based integrations|
|Impedance matching: matching the speeds of the sending and receiving apps||If the sending app is too fast, the middleware can: 1) persist the messages till the receiver is ready 2) throttle the sending application|
|Handle too many message formats and message transformations. If there are N apps, we need N2-N transformations, and (N2-N)/2 connections||If there are N apps, we need only 2N transformations and N connections. This makes design and development much simpler, thus reducing costs.|
|Handling heavy message load||Middleware can be clustered and load balanced based on the expected load|
|Understand the function of the apps’ exposed interfaces||Needs to be done only for the first integration with that app. For point to point integration, we have to do this each new integration with that app.|