kitson - Fotolia
The past 10 years have seen a huge shift in the way software is developed and deployed. In early 2005, enterprise service bus was still popular and the cloud was in its adolescence, awaiting the arrival of Amazon EC2/S3. Today, the number of technologies available to developers has exploded, and the ubiquity of the cloud has added to the layers found in the middleware stack, according to experts.
All the available technologies have greatly matured over the past 10 years, providing more variety to developers and application architects working within the middleware stack, according to Matt Brasier, principal consultant at Worcestershire, U.K.-based consultancy C2B2. The architectural choice extends to SQL stores and other components, allowing developers to choose the technology that works best for the application being developed, he added.
Adding layers to the middleware stack
Ten years ago, developers had only three layers to contend with: the access layer, business logic layer and user interface layer, Brasier said. But those strict layers disappeared as the middleware stack became more about services. Now, business-facing services and integration layers allow developers to tie services together into an application, with the integration layer being the new layer in the middleware stack. The integration layer sits on top of a much thinner business layer, with the user interface above the integration layer, he said.
None of these additions -- integration, API, mobile or other layers -- has been a detriment to the middleware stack, according to Jeff Genender, CTO of Evergreen, Colo.-based Savoir Technologies. Mobile and API layers are one in the same, in his view, and depend on what the front end of the application does -- for example, whether the GUI being developed will fit on a mobile device, he said.
"A mobile product should be able to utilize the same API that a full-service one does, with the caveat of how much it uses within the API," Genender said. But mobile isn't a separate layer; it's an endpoint with regard to microservices -- and it's typically done with RESTful services or a JSON implementation, whether it's done from a node application or PHP endpoint, he added.
Applications are becoming more lightweight
Single-container deployments -- the monolithic application servers, WebSpheres and JBosses of the development world -- have been fading into the background as developers and application architects have grown tired of one error requiring the entire application to come down, Genender said. "With regard to having to update and upgrade software, you had to shut down the whole system or have a fairly sophisticated rolling deployment," he added.
However, microservices are lightweight and a more federated way of deploying applications, which allows developers to use multiple endpoints in different services, locations or containers, Genender said. This makes it possible to take down portions of applications so that software can be updated on the fly. "It increases uptime and increases maintainability of the software," he said.
Lightweight apps required by the cloud
Hybrid cloud and cloud deployments have affected the middleware stack hugely. Lighter applications using microservices lend themselves very well to being in a cloud-based environment, according to Genender. Because they're lightweight, they don't come with heavy memory and processor requirements, and because microservices are also federated and distributed, they can be deployed anywhere, he said.
"You need to work in a smaller footprint; there's no place for a monolithic application server," Genender said. The whole point of cloud-based applications is to be lightweight and spin up the application and new features quickly and cost-effectively, which can't happen with a multiple-gigabyte application that requires a lot of processing power. "That's what's driving this change, moving into the cloud, smaller processors and being more distributed," he said.
Another large driver toward services has been flexibility, according to C2B2's Brasier. When integrating with cloud applications, a best practice in development is the flexibility to access services, rather than embed components in applications, he said.
"People who are building successful applications are doing it by creating services, then composing applications and business processes," Brasier said, noting that it all flows out of services. These structures have become necessary to accommodate the demands of the cloud, which has been a big driver for the provisioning of services, he added.
Some may say more of anything might create more problems, but according to the experts, the addition of layers in the middleware stack has been beneficial. As the demand for lightweight applications grows, services -- in particular, microservices -- will be the expected foundation for cloud access.
Using the cloud to enable microservices
How microservices bring agility to SOA
What do you know about component coupling and middleware