Should You Be Paying for Middleware Tools?
The modern enterprise landscape is a hybrid of diverse technologies and disparate endpoints. Unifying these systems has traditionally been difficult, but emerging commercial and open source middleware solutions are now able to solve these challenges. But which middleware tools are best for the job, and do you need to pay for them?
In this blog, we give an overview of available middleware solutions, including information on the various types of middleware, how they are used, and compare commercial and open source middleware options.
- What Is Middleware?
- Commercial Middleware vs. Open Source Middleware
- The Best Open Source Middleware Technologies
- Getting Started With Open Source Middleware
What Is Middleware?
Middleware is a broad category of software that encompasses any type of software used to connect one system to another, or one layer to another.
Middleware can be described variously as “glue”, as a conduit, or as an adapter that connects and links different systems. Some middleware also provides a platform or foundation to build applications, providing common functionality and connectivity so application development can focus on unique requirements. Common categories of middleware include web servers, application servers, content management systems, messaging and service buses, and other integration frameworks and services.
Types of Middleware
Since middleware can encompass most any software between the OS and application layers, there are many different categorizations — both based on how it is used and by location in a typical application architecture. Some common categories include the following:
Message Oriented Middleware
One of the most pervasive pieces of middleware, message-oriented middleware (MOM), includes message queues, message brokers, and message streaming platforms. Message-oriented middleware focuses on reliably routing and delivering message-based traffic to connect disparate applications and systems. Some MOM platforms are also able to transform and translate messages to enable communication between applications written in different languages or using different protocols. MOM also helps decouple applications and enables asynchronous and decoupled communication across large architectures.
Remote Procedure Call Middleware
Remote Procedure Call (RPC) middleware is used to act as a conduit for synchronous or asynchronous service calls between different systems.
Database middleware includes both traditional relational database systems as well as document-oriented databases, graph databases, and any other organized data store. Primarily concerned with the efficient reliable storage and retrieval of data, database middleware allows applications to interface through a standard API and offload the complexities of persistence, search, security, fault tolerance, atomicity, and consistency to proven code.
Application Server Middleware
Application server middleware consists of standard application servers used to deploy, run and manage enterprise applications. They often provide additional support in terms of standardizes libraries/APIs (like J2EE or .NET), and standardized configuration (security, logging, and management).
Web middleware includes traditional http servers such as Apache and Nginx, used for serving static resources quickly and reliably, or acting as an intermediary between clients and application servers or services.
Object Request Broker (ORB) middleware brokers request between applications using a standardized object representation. CORBA (Common Object Request Broker Architecture) is one example of this type of middleware.
Transaction Processing Middleware
Transaction processing middleware is generally service-based and supports executing transactions across a distributed set of applications. This type of middleware allows for executing business and other processes in a step-by-step fashion with guarantees execution of the proper application steps in order and can also provide the ability to roll back a transaction if an error occurs.
What Is Middleware Used For?
Middleware is fundamentally a bridge, and can be defined as any software that bridges two or more other systems. This can be across architectural layers – like an interface between applications and storage (a database). This can also be in the form of frameworks and APIs that provide efficient communication between or even within an application.
Middleware standardizes and simplifies integration of different components to assemble a comprehensive solution to a problem. The popularity of common middleware packages mean they are proven in production and are well supported.
Middleware can also support application development by providing prebuilt functions for integration such as single-sign-on, messaging, caching, common design pattern implementation and other common functions. Middleware is also used extensively when connecting and integrating with legacy systems – by providing adapters, APIs, transformations, and messaging, new development can happen around legacy systems rather than all at once.
Middleware connections to legacy systems can enable migration to modern architectures with higher performance and higher reliability.
Commercial Middleware vs. Open Source Middleware
For organizations considering how to connect their data systems, harness their streaming data, or any other number of solutions middleware can provide, the middleware they choose often comes down to a matter of price.
Commercial, comprehensive middleware offerings like IBM WebSphere can come at an enormous price tag for organizations – especially at scale. With a sub-capacity pricing model, and a contractual delineation between license costs and support costs, larger organizations can quickly find their annual costs moving above seven figures.
There are less costly commercial middleware options, of course, but even the act of using commercial middleware can carry unhappy side effects. As we’ve discussed at length in other articles, using commercial software (especially within large ecosystems like Red Hat, Oracle, or IBM), can cause vendor lock-in – with any short term benefits overshadowed by the eventual cost of moving on from that ecosystem, and the potential for burgeoning contract costs from the commercial provider.
That’s not to say that open source software isn’t without costs of its own. Open source requires in-house expertise in order to fully utilize and support it (or access to a third party like OpenLogic that can provide that open source support).
In terms of technological capability, open source software is a clear leader – with popular options like ActiveMQ, Camel, Kafka, and others that can fulfill and exceed the functionality of their all-in-one commercial counterparts.
Ultimately, choosing between a comprehensive (and expensive) commercial middleware solution and a “free” open source middleware solution comes down to the needs of the organization, the state of their underlying IT infrastructure, and their capacity to work with and support that software.
The Best Open Source Middleware Technologies
The best middleware technologies tend to be based on the needs of the user, but our team has a few versatile favorites when it comes to middleware – Apache Camel, ActiveMQ, Apache Kafka, and Tomcat are all open source middleware that effectively connect your apps.
Considering Your Middleware Options?
Read our new Decision Maker's Guide to Open Source Middleware for an overview of available options, and when to use them.
Apache Camel is the industry standard for reducing boilerplate code for complex integrations, all while maintaining features like automatic error handling, redelivery policies, and the ability to handle complex aggregations. Apache Camel is a domain-specific language that’s an implementation of the Enterprise Integration Patterns (EIPs) and helps organizations solve a range of very specific problems.
Apache Camel provides a configuration syntax and runtime to configure EIPs within your application federation layers. By normalizing message data, providing easy transformation mechanisms, and giving developers pre-built components that manage message exchanges, nearly any endpoint imaginable can be integrated.
For developers interested in learning Apache Camel, OpenLogic offers in-depth, expert-led Apache Camel training courses. For an example of how Camel can be applied, this banking company case study is a good place to start.
Apache ActiveMQ is a mature and well-adopted messaging platform, with thousands of companies using it, and is by far the most flexible OSS message broker available. As if that’s not enough, it also ships with an internal implementation of Apache Camel and shares developers and committers with the Apache Camel product. This gives it a tremendous level of sophistication in terms of designing complex messaging patterns.
Though not the only free messaging solution available, Apache ActiveMQ stands out for balancing its versatility with enterprise-readiness. Businesses can adopt ActiveMQ quickly, and its familiar concepts will be accessible to anyone comfortable with JMS. ActiveMQ’s prolific community will ensure the products continued viability, and ActiveMQ 6 promises to extend this usefulness into the next generation of enterprise messaging solutions.
Want to see how ActiveMQ is used in the real world? This webinar looks at five examples of how ActiveMQ can be applied.
Want to get more hands on? OpenLogic offers expert-led ActiveMQ training courses.
Apache Kafka is a stream processor and can be used as a message broker as well. If architecture or software requires low end-to-end latency with exceptional durability (persistence), Kafka is the piece of software to provide this and other functionality. Whereas traditional message brokers focus on a pattern of allowing consumer applications to work on one piece of data at a time, Kafka allows for the analysis of lots of individual pieces of inflight data.
This makes Kafka an ideal candidate for implementing streaming analytics and big data applications. Designed at LinkedIn to scale to hundreds of millions of messages, though not as lightweight a solution as ActiveMQ, it is ideal for working on astronomically large data sets. Kafka is often used with Kafka Connect to pair with data sources and destinations.
Apache Tomcat is an open source Java application server that is capable of powering enterprise-scale web applications. Though not a full-fledged JEE server, Tomcat was originally conceived as the reference implementation for the Java Servlet and Java Server Pages specifications.
Tomcat remains a fast and lightweight implementation, even relied upon in new “serverless” frameworks like SpringBoot as a runtime container because of its thin profile. For simple and lightweight Java web applications, as well as the emerging world of Java microservices, Tomcat remains the top choice for deployment.
Getting Started With Open Source Middleware
Ready to learn the ropes on open source middleware? This webinar looks at the top open source middleware technologies, and how they can replace — and outperform — existing paid solutions.
Make Our Open Source Experts Your Open Source Experts
When middleware is correctly implemented and backed by the experts at OpenLogic, you'll be confident in your ability to also boost IT security, system performance, and overall efficiency. OpenLogic understands open source middleware. We provide expert advice on critical requirements such as federating systems, proxying encrypted traffic, and extending legacy investments with web apps.
Editor's Note: This blog was initially published in September, 2020. We added new and revised content in April, 2022.