Skip to main content

Compute decision tree

Which AWS Compute Service Should I Use?

Stop debating Lambda vs ECS vs EKS in design reviews. Walk the tree, get an opinionated answer, and link straight to the comparison guides.

Last updated: April 30, 2026 Author: FactualMinds AWS Architects Reviewed by: AWS Solutions Architect — Professional certified

Step 1 / Choose to begin

What kind of workload are you running?

Pick the closest match. Long-running services, async jobs, and full Kubernetes ecosystems each have a clear best fit.

How to use this tree

This tree captures the trade-offs we make in real architecture reviews. The goal is not to be exhaustive — it is to get you to a defensible default in 60 seconds. If two answers feel close, walk both branches and read the comparison guides at each leaf; the right call usually becomes obvious.

If you do not see your scenario, the most common hybrid is Lambda for spiky API traffic + Fargate for steady services + Batch for long-running async work. That is a healthy production shape.

All possible recommendations in this tree

Reference list of every endpoint in this decision tree — useful when you want to skim before answering questions, or when JavaScript is disabled.

ECS Fargate (scheduled tasks)

Run a long-running container on demand. Right answer for jobs that exceed 15 minutes but are still bursty enough that you do not want to keep instances warm.

Amazon ECS on EC2

Container orchestration with EC2-level instance control. Pick this when you need GPUs, custom AMIs, or reserved-instance pricing that Fargate cannot offer.

AWS App Runner

The "git push and forget" path. Push a container or source repo, App Runner builds, deploys, scales, and serves it. Good for early product, internal tools, and low-volume APIs.

Amazon Lightsail

Flat-rate VMs with predictable monthly pricing. Good for WordPress, simple back-ends, and dev environments where billing transparency matters more than scale.

AWS Amplify Hosting

Static site + CDN with optional Lambda functions and pre-built integrations. Default for Next.js, Astro, Nuxt, SvelteKit front-ends.

AWS Batch (CPU)

Managed batch scheduling on Fargate or EC2. Handles job queues, retries, dependencies, and instance scaling for embarrassingly parallel CPU work.

AWS Batch (GPU) or Amazon SageMaker Training

For ML training, SageMaker Training gives you the highest-level abstraction. For arbitrary GPU batch (HPC, simulation, custom CUDA), Batch + EC2 GPU instances is right.

Frequently Asked Questions

Why is ECS Fargate the default container recommendation?

ECS Fargate is the lowest-friction container path on AWS. You get container deployment, autoscaling, IAM-integrated networking, and CloudWatch logging without ever touching nodes or kubelets. EKS is more powerful but pays back its complexity only when you actually need the Kubernetes ecosystem (Helm, operators, CRDs, multi-tenancy patterns).

Should I just put everything on Lambda?

Lambda wins on spiky traffic and on jobs that finish under 15 minutes. It loses on steady high-throughput services where Fargate or EC2 is materially cheaper, and it is awkward for long-lived connections like WebSockets. The decision tree captures these breakpoints.

Where does EKS Auto Mode fit?

EKS Auto Mode (GA Dec 2024) removes most node ops — networking, storage, and Karpenter-style autoscaling are managed by AWS. If you already chose EKS, Auto Mode is the easier path. It does not change the EKS-vs-ECS decision; it just lowers the operational tax of being on EKS.

Want a deeper review than the tree?

Send us your workload requirements and we'll write back with a one-page architecture recommendation — usually within two business days.