Guess what? Serverless computing is not actually serverless, and containers do not really contain, they abstract. Keeping track of semantics in the cloud computing space is a full-time job, and I’m often asked to make calls that may go against current logic.
The latest hot topic is that serverless will slowly overtake containers, and, more importantly, some wonder how you should prepare to take advantage of the shift.
First, containers are not going away. Indeed, I believe that the container market will grow significantly in 2018 and 2019. What I am saying is that, when compared with serverless cloud computing, containers may have to take a back seat.
Second, containers are older than serverless, and have a history. Today’s Docker containers are based upon past container standards that fell by the wayside. However, containers on the cloud are a bit different. They offer portability that current public cloud providers can’t provide, and they offer a pretty sound distributed development platform that I’ve had success with myself.
Finally, serverless and containers solve very different problems. In many use cases, it’s difficult to compare them. For instance, serverless is more for net new applications, considering that it’s difficult to refactor or rewrite applications as sets of serverless functions. Containers can containerize existing applications, albeit I still think you need to do significant refactoring on those as well, but not as much as serverless.
Serverless vs. Containers is a Matter of What’s Easy and Cost Effective.
Why do I think that serverless will dominate…okay, slightly dominate? It’s a matter of looking at past patterns of adoption by developers who ultimately make the calls here, and they should. These are a few things to consider:
Developers are not infrastructure people. The use of public cloud computing has forced many developers to become savvy as to what memory, CPU, and other platform capacity they need. While they are not bolting servers on racks, and never did, they make decisions that were previously left up to hardware people.
Public clouds do offer self- and quick provisioning of resources by those who push workloads to them. Developers often under- or overestimate the hardware footprints that they need, and each comes at either the cost of paying for virtual hardware in a pubic cloud that you won’t use, or watching your application fail due to lack of resources.
On the plus side, serverless removes the developers from having to deal with virtual hardware configurations, or worry about over- or under spending on infrastructure. Serverless cloud computing, no matter if it’s Microsoft’s Functions or AWS’s Lambda, removes the developers from the notion of a virtual server. Instead, they just run the serverless functions they created using the public cloud serverless cloud computing tools, and the servers they need are allocated from them automatically, and released automatically.
The public cloud providers did not invent containers. Another factor is that Docker and CoreOS were the real innovators with containers, and not the two big pubic cloud providers, AWS and Microsoft. While both AWS and Microsoft did adopt containers, even containers technology from Dockers, CoreOS, and Google (Kubernetes), it was really the public cloud users who demanded that this technology exist within public clouds that drove the innovations that now exist. Container development and deployment services are offered by Google, Microsoft, and AWS.
So, what we’re dealing with is NIH (not invented here) meets the big public cloud providers, which can likely make more money from serverless computing, and they view it as far more innovative than containers. That’s why the odds are higher that you’ll get a serverless cloud computing pitch from a big public cloud provider than one for containers. However, they may support both with an equal amount of selling and marketing dollars. (This is an outsider’s perspective.)
Finally, serverless seems to be more cost effective. This is the real reason that serverless will overtake containers. Speaking from personal experience, it’s going to take many more dollars to build a net-new application using cloud-based or on premises container technology, than it will to build the same application using serverless tools.
The developers don’t have to deal with the sizing of virtual compute, storage, and database resources to support the workloads. It’s going to happen automatically for them, which makes it much easier. Moreover, since the resources are being spun up and spun down for them, it tends to be more cost effective, although your mileage may vary.
This graphic from Docker illustrates the portability of containers.
Severless vs. Containers is About 'Fit'
But wait, there is a certain amount of common sense that must go into these decisions. While serverless is fine for net-new applications that can be designed, built, and deployed from the ground up, try taking a traditional or legacy application to serverless. Think square peg in a round hole.
Don’t count on public cloud providers to stand by and watch their market share go away as containers take the majority of the legacy migration market between the two technologies. They are already expanding language, storage, and data support for these tools, and both Microsoft and AWS will soon be in their 3rd generations.
Containers are the choice, when it comes to portability requirements. Once you build an application to run within a container, you should be able to move that container anywhere, including on premises and cloud-based platforms. Today, portability from a serverless tool brand to other serverless tool brands is non-existent.
However, enterprises typically overestimate the need for portability. While enterprises have demanded it from their cloud providers for the last few years, they now understand that the cost of building applications for portability, including using containers, may outweigh the benefits because most enterprise workloads will remain on the platform in which they were built.
If enterprises work from their requirements to the technology, serverless typically wins the day for the reasons outlined in this article. This does not mean that containers will fade away; they’ll just drop behind serverless in 2018. You’ve been warned.