Containers are how most backend code ships today. The real choice isn't Docker or not, but how much of the platform under the containers you want to run yourself. At one end, serverless containers: you hand over an image and a size, and the cloud runs it. At the other, Kubernetes: you get a whole scheduler, networking model and ecosystem, and you operate a lot more of it. Each cloud sells both ends, plus a managed middle.
The course's Tiffin runs on serverless containers from its first version. The concepts behind scaling them are in scaling out, stateless servers and deploys.
Side by side
| AWS | Google Cloud | Azure | Self-hosted | |
|---|---|---|---|---|
| Serverless containers | ECS on Fargate: tasks with a fixed CPU and memory size | Cloud Run: many requests per instance, scales to zero | Container Apps: KEDA-based scaling, scales to zero | None; this is the convenience you pay for |
| Managed Kubernetes | EKS, and EKS Auto Mode | GKE Standard, and GKE Autopilot | AKS, and AKS Automatic | Kubernetes on your own machines |
| Unit of scale | A task (ECS) or a pod (EKS) | An instance handling up to 1,000 concurrent requests | A replica | A pod |
| Scale to zero | You can set an ECS service to zero tasks, but no request will start one | Yes | Yes | Only with add-ons |
| What you pay per | vCPU-hours and GB-hours of each task (Fargate pricing); EKS adds a per-cluster fee | Request-based or instance-based billing (settings); Autopilot bills by pod requests | Usage, with no charge at zero replicas | Servers, and the people who run Kubernetes |