Skip to main content
Containers

Containers on AWS vs Azure vs Google: Which Compute Really Wins?

A no-nonsense breakdown of AWS ECS, Azure Container Apps, and Google Cloud Run for running containers. We cut the marketing fluff and tell you what actually matters for cost and sanity.

Picking a container service: the real trade-offs

You've got containers ready to run. Then the cloud sales pages hit you: Amazon ECS, EKS on any of them, Azure Container Apps, Google Cloud Run. It's tempting to just rent a VM and call it a day. But the choice between these managed services can save you headaches or create them. And it's not about Kubernetes hype.

If you're starting from zero or modernizing a typical app, skip the Kubernetes cluster management. Seriously. The managed container platforms handle the boring stuff. But which one won't nickel-and-dime you?

The three I'm actually comparing

AWS gives you ECS (simpler) and EKS (if you're stuck with Kubernetes). ECS with Fargate means no servers to patch. Azure's Container Apps sits on top of Kubernetes but hides the complexity – you just deploy a container. Google's Cloud Run is the serverless option, and GKE exists if you need K8s.

I'm focusing on the serverless tiers: ECS with Fargate, Azure Container Apps, and Cloud Run. These promise to handle scaling and capacity. They also have free tiers that get you started. AWS gives $200 in credits for six months (AWS Free Tier). Azure Container Apps has an always-free tier: 180,000 vCPU-seconds, 360,000 GiB-seconds, and 2 million requests per month (Azure Free Account). Google doesn't list a free tier for Cloud Run in my sources, but new customers get $300 in credits for 90 days (Google Cloud Functions Pricing). Entry cost is similar.

Cost & scaling: small print matters more than sticker price

Pricing looks similar: pay for vCPU and memory per second, plus requests. But watch the fine print.

Fargate caps each task at 16 vCPU and 120 GB memory (AWS Fargate). That's a hard limit. Azure Container Apps and Cloud Run don't have such a per-instance cap in my fact base – they scale automatically on Kubernetes. Cloud Run also scales to zero, which is a big deal if traffic is spiky.

Azure's always-free tier is generous. But it's not unlimited. Suppose you have a small web service doing 1 million requests a month, each using 0.5 GB-seconds. That's 500,000 GB-seconds – over the 360,000 free, so you pay the excess. AWS Lambda gives 1 million requests and 400,000 GB-seconds free (AWS Lambda Pricing), but Lambda is for functions, not containers. For containers on Fargate, you pay per second with a 1-minute minimum (AWS EC2 Pricing). That minimum hits hard if you have short bursts. If each request spins up a task for 200ms, you're billed for a full minute – 300x waste. You'd need to keep tasks running or batch requests.

Kubernetes: the hidden trap

Kubernetes is the standard, no doubt. The CNCF survey says 82% of container users run it in production (CNCF Annual Cloud Native Survey). But do you want to manage it? The same survey found 56% use containers for most or all production apps. That's a lot of complexity.

If you need Kubernetes for portability or AI workloads, all three offer managed K8s: EKS, AKS, GKE. But the cost is in the nodes. EKS with Fargate avoids node management, but it's less mature than ECS. AKS is free, but you pay for VMs. GKE has a management fee, but many say it's the best K8s experience.

My take: if you're not already running Kubernetes, don't start now. The CNCF survey shows Kubernetes is the de facto standard for AI, but for a typical web app, the managed container services are faster to deploy and easier to operate. If you're into generative AI, 66% use Kubernetes for inference (CNCF), but that's a different beast.

What I'd actually deploy

If you're starting fresh and want minimal ops, try Azure Container Apps. The always-free tier is solid, automatic scaling, and it's built on Kubernetes – you can migrate to AKS later. If you're on AWS and love the ecosystem, ECS with Fargate is simpler than EKS and integrates with IAM, VPC, and CloudWatch. Cloud Run is great for scale-to-zero and pay-per-request, but it has a 60-second request timeout by default, which kills long-running jobs.

Let me walk you through a real scenario. Say you have a containerized API handling 10 million requests a month, each taking 200ms with 512 MB memory. That's 2,000,000 vCPU-seconds (if 1 vCPU) and 1,000,000 GB-seconds. On Azure Container Apps, that's 2M vCPU-seconds and 1M GiB-seconds. The free tier covers 180k vCPU and 360k GiB, so you pay for 1.82M vCPU and 640k GiB. I don't have Azure's exact prices, but it's likely cheaper than Fargate's 1-minute minimum. If each request spins up a task, you'd be paying for 60 seconds when you only use 0.2 – that's insane. You'd have to architect around that.

So, my recommendation: for most microservices, Azure Container Apps gives the best cost and simplicity. If you're an AWS shop, ECS with Fargate works, but design for long-running tasks, not per-request scaling. For a serverless API that scales to zero, Cloud Run is worth a look, but mind the timeout.

Sources

  • AWS Free Tier - https://aws.amazon.com/free/
  • Azure Free Account - https://azure.microsoft.com/en-us/free/
  • CNCF Annual Cloud Native Survey - https://www.cncf.io/announcements/2026/01/20/kubernetes-established-as-the-de-facto-operating-system-for-ai-as-production-use-hits-82-in-2025-cncf-annual-cloud-native-survey/
  • AWS EC2 Pricing - https://aws.amazon.com/ec2/pricing/
  • Google Cloud Functions Pricing - https://www.srvrlss.io/provider/google-cloud-functions/

Share this article:

Comments (0)

No comments yet. Be the first to comment!