As the popularity of containers and the serverless computing model has grown, so has the number of cloud-based container and serverless solutions now available.
In fact, there’s now a dizzying array of different services available from various public cloud providers for deploying containers or serverless functions. Sorting through them all to choose the best service for you can be a challenge.
But it’s a challenge you’ll need to overcome if you want to take advantage of containers or the serverless computing model in the cloud. Let’s take a look at the different cloud-based container and serverless platforms available today.
What are Containers and Serverless Functions?
For the uninitiated, here’s a brief summary of what containers and serverless functions do.
Containers let you host applications (or parts of applications, depending on how you choose to architect your app) inside portable, isolated environments. They’re similar to virtual machines, but without the performance drawbacks.
Serverless functions (also known as serverless computing or just serverless) make it possible to execute code on-demand. They require you to pay hosting costs only for the time that the code actually runs. Thus, the chief advantage of serverless is that it allows organizations to avoid having to keep a server running constantly even if it is only serving applications part of the time.
Although containers and serverless functions aren’t ideal in all situations, they come in handy for many workloads. Serverless can help to save money (under the right circumstances, at least), even if it also creates new security challenges. And containers make it easier to deploy applications quickly and scale services without having to manage multiple server instances.
It’s worth emphasizing, too, that containers and the serverless computing model are not intrinsically related technologies. You can use one without the other. However, because both technologies lend themselves to scalable, cost-efficient computing, they tend to go hand-in-hand. And if you’re looking for a cloud service for one of these technologies, chances are that you’ll be searching to host the other one in the cloud, too.
AWS Container and Serverless Computing Options
For our roundup of cloud-based container and serverless computing services, let’s start with those available on Amazon Web Services, or AWS.
The most basic (and labor-intensive) way to run containers on AWS is to set up virtual machine instances using EC2, install Docker on them and deploy containers to them. This process requires a lot of manual work, however, and is not easy to scale.
That’s why AWS also offers Elastic Container Service, or ECS. ECS automates most of the infrastructure provisioning and container deployment tasks required to use Docker containers. The underlying infrastructure is still EC2, but that doesn’t really matter from your standpoint as an IT professional.
ECS uses its own orchestration tool for managing clusters of containers. If you prefer Kubernetes, the open source orchestration platform, you might wish to use EKS instead. EKS is similar to ECS, except that on EKS, Kubernetes is the orchestration solution.
Although ECS and EKS both remove much of the manual work required to use containers, they traditionally required manual management of orchestration tools themselves. In other words, you have to manage your container manager, so you still end up doing a fair amount of manual work, even though the services automate many parts of container deployment.
That’s why AWS in 2017 introduced Fargate, a special “compute engine” for container infrastructure on AWS. Fargate isn’t a separate container service. Instead, think of it as a special deployment mode for ECS and EKS that automates management of the orchestrator, along with most other parts of a containerized environment. When you use Fargate as your instance type, all you have to do is configure some basic parameters, like how much CPU and memory you want to assign to your containerized application. Fargate does the rest.
When it comes to serverless, AWS is less complicated. It offers only one serverless solution, called Lambda. Although Lambda wasn’t the very first serverless computing option to hit the market (technologies that more or less qualified as serverless were around for nearly a decade before Lambda debuted in 2014), Lambda was the first widely advertised serverless solution, and it helped bring serverless computing mainstream.
Containers and Serverless on Azure
Container services on the Microsoft Azure cloud are somewhat complicated. Azure used to offer one container service called (simply enough) Azure Container Service, but it switched the name to Azure Kubernetes Engine when it added full-fledged support for the Kubernetes orchestrator.
To make matters more confusing, Kubernetes is not the only orchestrator that you can use on Azure. Azure also supports the DC/OS and Docker Swarm container orchestrators.
What this means is that you can use basically any orchestrator you want if you choose to host containers on Azure, even though you’re likely to hear Microsoft talking only about Kubernetes these days.
Azure’s serverless solution is simpler to understand. It’s called Azure Functions, and it does basically the same thing as AWS Lambda, although there are some small differences between the two services with regard to the programming languages they support, function execution time and other details that are beyond the scope of this article.
Google Cloud’s Container and Serverless Solutions
The third and final major public cloud on our list for containers and serverless computing is Google Cloud.
Unlike AWS and Azure, Google made a strong commitment to Kubernetes early on, and its cloud-based container service has always been called Google Kubernetes Engine, or GKE. If you want to use a different container orchestrator on Google Cloud, you’ll have to do it by setting up your own virtual machines and managing the container cluster manually.
Google Cloud Functions is Google’s serverless computing service. While Cloud Functions works perfectly well as a serverless solution, most of Google’s focus surrounding the platform has been within the context of Firebase, a mobile development framework that integrates with Cloud Functions. In short, if you want to develop mobile apps and use serverless functions as part of them, Firebase and Google Cloud Functions are a great solution for you. But if you just want pure-play serverless, you are probably best off sticking with Lambda or Azure Functions, which aren’t designed first and foremost for mobile.