Welcome to Thoughtful Architect — a blog about building systems that last.

Thoughtful Architect

Choosing the Right AWS Compute Service: Lambda vs Fargate vs EC2 vs App Runner vs ECS vs EKS

Cover Image for Choosing the Right AWS Compute Service: Lambda vs Fargate vs EC2 vs App Runner vs ECS vs EKS
Konstantinos
Konstantinos

When building cloud-native applications on AWS, one of the first architectural decisions is choosing how you want to run your code.

Do you need fine-grained control over infrastructure? Prefer abstracting everything away? Want something in the middle?

AWS has a compute service for each need — but with so many options (Lambda, Fargate, EC2, ECS, EKS, App Runner), it’s easy to get overwhelmed.

Let’s compare them through a pragmatic lens.


🧠 TL;DR

Service Best For Abstraction Cold Starts Cost Efficiency Scaling
Lambda Event-driven, low-traffic, bursty workloads High Yes Excellent for low usage Auto
Fargate Containers without managing servers Medium No Moderate Auto
App Runner Web apps & APIs with zero infra config Very High No Great for small services Auto
ECS Simpler container orchestration Medium No Good with spot instances Manual + Auto
EKS Kubernetes workloads Low No High complexity, high control Manual + Auto
EC2 Full control, legacy apps, stateful systems Very Low N/A Expensive unless optimized Manual

☁️ AWS Lambda

Lambda is the go-to serverless compute service. You write functions, and AWS handles the rest.

✅ Pros

  • No infrastructure to manage
  • Pay only for usage
  • Integrated with many AWS services
  • Great for event-driven systems

❌ Cons

  • Cold starts for certain runtimes
  • Stateless by design
  • Timeout limits (max 15 min)
  • Not great for high-throughput APIs

Best for: Webhooks, automation, scheduled jobs, lightweight APIs


🐳 AWS Fargate

Fargate is the serverless containers service. It lets you run containers without managing EC2 instances.

✅ Pros

  • Runs any container
  • No server management
  • Scales automatically
  • Works with ECS and EKS

❌ Cons

  • Limited customization
  • Slightly higher costs than EC2
  • Less visibility into the underlying infra

Best for: Containerized apps that need fast deployments and moderate complexity


⚙️ AWS App Runner

App Runner is a higher-level abstraction than Fargate — great for web apps or APIs with minimal configuration.

✅ Pros

  • Simplest path to running a web app
  • Scales to zero
  • Supports GitHub and container registries

❌ Cons

  • Limited control
  • Not ideal for background jobs or batch tasks

Best for: Quickly deploying web frontends, internal tools, APIs


🧩 Amazon ECS

ECS is AWS’s own container orchestrator — simpler than Kubernetes, but still powerful.

✅ Pros

  • Deep AWS integration
  • Flexible (runs on EC2 or Fargate)
  • Good for both small and large teams

❌ Cons

  • AWS-specific (vendor lock-in)
  • Not portable across cloud providers

Best for: Teams already committed to AWS, looking for full control over container lifecycles


☸️ Amazon EKS

If you're already using Kubernetes, EKS is the managed way to run it on AWS.

✅ Pros

  • Full Kubernetes API
  • Large ecosystem of tools
  • Ideal for complex, microservice-heavy apps

❌ Cons

  • Steep learning curve
  • Requires DevOps maturity
  • Expensive at low scale

Best for: Enterprise-grade, multi-service, cloud-native applications


🖥️ EC2

Good old EC2 — virtual machines in the cloud. Perfect for legacy apps or custom deployments.

✅ Pros

  • Full control over OS, network, and storage
  • Ideal for stateful apps, long-running services
  • Huge instance variety

❌ Cons

  • Manual scaling, patching, monitoring
  • Higher operational burden

Best for: Legacy migrations, monoliths, stateful services, or when you need control


🔚 Conclusion

Picking the right AWS compute service is all about context:

  • Want simplicity and scale? Try Lambda or App Runner
  • Need containers without ops? Use Fargate
  • Running microservices with orchestration? Look at ECS or EKS
  • Have legacy workloads? Stick with EC2

👉 Don’t fall into the trap of picking the most powerful service “just in case.” Start simple, evolve when necessary.


📚 Related Reading


📦 Recommended Resources

If you're diving deeper into AWS compute services, here are some top-rated books to consider — and yes, these are affiliate links that support the blog at no extra cost to you 🙏

📘 AWS Lambda

📘 Amazon ECS & Fargate

📘 Amazon EKS & Kubernetes

📘 AWS EC2 & General AWS Architecture


As an Amazon Associate, I earn from qualifying purchases — thanks for your support!

No spam. Just real-world software architecture insights.

If this post helped you, consider buying me a coffee to support more thoughtful writing like this. Thank you!

No spam. Just thoughtful software architecture content.

If you enjoy the blog, you can also buy me a coffee