Platform Comparison Matrix - Key Features & Capabilities

Feature

AWS Fargate

Google Cloud Run

Azure Container Apps

Civo

GKE Autopilot

Launch Year

2017

2019

2022

2019

2021

Pricing Model

Per-second billing

Request-based + Instance-based

Per-second billing

Node-based

Per-pod/hour

CPU Pricing

0.04048/vCPU/hr

Request + instance based

0.000024/vCPU/sec

Variable by node

Pod-based

Memory Pricing

0.004445/GB/hr

Included with CPU

0.000003/GB/sec

Variable by node

Pod-based

Cold Start Performance

Fast (2-4s)

Fast (1-3s)

Fast (2-5s)

Ultra-fast (<90s)

Fast (3-6s)

Max Concurrent Instances

1000+

1000+

1000+

Limited

1000+

Free Tier

None

2M requests/month

180,000 CPU-seconds

Trial credits

240,000 CPU-seconds

Operating Systems

Linux only

Linux only

Linux + Windows

Linux only

Linux only

GPU Support

No

Yes

Yes

Limited

Yes

Multi-container Support

Yes (ECS tasks)

No (single container)

Yes (container groups)

Yes (K8s pods)

Yes (K8s pods)

Custom Domains

Yes (ALB)

Yes (native)

Yes (native)

Yes

Yes (Ingress)

WebSocket Support

Yes

Yes

Yes

Yes

Yes

Persistent Storage

EFS/EBS

No (stateless)

Yes (Azure Files)

Yes

Yes (PVs)

Why We Migrated to Serverless Containers (And What Went Wrong)

Docker Architecture

We moved 12 microservices from EKS to serverless containers thinking it would simplify our lives. It fucking didn't. Three months and fifteen grand in unexpected bills later, here's what actually happened.

AWS Fargate - The "Easy" Choice That Wasn't

AWS Logo

Fargate promised to eliminate our Kubernetes nightmares. It just created new ones. No more node pool management, no more kubectl get nodes showing "NotReady" during the middle of the night. But Fargate's networking made us question our career choices.

The NAT Gateway Bill Shock

Got hammered with NAT Gateway charges - over $300 for what should've been a few GB of data transfer. Took us 3 days to figure out it was happening during container startup when they pull from ECR. Every single container boot was routing through the NAT Gateway instead of staying internal. VPC endpoints fixed it, but fuck if I know why that isn't the default.

Cold Starts Are Still Cold

Despite AWS marketing, our Spring Boot services took 11.3 seconds average to cold start on Fargate. 11 seconds of angry users hitting refresh. This Stack Overflow discussion captures the frustration perfectly - you're paying more than Lambda for slower cold starts.

Google Cloud Run - Great Until It Wasn't

Google Cloud Run

Cloud Run looked amazing in demos. Deploy with one command, scale to zero, pay per request. Google's pricing model seemed reasonable until we hit production traffic.

The Concurrency Trap

Cloud Run defaults to 80 concurrent requests per instance. Sounds reasonable until you realize each request opens a new DB connection. Our PostgreSQL connection pool maxed out at 100 connections, so with 2 instances we were fucked. Lowering concurrency to 10 meant we needed 8x more instances during traffic spikes. Our bill went from $67 to $342 in one weekend. This Stack Overflow thread shows the same problem - Cloud Run's instance scaling math makes no sense for real apps.

Update - Multi-Container Support

As of May 2023, Cloud Run now supports sidecar containers. You can finally run database proxies, logging agents, and Nginx reverse proxies alongside your main app. But here's the catch - it adds complexity. Now you need to understand container dependencies, shared volumes, and network coordination. The simple "one container = one service" mental model is gone.

Azure Container Apps - Microsoft's Expensive Experiment

Azure Container Apps

Azure Container Apps launched in 2022 as Microsoft's "we can do serverless containers too" answer to Fargate and Cloud Run. The pricing is brutal - $62.47/month per vCPU at full utilization vs Fargate's $29.50. That's a 111% Microsoft tax for the privilege of running on Azure.

The Windows Tax

The only reason to choose Azure Container Apps is Windows containers. If you're stuck running .NET Framework (not .NET Core), this is your only serverless option. Multiple Azure cost comparison discussions consistently show Azure is significantly more expensive - most teams avoid it for cost reasons.

Free Tier Gotcha

Azure promises 180,000 vCPU-seconds free per month. Sounds generous until you do the math - that's 50 hours total. Our dev environment container running 24/7 burned through the entire free tier in 2.08 days. Got a $47 surprise bill on day 3. This Stack Overflow thread shows we're not the only ones who fell for this.

What Actually Works in Production

After burning through fifteen grand learning these platforms, here's what we'd do differently:

Fargate is good for: Steady-state workloads where you can predict costs. Use VPC endpoints and ARM instances to cut costs.

Cloud Run is good for: Spiky HTTP APIs with proper connection pooling. Use minimum instances if you need consistent latency.

Azure Container Apps is good for: Windows containers and nothing else. The Microsoft tax is real.

Skip them all for: High-throughput workloads. Regular EKS/GKE/AKS clusters are still cheaper at scale.

Detailed Cost Analysis - Real-World Pricing Scenarios

Workload Type

AWS Fargate

Google Cloud Run

Azure Container Apps

Cost Winner

Small API (1 vCPU, 2GB RAM, 50% utilization)

$32.47

$41.25

$58.95

AWS Fargate (-44%)

Medium Microservice (2 vCPU, 4GB RAM, 70% utilization)

$87.34

$114.50

$164.22

AWS Fargate (-47%)

Large Processing Job (4 vCPU, 8GB RAM, 80% utilization)

$163.98

$214.80

$308.44

AWS Fargate (-47%)

Burst Traffic Pattern (Scales 0-10 instances)

$245.67

$198.45*

$356.78

Google Cloud Run (-19%)

Always-On Service (4 vCPU, 8GB RAM, 100% utilization)

$204.98

$268.50

$385.55

AWS Fargate (-47%)

Platform-Specific Breakdown: What Actually Works in Production

Microservices Architecture

AWS Fargate - Good Until The Networking Breaks

Fargate integrates well with the AWS ecosystem if you're already knee-deep in AWS services. The pricing is predictable - $0.04048/vCPU/hour means you can actually forecast costs without pulling your hair out.

But the networking will make you question your life choices. Want private containers? Cool, here's a $45/month NAT Gateway bill. Need custom VPC setups? Hope you enjoy reading 30-page networking guides.

We spent 2 weeks debugging why containers couldn't talk to RDS. The error was just "connection refused" - no details, no hints. Turns out the default security groups were blocking port 5432 even within the same VPC. AWS support's helpful response? "Have you reviewed the VPC networking best practices documentation?" 47 pages of networking docs to fix a checkbox. Real helpful, thanks.

Use Fargate if you're already on AWS, need predictable costs, and have a networking expert on your team who doesn't mind pain.

Google Cloud Run - Amazing Until You Scale

Cloud Run deployment is stupid simple: gcloud run deploy. Auto-scaling actually works, and scaling to zero saves money when nobody's hitting your API. The pricing model makes sense for spiky workloads.

Single container per service kills most real applications UPDATE: As of May 2023, Cloud Run supports sidecars. But honestly? The multi-container setup is a pain in the ass. You need to configure container dependencies, manage shared volumes, and debug networking between containers. What used to be simple became complicated.

Our Node.js API worked great in testing - then Black Friday traffic hit over 1,200 concurrent users and everything went to shit. Cloud Run was spinning up 30+ instances, each opening 5-10 DB connections. PostgreSQL hit its 200 connection limit and started refusing new connections with FATAL: sorry, too many clients already. We had to rewrite our entire connection pooling from scratch using a shared Redis connection pool. Spent 14 hours that weekend fixing what should've been anticipated.

Use Cloud Run if you have simple HTTP APIs, don't mind debugging YAML container dependencies, and your traffic patterns are unpredictable.

Azure Container Apps - Expensive But It Runs Windows

Azure Container Apps is the only serverless platform that runs Windows containers. Stuck with .NET Framework 4.8? This is your only option. KEDA autoscaling is actually pretty clever.

But the pricing is brutal. At $0.0571/vCPU-hour (about $42/month per vCPU plus memory costs), you're looking at 40-50% higher costs than Fargate. Microsoft's reasoning: "It's enterprise grade!" Translation: "We know you're locked in, so pay up."

We deployed a simple .NET Core API (2 vCPU, 4GB RAM) and got a bill for almost $200 monthly for what would cost $64.50 on Fargate. The free tier lasted exactly 2.8 days before billing kicked in with zero warning. Azure's cost alerting sent us an email 6 hours after we'd already blown through $50 in overages. You find out about expensive mistakes after your credit card gets charged.

Use Azure Container Apps if you need Windows containers, you're already paying Microsoft everything anyway, or your compliance requirements force you into Azure.

Other Options That Don't Suck

Civo spins up clusters in 90 seconds and doesn't try to nickel-and-dime you to death. Great for development and testing. Production use is limited by their small geographic footprint, but if you're in the UK, it's solid.

WebAssembly promises sub-millisecond cold starts and 10x memory efficiency. Fermyon's Spin and Wasmtime are leading the charge.

WASM is cool in demos but the ecosystem is still tiny. Need to connect to PostgreSQL? Good luck finding a mature WASM driver. Want to use your favorite logging library? Probably doesn't exist yet.

Stick with the big three for production workloads. Try the emerging platforms for side projects and bleeding-edge experiments.

Questions Engineers Actually Ask (And Honest Answers)

Q

Why is my serverless container bill so fucking expensive?

A

Because "serverless" doesn't mean "free"

  • it means "surprise bills." AWS Fargate charges $0.04048/v

CPU/hour which sounds cheap until you realize that's $29.55/month per vCPU running 24/7.

Our "simple" Node.js API endpoint ended up costing $127.83/month because of NAT Gateway charges ($45), CloudWatch logs ($23.47 for 47GB), and data transfer fees ($8.92). One fucking tiny service cost more than a dedicated server.Pro tip: Use AWS Cost Explorer religiously or prepare for bill shock.

Q

Do serverless containers actually scale to zero like Lambda?

A

Google Cloud Run: Yes, and it works well. Your container disappears and billing stops after no requests for a few minutes.AWS Fargate: Hell no. Fargate runs in ECS or EKS, so you're always paying for something running.Azure Container Apps: Sort of, but the free tier burns through 180,000 vCPU-seconds (50 hours) fast. This thread explains why people get surprise bills.

Q

How bad are cold starts really?

A

For Java/Spring Boot: Our Spring Boot services averaged 11.7 seconds on Fargate, 8.2 seconds on Cloud Run. That's 11+ seconds of users staring at loading spinners wondering if the site is broken.For Node.js/Python:** Our Node.js Express app took 3.1 seconds on Fargate, 2.4 seconds on Cloud Run. Still long enough for impatient users to hit refresh.For Go/Rust:** Our Go service took 1.8 seconds on average, but only because we used a 12MB distroless image. Bloated Docker images will fuck you here.The fix: Use minimal base images and multi-stage builds. Or accept that cold starts suck and use minimum instances.

Q

What surprise costs will fuck me over?

A

NAT Gateway charges: $45.50/month per gateway plus $0.045 per GB processed. We burned $347.82 in our first month because every single container startup was pulling images through the NAT Gateway instead of staying internal.Data transfer:** Moving data between AZs costs $0.01/GB. We processed 23.7TB one month and got hit with a $237 surprise charge. Nobody warns you about this shit.Logging:** CloudWatch charges $0.50/GB for log ingestion. Our "simple" microservices generated 156GB of logs per month, costing $78 extra. Debug logging in production will kill your budget.The solution: Use VPC endpoints for ECR/S3, configure log retention, and monitor AWS Cost Explorer weekly.

Q

Should I migrate from Kubernetes to serverless containers?

A

If you have <10 services: Maybe.

The operational complexity reduction might be worth it.If you have 50+ services:** Probably not.

You'll trade Kubernetes complexity for billing complexity and lose granular control.If your team struggles with K8s:** Try GKE Autopilot first

  • it gives you managed Kubernetes without the full serverless commitment.
Q

Which platform should I actually choose?

A

Choose AWS Fargate if: You're already on AWS, need predictable costs, and can stomach ECS networking complexity.

Choose Google Cloud Run if:** You have spiky traffic, want simple deployments, and can architect around the single-container limitation.

Choose Azure Container Apps if:** You need Windows containers or are locked into the Microsoft ecosystem.

Choose regular Kubernetes if:** You have >50 services, need custom networking, or want to avoid vendor lock-in.

Q

What's the biggest gotcha that will screw me over?

A

Networking. Every platform has different networking models:

  • Fargate: Uses ENI per task, limited by subnet size. VPC networking can be complex.
  • Cloud Run: Only supports HTTP/HTTPS traffic.

No raw TCP/UDP connections.

  • Azure Container Apps: Uses KEDA which has its own quirks.Test your networking assumptions early or prepare for a weekend debugging session.

Which Platform Should You Actually Choose?

Serverless Containers Architecture

The Real Talk Recommendations

After burning money on all three platforms and debugging production outages, here's what actually works:

For Steady Workloads: AWS Fargate Wins
Fargate costs $29.55/month per vCPU running 24/7. That's exactly half of Azure's $62.47 and way more predictable than Cloud Run's "request-based pricing" that turns into instance-based billing when you hit real traffic.

But those hidden costs will fuck you: NAT Gateway bills ($45.50/month), Application Load Balancer fees ($18.50/month), CloudWatch logging ($0.50/GB that adds up fast), and data transfer charges nobody mentions. Sony cut their costs in half switching to Fargate, but they also have 47 engineers who've memorized AWS networking docs.

For Spiky Traffic: Google Cloud Run
Cloud Run's pay-per-request model is perfect when your traffic is all over the place. Scales to zero when nobody's hitting your API, scales up when you get slashdotted. Cold starts averaged 2.7 seconds for our Node.js apps - fast enough for APIs, too slow for user-facing pages.

The deploy experience is actually great - gcloud run deploy and you're live in 45 seconds with HTTPS included. But multi-container support turned simple deployments into debugging YAML container dependencies at 2am when your sidecars won't start.

For Windows Containers: Azure Container Apps (Your Only Choice)
Azure costs $0.0571/vCPU-hour ($41.71/month per vCPU plus $0.000003/GB-second for memory) - 41% more expensive than Fargate for the same resources. But if you're stuck running .NET Framework 4.8 on Windows containers, this is literally your only serverless option.

The KEDA autoscaling is actually pretty clever - you can scale on custom metrics like queue length. Too bad about the Microsoft tax making everything expensive as hell.

The New Kids on the Block

Civo - Fast and Cheap (For Now)
Civo spins up clusters in 90 seconds and doesn't nickel-and-dime you to death. Great for development work. Some companies report massive cost savings, but they're mostly UK-based with limited global reach.

Perfect for testing and development environments. Production? Depends how much you trust a smaller provider with your uptime.

WebAssembly - Cool Demos, Tiny Ecosystem
WebAssembly platforms promise sub-millisecond cold starts and stupid-efficient memory usage. The benchmarks look amazing for AI workloads.

Reality check: The ecosystem is still tiny. Need to connect to PostgreSQL? Good luck finding a mature WASM driver that doesn't suck. Want to use your favorite logging library? Probably doesn't exist yet.

How to Actually Choose

Forget the consultant recommendations. Here's how to actually pick:

Traffic patterns matter most - spiky shit needs Cloud Run, steady workloads go with Fargate, and if you need Windows containers you're stuck with Azure.

If you're already deep in one ecosystem, stay there. All-in on AWS? Use Fargate. Google everything? Cloud Run. Microsoft shop? Azure tax it is.

Team skills matter more than features. Kubernetes veterans should stick with regular GKE/EKS. Docker-only teams love Cloud Run's simplicity. Traditional ops teams handle Fargate better.

Compliance requirements will override everything else. Government work means AWS GovCloud. European data laws need EU regions. Microsoft compliance requirements lock you into Azure whether you like it or not.

What's Coming Next (Probably)

WebAssembly Will Get Real: Right now it's all demos and benchmarks. By 2026, expect AWS and Google to launch proper WASM serverless platforms. The performance gains are too good to ignore once the ecosystem catches up.

Bills Will Force Better Pricing: When serverless hits 20-30% of your cloud budget, CFOs start asking questions. Platforms will add more transparent pricing and better cost controls because they have to.

Edge Computing Everywhere: 5G means your app needs to run everywhere. Cloudflare Workers and Fastly Compute are already showing how this works.

Bottom line: Pick a platform that's not going extinct. AWS, Google, and Microsoft aren't going anywhere. The startups? Civo might survive, but most will get acqui-hired for their talent while their platforms get shut down. Don't bet your production workloads on companies with Series B funding.

Essential Resources for Serverless Container Implementation

Related Tools & Recommendations

tool
Similar content

Azure Container Instances (ACI): Run Containers Without Kubernetes

Deploy containers fast without cluster management hell

Azure Container Instances
/tool/azure-container-instances/overview
100%
compare
Recommended

I Tested 5 Container Security Scanners in CI/CD - Here's What Actually Works

Trivy, Docker Scout, Snyk Container, Grype, and Clair - which one won't make you want to quit DevOps

docker
/compare/docker-security/cicd-integration/docker-security-cicd-integration
62%
troubleshoot
Recommended

Got Hit by CVE-2025-9074? Here's How to Figure Out What Actually Happened

Docker Container Escape Forensics - What I Learned After Getting Paged at 3 AM

Docker Desktop
/troubleshoot/docker-cve-2025-9074/forensic-investigation-techniques
62%
troubleshoot
Recommended

Docker Security Scanning Just Died? Here's How to Unfuck It

Fix Database Downloads, Timeouts, and Auth Hell - Fast

Trivy
/troubleshoot/docker-security-vulnerability-scanning/scanning-failures-and-errors
62%
tool
Recommended

Google Cloud Run - Throw a Container at Google, Get Back a URL

Skip the Kubernetes hell and deploy containers that actually work.

Google Cloud Run
/tool/google-cloud-run/overview
53%
troubleshoot
Similar content

Fix Docker Swarm Node Down: Recovery & Troubleshooting Guide

When your production cluster dies at 3am and management is asking questions

Docker Swarm
/troubleshoot/docker-swarm-node-down/node-down-recovery
52%
tool
Recommended

Azure Container Instances Production Troubleshooting - Fix the Shit That Always Breaks

When ACI containers die at 3am and you need answers fast

Azure Container Instances
/tool/azure-container-instances/production-troubleshooting
51%
pricing
Similar content

Serverless Container Pricing: Reality Check & Hidden Costs Explained

Pay for what you use, then get surprise bills for shit they didn't mention

Red Hat OpenShift
/pricing/container-orchestration-platforms-enterprise/serverless-container-platforms
45%
integration
Recommended

Kafka + MongoDB + Kubernetes + Prometheus Integration - When Event Streams Break

When your event-driven services die and you're staring at green dashboards while everything burns, you need real observability - not the vendor promises that go

Apache Kafka
/integration/kafka-mongodb-kubernetes-prometheus-event-driven/complete-observability-architecture
42%
troubleshoot
Recommended

Fix Kubernetes Service Not Accessible - Stop the 503 Hell

Your pods show "Running" but users get connection refused? Welcome to Kubernetes networking hell.

Kubernetes
/troubleshoot/kubernetes-service-not-accessible/service-connectivity-troubleshooting
42%
troubleshoot
Recommended

When Your Pod Won't Stop Dying - Deep Debugging for the Shit That Actually Matters

When the Obvious Shit Doesn't Work: CrashLoopBackOff That Survives Everything

Kubernetes
/troubleshoot/kubernetes-pod-crashloopbackoff-solutions/persistent-crashloop-scenarios
42%
review
Similar content

Terraform Performance: How to Make Slow Terraform Apply Suck Less

Three years of terraform apply timeout hell taught me what actually works

Terraform
/review/terraform/performance-review
31%
tool
Similar content

AWS AI/ML Cost Optimization: Cut Bills 60-90% | Expert Guide

Stop AWS from bleeding you dry - optimization strategies to cut AI/ML costs 60-90% without breaking production

Amazon Web Services AI/ML Services
/tool/aws-ai-ml-services/cost-optimization-guide
29%
alternatives
Recommended

GitHub Actions Alternatives That Don't Suck

integrates with GitHub Actions

GitHub Actions
/alternatives/github-actions/use-case-driven-selection
29%
alternatives
Recommended

Tired of GitHub Actions Eating Your Budget? Here's Where Teams Are Actually Going

integrates with GitHub Actions

GitHub Actions
/alternatives/github-actions/migration-ready-alternatives
29%
alternatives
Recommended

GitHub Actions Alternatives for Security & Compliance Teams

integrates with GitHub Actions

GitHub Actions
/alternatives/github-actions/security-compliance-alternatives
29%
pricing
Similar content

Kubernetes Pricing: Uncover Hidden K8s Costs & Skyrocketing Bills

The real costs that nobody warns you about, plus what actually drives those $20k monthly AWS bills

/pricing/kubernetes/overview
28%
review
Similar content

Docker Desktop Alternatives: Performance Benchmarks & Cost Analysis - 2025 Review

I tested every major alternative - here's what actually worked, what broke, and which ones are worth the migration headache

Docker Desktop
/review/docker-desktop-alternatives/performance-cost-review
28%
alternatives
Similar content

AWS Lambda Cold Start: Alternatives & Solutions for APIs

I've tested a dozen Lambda alternatives so you don't have to waste your weekends debugging serverless bullshit

AWS Lambda
/alternatives/aws-lambda/by-use-case-alternatives
27%
tool
Recommended

Google Kubernetes Engine (GKE) - Google's Managed Kubernetes (That Actually Works Most of the Time)

Google runs your Kubernetes clusters so you don't wake up to etcd corruption at 3am. Costs way more than DIY but beats losing your weekend to cluster disasters.

Google Kubernetes Engine (GKE)
/tool/google-kubernetes-engine/overview
27%

Recommendations combine user behavior, content similarity, research intelligence, and SEO optimization