The Power of Middleware
Subsquid is a great exponent of the class of software known as ‘middleware’. This is a term that those outside the developer sphere may not have come across before, and even if they have heard of it they may not realise its capabilities and just how much developers rely on middleware solutions. In this article we take a look at what middleware does, how it works, and just why developers regard middleware protocols so highly.
Before we can answer the question of what middleware can do for applications, we first need to define what middleware is. Some developers refer to middleware as being ‘software glue’ which allows two pieces of software to connect with each other. This is simplistic but broadly accurate; middleware is software that allows communication or connectivity between two or more applications or related components within a distributed network, often between those that were not designed to connect with each other. If applications are rooms within a building then middleware is the wiring, allowing crucial information to flow between them quickly and correctly without bottlenecks.
Middleware comes in various forms, such as message brokers or transaction processing trackers that focus on a single type of communication, and web application servers or mobile device services that provide a much wider range of communication and connectivity capabilities. Broadly speaking though there are two forms — middleware that supplies ‘human-time’ services, such as web request servicing, and middleware that carries out its functions in ‘machine-time’, such as that used in telecommunications, defence systems, and within the aerospace industry.
Middleware has moved with the times
Unsurprisingly, middleware today operates at a more comprehensive level than when it first emerged. More recent developments include cloud-based integration platforms that function as a focal integration hub for connecting all the components within an enterprise, while portal middleware encompasses the front-end of the application as well as providing tools for back-end connectivity. Database middleware now typically includes its own data store, while an emerging class of middleware uses container technology to assist developers in connecting to resources distributed across multiple clouds.
All this makes it pretty clear how middleware got its name — it sits in between systems acting as a link between an application front-end, or client, and a back-end resource from which the client requests data.
Diversity, customisability, interoperability
Now we know what middleware does, let’s explore how it does it. At a fundamental level, middleware allows developers to build applications without having to create bespoke integration systems every time they need to connect to application services, data sources, computing resources, or devices. It achieves this by providing services that allow different services or applications to communicate using common messaging frameworks or web services. Middleware also often provides services that enable components written in multiple computing languages to talk to each other.
Middleware also handles APIs (Application Programming Interfaces), which are key to program and app development. APIs are simply the way in which devices connect to sources of data and retrieve the relevant information. For example, when you set your location on a weather app on your phone, the app searches its server for the weather in your area and feeds the data back, interpreting it and displaying it on your screen. This all happens via API. Middleware is the layer between the device and the server that configures the API search parameters.
Middleware configuration is as diverse as the uses to which it can be put, allowing developers to customise the response from the back-end application or service to their specific needs. Middleware also typically sends data over secured connections using industry standard security protocols, such as Transport Layer Security (TLS). Enterprise middleware can also scale effectively during usage spikes, distributing client requests across multiple client or cloud servers.
As a concept, middleware was actually created back in 1968, but the need for it has possibly never been so important as now, with modern business apps engineered to run at scale, both on-premises and across clouds. To build these apps, developers need an environment that supports unified capabilities at a foundational level. Middleware is the key to creating such an environment.
Why use middleware?
So what is so great about middleware, and why should developers use it? Firstly, middleware is the easiest way of generating a flow of real-time information within systems in a network. Few systems are built with interoperability in mind, and certainly developers of those systems don’t know which other systems application developers might want to exchange data with. Middleware acts as the perfect bridge between applications that weren’t designed to speak to each other. This in turn helps streamline processes and improves organisational efficiency.
Secondly, since middleware’s chief goal is to facilitate communications between systems it is able to uphold the integrity of data across a multitude of systems within a network. If developers were reliant on built-in interoperability protocols within each of the operating systems within a network, communication would be problematic and hit and miss. Using a solution like middleware, which is designed with interoperability in mind, means that data flow and accuracy is maintained.
We can liken this to electronics in a home. If all your devices came with different types of plug, it wouldn’t make sense to make every wall socket fit all the different types of plug on offer. Instead it would make sense to design a hub that could accept all the different plugs and then plug that hub into the wall. This is the job that middleware does, with the different network systems being the devices and middleware acting as the hub.
Middleware’s interoperability lends itself to use within a wide array of software systems, including distributed components and objects, mobile application support, message-oriented communication, and many more. This makes middleware solutions invaluable for developers, allowing them to better create different and better types of networked applications.
Middleware is the unsung hero in app development
Middleware goes somewhat under the radar to those not in the development world, but it’s clear that it plays a crucial role in the applications and services that we use every day. Without middleware it would be extremely difficult for systems to communicate with each other, leading to an unsatisfactory developer and end user experience.
Subsquid is an example of the next generation of middleware solutions, helping Polkadot developers create fast, responsive decentralised applications (DApps). To find out more about how Subsquid is the ideal middleware solution for Polkadot developers, speak to our team through our Discord server where you can also chat to existing Subsquid users. Alternatively, drop by our website or Medium page for more of an overview of the Subsquid project.