There are various types of middleware in software industry. This blog limits the scope to EAI middleware that is widely used in enterprises. This type of middleware adds integration capability to a functional system that end users interacts with. It offers connection to heterogeneous systems, data transformation, fields mapping, routing logic and sometimes rule engine. Technical teams also prefer middleware to unload certain heavy operations from main functional systems.
How important is EAI middleware in enterprise eco system?
Definitely not for this reason |
As enterprises heavily relies on distributed applications, it is equally important to connect them all together. With applications being developed using different technologies that are naturally incompatible to connect together poses a big challenge. This is one of the predominant use case for integration middleware which acts like adopter to connect disparate systems.
Another scenario is when data transformation needs to be done between two systems to keep data in sync across. Neither of the systems would like to take up that responsibility and middleware comes to rescue.
Many teams use middleware to move certain business logic out of the functional system to distribute the load. The intention of this requirement is sane but there is a danger of heavy load lurking into middleware eventually.
General Issues with Middleware
- Middleware eventually becomes heavier than main system
Middleware are designed to serve as connector to heterogeneous applications to enable them communicate through data flow. However, with some complex data transformation, rule engines, exception management it tend to become heavier than main systems. This calls for more resource requirements which in turn increase the maintenance cost.
- Skilled personnel requirement
Requires specific skilled personnel with steep learning curve on certain heavy weight middleware. Most of the notable middleware in market requires specific skills to maintain. Even the ones that claim zero coding adds complex configuration with UI flows, complex navigation and significant deployment effort.
- Maintenance in long term
As a connectivity software, middleware is mostly invisible. It provides a more standard way of doing things, it ties together complex systems and allows developers to concentrate more on the functionality of their applications. If focus on middleware is limited, then over a period of time those skills are lost due to various reasons like upskilling, attrition. As a result, ultimately it becomes hard to maintain.
- Legacy middleware vs new technologies
Middleware bring advantages with its range of use in a wide array of software systems, from distributed objects and components, to mobile application support, to message-oriented communication, and more. With technology changes, and infrequent upgrades, middleware become obsolete in a short period of time. With fast changing communication standards in software industry also adds challenges. Lacking suitable connectors using new technology could end up adding yet another middleware to process. I have spoken to a team with decade old heavy weight, on-premises middleware. They were searching for yet another middleware to connect to Kafka which was not supported in their existing one. The gap between not updatable software and technology grows heaps and bounds with time.
- Reduced Throughput
Introducing middleware between two homogeneous systems surely adds overhead without any advantage. Systems are capable to communicate using simple REST API work faster with direct integration. I spoke to few teams using third party middleware even for API connections. I wanted to understand their intent. I could not get compelling reasons or proper justification. Those teams thought they are following certain design pattern.
- Performance Bottleneck
Middleware unnecessarily used can create serious performance issues. The extra layer and the redundant execution logic introduced within the middleware endup hampering the performance of whole system.
- Even middleware requires sub middleware in Enterprises
Sounds ridiculous but true! Most of the big enterprises adopts middleware to every functional system they develop. When a System A needs to connect to System B, data flows through 2 middleware as the design lists data flow allowed only through middleware in every system.
When developers missed following design principle |
- Enterprise Architecture Strategy
- Flexible Design
- Cloud to increase scalbility and reduce cost
- Containers & Microservices to speed up the development process
Helps in decentralizing the data, reducing the coding complexity, achieving scalability.
No comments:
Post a Comment