In an effort to reduce costs and operate more efficiently, enterprises are looking at different virtualized computing alternatives for running applications in the cloud, including virtual machines (VMs), containers, and serverless platforms.
But deciding on which technology to use in your organization is a matter of juggling different factors, ranging from which technology – if any – is already in use and how much effort and expense the company is willing to put in to develop applications to best leverage virtualized technologies.
Tony Iams, a vice president analyst for Gartner Inc., presented a session at the Gartner IT Infrastructure, Operations & Cloud Strategies Conference in Las Vegas earlier this month with selection guidelines for the most agile infrastructure for applications.
Cloud abstraction guidelines
For the initial decision, the right choice for developing a deployment scenario depends on the organization’s dominant operational priority, as well as which requirements and constraints apply to the organization, Iams said.
Generally, his recommendations are:
· VMs for compatibility
· Containers for flexibility
· Serverless for efficiency
However, the decision doesn’t stop there, Iams said. In addition, for existing applications, organizations should identify opportunities for rehosting, to improve life cycle management, and for revising, to support distributed computing, Iams said.
What about for new applications? In that case, make things easier in the future by optimizing for cloud-native architecture attributes when possible, such as modularity, programmability, elasticity, and resiliency, he said.
And with public cloud deployments? “Take maximum advantage of native platform capabilities, while balancing the risk of lock-in,” he said.
Action plan for the next year
Iams went on to provide an action plan for the next year for deciding between VMs, containers, and serverless – but noted that infrastructure was becoming serverless.
· The first step is to engage with stakeholders to identify their goals for migrating their applications to the cloud, Iams said.
· Over the next 90 days, organizations should determine operational priorities for application deployment in the cloud, as well as develop a strategy for applying cloud-native architecture to optimize application development processes with delivery of value streams.
· Finally, over the next year, organizations should evaluate serverless offerings in strategic public cloud services, including serverless containers, Iams said.
How are VMs, containers, and serverless different?
The distinction between the three choices is based on what aspect is virtualized, Iams said. For example, with VMs, the hardware is virtualized. With containers, the operating system is virtualized. And for serverless, the application runtime itself is what’s virtualized, he said. The higher up the stack the virtualization goes, the more abstract it is.
VMs are a more mature technology, but aren’t as portable as containers such as Kubernetes, the technology on which the industry appears to have standardized, Iams said. Serverless technologies – which can actually be broken up between serverless containers and serverless function platforms-as-a-service – are more efficient but require applications to be designed with specific patterns, he said.
Devin Dickerson, a principal analyst with Forrester Research, wrote in a blog post that cloud-native development needs to embrace serverless technologies because they reduce up-front expenses, are faster and easier to manage, and scale more easily – but that developers need to follow certain best practices to benefit, he wrote.