Any talk about the demise of the application server is hyperbole at best. However, the emergence of containers,...
the popularity of microservices and the availability of software that allows organizations to build their own, in-house compute clouds has fundamentally changed the landscape. So, middleware technology is going to have to evolve.
Repurposing traditional middleware technology
The traditional application server can be broken down into two separate parts. The operational piece is involved with distribution, scalability, clustering, load balancing and administration. The other half provides the myriad services an enterprise application needs: transaction management, a security service and various APIs to make it easier for software developers to create complex applications. In traditional application servers, these two systems were heavily intertwined, but modern middleware technology has created a much more solid division between these two pieces.
"We're seeing the app server kind of break apart and separate out the operations concerns from the developer concerns," said Rich Sharples, senior director of project management at Red Hat.
Cloud computing software, container-based technologies and corresponding orchestration tools make it possible to detach the operational aspect from the development functions.
"At Red Hat, we have kind of blown up traditional middleware technology and recomposed it in new and interesting ways using distributed cloud operating systems and container platforms," Sharples said.
Applications as a service
Rich SharplesProduct manager, Red Hat
The emerging changes to middleware technologies have also had a significant impact on how organizations develop applications. With traditional application servers, the developer always has a standard set of APIs and services they can build with and integrate at runtime. But access to too many APIs and services could result in needlessly bloated software. With new software development approaches -- like Spring Boot and Java's Jigsaw -- developers can package and deploy applications into a container with only the APIs they need and none of the superfluous ones they don't.
"Software developers have managed to invert the relationship between the app and the app server," Sharples said. "Rather than provision an application server and deploying to it, I now just [pull] the pieces of the application server that I need and bring it into the app."
A polyglot environment
This operational shift towards containers and cloud computing platforms has a significant impact on the development side. Middleware technology is now agnostic when it comes to development languages. Ten years ago, you were a Microsoft, Java or Python shop, and overlap was uncommon. Today, middleware technologies are expected to support multiple languages, and if they don't, they quickly fall out of favor.
"I actually think we're a couple of years into a new era of the polyglot developer," Sharples said. "If you look at Amazon, Cloud Foundry, Google or Azure, they're all polyglot. They support multiple languages."
The benefit of such a polyglot environment is the fact developers can pick the language that best suits the task at hand. For transaction-heavy applications, Java and its well-proven, transactional APIs might be the best fit. For a lightweight, serverless function, a good case could be made for choosing Go. The drawback, of course, is long-term maintenance, which might become an issue as an unwieldy number of different languages are employed on the production servers. To offset the long-term risks, organizations will need governance policies.
With all that said, there is still a role for the traditional application server in today's world, and the big WebSphere and Oracle Application Server installations aren't going away anytime soon.
"I still have a large number of clients developing Java EE applications and deploying those applications to modern WebSphere installations," said Sal Pece, software architect with Xennial Consulting Inc. "Banks, insurance companies and government clusters have built a successful set of processes and governance models around their traditional servers, and while there is always talk about containers and cloud-based software, stakeholders are reticent to move away from investments that are working well for them."