Containers versus serverless is the hottest contested topic in IT as enterprises contemplate the future of their computing infrastructure.
Containers, which place a software abstraction layer above the OS but below the level of application code, have captured the most market momentum. Container deployments have coalesced around Kubernetes as an industry standard, which is encouraging in its potential for intercloud workload portability. Many IT experts believe containers will become the predominant unit of computation in the enterprise.
However, serverless technologies, more accurately known as function as a service (FaaS), have soared in popularity nearly as much as containers in 2017. The serverless approach abstracts the compute infrastructure entirely from the user; developers upload code snippets through the serverless interface, and these snippets are executed in the background without the need to provision and manage any servers, containers or other units of compute.
There is overlap between containers and serverless. Containers are frequently used to underpin serverless front ends in public clouds, and enterprises also want to mimic this setup behind the firewall.
At SAP's Concur Technologies in Bellevue, Wash., a DevOps team plans to build a serverless interface around a GraphQL database that will run on Kubernetes container orchestration.
"Serverless just happens to be the easiest way for developers to update their schemas without adding a whole bunch of red tape around it," said Dale Ragan, principal software engineer for Concur. He doubts serverless will overtake other interfaces in the environment, however.
"I think it's going to be a mix and match approach," he said.
Containers and serverless don't have to be used together. Some enterprise IT pros foresee serverless technologies moving beyond an initial container-based phase to be the preferred means of enterprise application deployment long term.
"It's very congruent with the microservice architecture concept," said Jason Shawn, senior director of DevOps and cloud at Ellucian, a higher education software maker in Reston, Va.
Serverless functions are the logical result of applications broken down to their smallest component parts, such as microservices, proponents say. "You build [with serverless] to allow for a crazy scale, because you don't have to maintain state on a given machine," Shawn said.
Is serverless the second coming of PaaS?
Serverless technologies are suited only for apps with intermittent workload demands. Amazon Web Services (AWS) Lambda's functions can only run for up to five minutes, for example. But some enterprise IT pros expect that long-running applications will, at some future point, use platforms similar to Lambda and that serverless ultimately includes any public cloud service that abstracts away the management of infrastructure -- a concept already known as platform as a service (PaaS).
Nick RockwellCTO, The New York Times Company
"Containers are kind of irrelevant and don't convey a lot of benefit in most cases," said Nick Rockwell, CTO for The New York Times Company, based in New York. "To me, that's a misstep on the part of the industry."
Rockwell's team tried Google Kubernetes Engine (GKE), a containers as a service (CaaS) offering, but switched to Google App Engine, one of the industry's original PaaS products, to improve developer efficiency. PaaS approaches have fallen out of favor among some bleeding-edge DevOps shops because they restrict developers' choices over the underlying infrastructure, but Rockwell said he believes such constraints are actually a good thing.
"You have to abide by the conditions of the platform, which means you have no choice but to get down to coding the part of your app that matters," he said.
Serverless is a form of PaaS, but the FaaS approach is actually less restrictive than previous PaaS iterations and could inform how PaaS develops in the future, said Gary Chen, research manager with IDC. Arguably, Amazon is already well under way on this approach with the AWS Step Functions product, which orchestrates Lambda functions for more complex apps.
Over the last two years, the industry has shifted from PaaS, not to FaaS, but to CaaS. PaaS bellwether Pivotal Cloud Foundry 2.0 offers Cloud Foundry Container Runtime, and Pivotal officials have said they intend to advise customers on how to use all three interfaces -- serverless, PaaS and containers -- for different applications.
The problem with PaaS, whether function-based or not, is dependencies, Concur's Ragan said.
"Heroku [PaaS] did a great job with these things, but you still would run into dependency issues on the host itself, not necessarily within the code you're deploying," he said. "That's partly why we're navigating more to the container world, because it's really nice to build your image one time and then move it between servers without really thinking about it much."
Not so fast -- IT inertia stymies serverless
Some industry watchers argue that, as long as mainframes are still in use, the market won't overwhelmingly shift to something new, especially something as radically different as serverless. As always, when asked to choose containers vs. serverless vs. PaaS or something else, most IT pros answer, "It depends."
At large enterprises, serverless approaches are not out of the question, but containers will allow flexibility among cloud providers, managed services and self-managed environments.
No one cloud provider, whether PaaS-focused or container-focused, can fully accommodate as large a customer as SAP Ariba, said John Mitchell, infrastructure architect at the business procurement software company in Palo Alto, Calif. And furthermore, for large-scale stateful applications, such as heavy-duty databases, serverless actually costs more than containers, because such applications crunch data constantly and invoke functions continuously, he said.
"If we've seen anything over the last 20 years, it's that the IT ecosystem is not getting simpler and smaller," Mitchell said. "It's actually getting more diverse, and I don't see a historical forcing function that's going to change that."
At IBM, there has been a surge of interest to evaluate containers versus serverless technologies, said Sanjeev Sharma, director and distinguished engineer, who works with enterprises that want to adopt DevOps. He said it will be a long time before IT ops catches up on management for either one. In the meantime, containers will be much easier for mainstream IT to grasp conceptually than FaaS.
"So many people aren't doing virtual machines right or cloud right, so I struggle to see how they'll be able to manage [either one]," Sharma said. "Containers and serverless multiply the instances of what you are running by several orders of magnitude, and I don't know how they'll handle it if they don't set up their ops or the management side of their organization to handle the scale."
Another advantage for containers versus serverless is that containers have achieved a cross-cloud standard for interoperability in Kubernetes, while the serverless community hasn't yet worked out a unified open source approach. Many competing open source FaaS projects promise Kubernetes-like portability between clouds, but none has emerged as a winner yet.
The jury's still out, but serverless momentum builds
SAP Ariba's Mitchell conceded that much of modern enterprise application development is made up of what he terms "froth," layers of code that invoke underlying services and little else, which particularly suits serverless platforms.
Mitchell stopped short of predicting whether that will ever constitute a majority of enterprise workloads, but others will place that bet.
"With [Amazon] API Gateway and Step Functions, you can manage the whole workflow," said Richard Fong, software engineering manager for Mitchell International, an auto insurance software company in San Diego. He has experimented with container orchestration platforms but favors AWS Lambda.
Serverless platforms are complex behind the scenes, but the user doesn't have to worry about that or the built-in resiliency of the app, Fong said. Each function in a serverless environment is independent, and a dropped function won't affect others.
Meanwhile, Amazon is representative of market trends in containers versus serverless. AWS bowed to Kubernetes momentum at re:Invent 2017 in Las Vegas with AWS Elastic Container Service for Kubernetes and Fargate, but at the same time, it showed that Amazon retains high ambitions for Lambda. AWS unveiled another project at re:Invent called Aurora Serverless for its Aurora MySQL database, the same kind of stateful app many IT practitioners argue is only suited to containers.
"Amazon talks about a continuum where they will give customers all of the best options," Stuart Miniman, senior analyst and general manager of operations at Wikibon, which is based in Palo Alto, said. "But they think the future is serverless."