Middleware is software that is used to bridge the gap between applications and other tools or databases. Middleware sits between an operating system and the applications that run on it. It is effectively software that provides a method of communication and data management between applications that would otherwise not have any way to exchange data -- such as with software tools and databases.
Middleware appears in many locations; however, organizations and developers make specific use of middleware to more efficiently build applications. Organizations that use multi-cloud and containerized environments will often also use middleware as a more cost-effective way to develop and scale applications.
Some examples of middleware activities include handling data and API management, authentication and messaging services.
Why is it called middleware?
The name middleware stems from the fact that it is the software that sits between the client-side requests on the front end and the back-end resource being requested.
A client can make a request with network-based interactions. That client is typically an application that resides on the front end, which is where the user interacts with software. Resources such as databases, message queues, NoSQL data stores and file servers are often referred to as being part of the back end. Middleware will sit between these ends.
How middleware works
Network-based requests attempt to interact with back-end data. This data might be something as simple as an image to display or a video to play, or it could be as complex as a history of banking transactions.
Why use middleware?
Middleware serves a variety of functions. First, it manages connectivity to various back-end resources. A middleware component might create a connection pool to provide fast and efficient access to a popular back-end database. It can also create connections to message queues and topics. Furthermore, a piece of middleware software may manage connections to cloud-based resources, like the Amazon Simple Storage Service (Amazon S3).
Second, middleware software has the capacity to implement logic based on the request made by the client. For example, a middleware component might recognize that a client browser making a given request has the language header set to English, and, as a result, the queries it makes to the back end might be tweaked to return nothing but English-based results. Or, perhaps a server could identify the geographical location of the client making the request based on its IP address and return data to the client that prioritizes results that are located close by. The ability to take a request from the user, perform logic and then customize the results is an important job performed by middleware software.
Third, middleware plays an important role in concurrent processing, load balancing and transaction management. Middleware software typically has the capacity to scale vertically and horizontally to help distribute incoming client requests over multiple servers, virtual machines or availability zones of the cloud. Middleware software can also handle concurrency and transaction management issues, such as dealing with problems that arise when two or more clients attempt to access or update a given back-end resource at the same time.
Finally, middleware plays an important role in securing access to back-end resources. Middleware software has the ability to challenge clients; it requires both a secure connection -- using a technology like SSL -- and authentication -- using either a username and password combination or a digital certificate. This security information is then used to check if the client making the request has the authority to access the data in question. If the rights are affirmed, the data is sent from the middleware server to the client using a secure and encrypted connection.
In general, IT industry analysts -- such as Gartner and Forrester Research -- put middleware into two categories: enterprise application integration middleware and platform middleware.
Enterprise application integration middleware enables programmers to create business applications without having to custom-craft integrations for each new application. In this situation, middleware helps software and service components work together, providing a layer of functionality for data consistency and multi-enterprise or B2B integration.
Typically, integration middleware provides messaging services, so different applications can communicate using messaging frameworks like SOAP, web services, REST or JSON. Other middleware technologies used in this category include Object Request Brokers (ORB) and data representation technologies like XML.
Businesses can purchase individual integration middleware products, on-premises products or cloud-based application integration suites.
Platform middleware supports software development and delivery by providing a runtime hosting environment, such as a container, for application program logic. Its primary components are in-memory and enterprise application servers, as well as web servers and content management. Platform middleware includes tools that support application development and delivery, such as web servers, application servers and content management systems.
Generally, embedded or external communications platform middleware will allow different communications tools to work together. These communications tools enable application and service interaction. Resource management services, such as Microsoft Azure Resource Manager, host application program logic at runtime -- another key function in platform middleware. Other components include Trusted Platform Modules (TPMs) and in-memory data grids (IMDGs).
Platform middleware products are also available as specific on-premises or cloud service tools, as well as multitool suites. On a cloud suite site, middleware as a service offers the runtime environment and an integrated set of platform tools.
Types of middleware
There are many examples of middleware, each created to fulfill specific functions in connecting applications, web and cloud services. Here are some commonly used types of middleware:
- Messaging middleware facilitates communications between distributed applications and services.
- Object or ORB middleware enables software components or objects to communicate and interact with a program -- such as containers -- across distributed systems.
- Remote Procedure Call (RPC) middleware provides a protocol that allows a program to request a service from another program located on another computer or network.
- Data or database middleware enables direct access to, and interaction with, databases; it typically includes SQL database software.
- Transaction or transactional middleware ensures transactions move from one phase to the next via transaction process monitoring.
- Content-centric middleware allows client-side requests for specific content and abstracts and delivers it; it's similar to publish/subscribe middleware like Apache Kafka.
- Embedded middleware facilitates communication and integration between embedded apps and real-time operating systems.
Middleware products and providers
Middleware programs come in on-premises software and cloud services; they can be used independently or together, depending on the use case. While cloud providers bundle middleware into cloud services suites -- such as middleware as a service (MWaaS) or integration platform as a service (iPaaS) -- many businesses may choose independent middleware products that fit their specific needs.
Some vendors that offer middleware include:
- IBM with IBM Worklight, which is used for developing cross-platform mobile applications.
- Microsoft with Microsoft BizTalk, which is used for integration hubs.
- SAP with SAP NetWeaver Mobile for mobile applications.
- Apache with Apache Camel, which provides an open source middleware for B2B and microservices-based environments.
Other vendors include Oracle, Red Hat, TIBCO Software and ScaleOut Software.
How to choose a middleware platform
Middleware should be chosen by considering what an individual or organization is looking to achieve with it. For example, if middleware is needed for data management, then database middleware should be used; if middleware is needed for application services, then application server middleware should be used. The key idea is to find the right software according to the performance needed.
Some middleware will offer specific tools to help developers. For example, Red Hat offers functions for container-based processing. If a specific tool set stands out, then that specific middleware may be worth it. However, organizations should be sure that the middleware will work with the applications it's trying to connect.
Organizations should also compare reliability, complexity and performance -- as some performance speeds may greatly vary -- with other middleware products.
The evolution of middleware
From 2000 until approximately 2010, middleware software was synonymous with the concept of an application server. However, as cloud computing increases in popularity and microservices replace more monolithic systems based on service-oriented architecture (SOA), middleware is changing.
Rather than deploying complete applications to middleware servers, developers are starting to create smaller, microservices-based applications. They then package those microservices with all of the knowledge required to connect to the back-end resources they need and deploy the applications within a lightweight, container-based system, such as Docker. The container is then deployed to a cloud-based service.
In this case, the middleware would be the combination of the microservice hosted within the container and the cloud computing infrastructure running the container. This arrangement is currently the direction in which middleware is trending.