What is ‘middleware’? French professor Sacha Krakowiak defines middleware
as [a] software layer [which role] is to make application development easier,
by providing common programming abstractions,
by masking the heterogeneity and the distribution of the underlying hardware and operating systems,
and by hiding low-level programming details
This makes sense, considering the fact that writing an http server nowadays or a servlet-container is not considered sane anymore, given the multitude of commercial and open source products that have already proven themselves. Over the years a range of products and standards has emerged that to a growing extent hide the low-level intricacies and provide the application programmer with easy yet powerful abstractions. They range from webservers, databases and application servers to EBS´s and BPM platforms. They form the IT landscape that enable modern business. And it´s their heterogeneity and distribution that is at the heart of the emerging problems that we will address in a top-10 style series of blogs in the coming weeks.
Middleware adds a new level of complexity
Application servers (for instance) solve a lot of problems regarding web-based applications. With it come higher level problems, regarding enterprise wide infrastructure and integration. Middleware problems occur typically in a medium to large enterprises that have seen their primary business become more and more dependent on internet based applications. The problems have their origins and solutions in technology, as well as in organizational psychology. It’s about people, their knowledge, span of control and their being involved in other processes in the company.
The 10 issues have formed our frame of mind that we use to assess companies that ask us to audit their software development and operation processes. They all have had to find answers to problems that application servers have not solved satisfactorily like deployment or synchronizing test and production environments. They have come to realize the fact that middleware is (often) the battleground where developers and administrators meet. And they have trouble finding people with the right technical skills and at the same time have the ability to mediate between these two groups.
Middleware is here to stay
Writing software is to a growing degree about combining existing components using code and configuration. Integrating the wide range of infrastructural components requires detailed knowledge of the platform and the ability to guide developers. This typically is an architect’s job . This architect should also be in contact with business consultants, to be able to wield the power of middleware to underpin the success of business initiatives in the long run. While projects deal with immediate needs, the middleware is a long-term investment, requiring revision over time. Failing to understand this is a recipe for trouble.
Middleware requires management
Middleware management is not solely about application development, or application lifecycle management, nor is it part of a helpdesk or just another form of systems management. It´s about all of that and more. It´s at the heart of an IT organization. This means that middleware people should be involved in decision making processes, which is often not the case. On the other hand, the middleware people should streamline their work, stay updated on technology and work along principles and best practices, or they will be an impediment for the projects they support.
Number 10 on the list is the “dependency problem”, meaning: systems availability should not depend on that one expert alone.