AWS offers three mature paths for running containers in production, and the right choice depends on your team's operational maturity, workload characteristics, and long-term portability requirements. This article breaks down ECS vs EKS vs Fargate with concrete trade-offs, real service limits, and decision criteria you can apply today.
Whether you are migrating a monolith to microservices, building a greenfield platform, or rationalizing a sprawling container estate, understanding how container orchestration options differ on AWS will save you months of painful re-architecture later.
What Is Container Orchestration and Why Does It Matter?
Container orchestration is the automated management of containerized workloads: scheduling containers onto compute, handling failures, scaling replicas, managing networking, and rolling out updates without downtime. Without orchestration, running more than a handful of containers reliably becomes operationally untenable.
AWS provides three primary options:
- Amazon ECS (Elastic Container Service) — AWS-native orchestrator, tightly integrated with IAM, ALB, and CloudWatch.
- Amazon EKS (Elastic Kubernetes Service) — Managed Kubernetes control plane, compatible with the broader CNCF ecosystem.
- AWS Fargate — Serverless compute engine that runs containers without you managing EC2 instances; it works with both ECS and EKS.
Understanding these three is not an either/or exercise. Fargate is a launch type, not a standalone orchestrator, and many production architectures mix EC2 and Fargate within the same ECS or EKS cluster.
Amazon ECS: The AWS-Native Orchestrator
ECS is the lowest-friction way to run containers on AWS if your team lives primarily in the AWS ecosystem. It uses a proprietary control plane that AWS operates fully, so there is no control-plane cost and no Kubernetes API server to patch.
How ECS Works
ECS organizes workloads into task definitions (analogous to pod specs), services (long-running replicas with auto-scaling and load-balancer integration), and clusters (logical groupings of compute). The scheduler places tasks on either EC2 instances running the ECS agent or on Fargate.
Key integration points:
- IAM Task Roles — Fine-grained permissions per task, not per instance.
- AWS Cloud Map — Service discovery via DNS or API.
- Application Load Balancer (ALB) — Path- and header-based routing to ECS services; supports dynamic port mapping on EC2 launch type.
- Amazon ECS Exec — Direct shell access into running containers via SSM, no SSH required.
- EventBridge Pipes — Trigger ECS tasks from queues, streams, or schedules without a separate Lambda.
ECS Limits Worth Knowing
- Maximum task definitions per account: 1,000,000 (effectively unlimited in practice).
- Maximum tasks per service: 5,000 (soft limit, raisable).
- Maximum clusters per region: 10,000.
- Container definition environment variables: 20 KB total per task definition.
When ECS Makes Sense
ECS is a strong default for teams that want operational simplicity and do not need Kubernetes-specific tooling (Helm, Argo CD, custom operators). It is also the right choice when your engineers are AWS-certified but not Kubernetes-certified, and when you have no requirement for multi-cloud portability.
Amazon EKS: Managed Kubernetes for the CNCF Ecosystem
EKS gives you a fully conformant Kubernetes control plane managed by AWS, enabling you to use the entire CNCF toolchain while offloading etcd backups, API server upgrades, and control-plane HA to AWS. The trade-off is higher operational complexity and an explicit control-plane cost.
How EKS Works
EKS runs a multi-AZ Kubernetes control plane (API server + etcd) that AWS manages. You are responsible for worker nodes — either EC2 node groups (managed or self-managed), Fargate profiles, or EKS Auto Mode (GA since late 2024), which automates node provisioning and lifecycle using Karpenter under the hood.
Key integration points:
- AWS Load Balancer Controller — Provisions ALBs and NLBs from Kubernetes
IngressandServiceobjects. - Amazon VPC CNI — Assigns real VPC IP addresses to pods, enabling direct pod-to-pod routing without overlay networks.
- IRSA (IAM Roles for Service Accounts) — Maps Kubernetes service accounts to IAM roles via OIDC.
- Karpenter — Open-source node autoscaler that provisions right-sized EC2 instances in seconds, replacing Cluster Autoscaler for most use cases.
- Amazon EKS Anywhere — Run EKS on-premises or on other clouds using the same control-plane API.
EKS Limits Worth Knowing
- Control-plane cost: $0.10 per hour per cluster (~$73/month), regardless of workload size.
- Maximum nodes per cluster: 5,000 (managed node groups) / 450 (Fargate pods per profile).
- Maximum pods per node: depends on instance type and VPC CNI prefix delegation; with prefix delegation enabled, a
m5.xlargesupports up to 58 pods. - Kubernetes version support window: approximately 14 months per minor version before AWS forces an upgrade.
When EKS Makes Sense
EKS is the right choice when you need Kubernetes-native tooling (Helm charts, Argo CD, Istio, Prometheus Operator), when you have engineers with existing Kubernetes expertise, or when multi-cloud or hybrid portability is a hard requirement. It is also the only option if you need custom resource definitions (CRDs) or admission webhooks.
AWS Fargate: Serverless Compute for Containers
Fargate removes EC2 instance management entirely — you define CPU and memory at the task or pod level, and AWS provisions isolated microVM compute behind the scenes. It works as a launch type for both ECS and EKS.
How Fargate Works
Each Fargate task or pod runs in its own Firecracker microVM, providing strong workload isolation without shared kernel risk. You specify vCPU and memory from a fixed matrix (e.g., 0.25 vCPU / 0.5 GB up to 16 vCPU / 120 GB on ECS Fargate as of 2026). AWS handles patching the underlying host OS.
Fargate pricing is per-second, billed on vCPU-hours and GB-hours. Fargate Spot offers up to 70% discount for interruption-tolerant workloads (batch jobs, CI runners).
Fargate Constraints
- No GPU support on ECS Fargate (EKS Fargate also lacks GPU).
- No privileged containers or host networking mode on ECS Fargate.
- Ephemeral storage: up to 200 GB per task (configurable, default 20 GB).
- Cold start latency: typically 10–30 seconds for a new task, longer than pre-warmed EC2 nodes.
ECS vs EKS vs Fargate: Side-by-Side Comparison
The table below compares the three options across the dimensions that matter most for architecture decisions.
| Dimension | ECS (EC2) | ECS (Fargate) | EKS (EC2) | EKS (Fargate) |
|---|---|---|---|---|
| Control-plane cost | $0 | $0 | ~$73/mo | ~$73/mo |
| Node management | You manage | AWS manages | You manage | AWS manages |
| Kubernetes API | No | No | Yes | Yes |
| GPU support | Yes | No | Yes | No |
| Multi-cloud portability | No | No | Yes | Yes |
| Cold start speed | Fast (pre-warmed) | 10–30 s | Fast (pre-warmed) | 10–30 s |
| Operational complexity | Low | Very low | High | Medium |
| Spot/preemptible nodes | Yes | Fargate Spot | Yes (Karpenter) | Fargate Spot |
| Custom OS / kernel | Yes | No | Yes | No |
| Ideal team profile | AWS-focused | Small/serverless | Kubernetes-native | K8s + no node ops |
[Practical](https://www.draft1.ai/blog/sql-vs-nosql-a-practical-database-architecture-decision-guide-for-2026) Architecture Patterns
Pattern 1: ECS + Fargate for a SaaS API
A typical SaaS backend with unpredictable traffic spikes benefits from ECS services on Fargate. Each microservice is a separate ECS service behind an ALB target group. Application Auto Scaling adjusts task count based on ALB request count per target. No EC2 instances to patch, no cluster nodes to right-size.
Pattern 2: EKS + Karpenter for a Data Platform
A data platform running Spark on Kubernetes, Argo Workflows for pipelines, and Prometheus + Grafana for observability is a natural fit for EKS. Karpenter provisions r6g (Graviton) Spot instances for Spark executors and on-demand m7i nodes for the control workloads. IRSA grants each Spark job role access to specific S3 buckets.
Pattern 3: Hybrid ECS Cluster (EC2 + Fargate)
Long-running, latency-sensitive services run on reserved EC2 capacity within an ECS cluster. Burst and batch workloads use Fargate Spot tasks triggered by SQS queue depth via Application Auto Scaling. This hybrid model optimizes cost without sacrificing baseline performance.
Key Takeaways
- ECS is the lowest-complexity option for teams already invested in AWS tooling; it has no control-plane cost and deep native integrations.
- EKS is the right choice when Kubernetes portability, CRDs, or the CNCF ecosystem are hard requirements, but it adds ~$73/month per cluster and significant operational overhead.
- Fargate is a compute layer, not an orchestrator — it eliminates node management for both ECS and EKS but introduces cold-start latency and lacks GPU support.
- Karpenter on EKS has largely replaced Cluster Autoscaler for node provisioning and dramatically reduces time-to-scale for EC2-backed EKS clusters.
- Cost optimization on EC2-backed clusters (ECS or EKS) benefits from Spot instances and Graviton (ARM) instance types, which offer up to 40% better price-performance than equivalent x86 instances.
- Fargate Spot is an underused cost lever for batch and CI workloads — up to 70% cheaper than on-demand Fargate with no node management overhead.
- Multi-cloud or on-premises requirements almost always point to EKS (or EKS Anywhere), since ECS has no equivalent outside of AWS.
Frequently Asked Questions
Is Fargate a replacement for ECS or EKS?
No — Fargate is a compute launch type, not an orchestrator. You still need either ECS or EKS to schedule, scale, and manage your containers; Fargate simply removes the need to provision and manage EC2 worker nodes beneath them.
Which is cheaper: ECS or EKS?
ECS is cheaper at small scale because there is no control-plane fee. EKS costs approximately $73/month per cluster regardless of workload size, so it only becomes cost-competitive when the operational benefits of Kubernetes justify that baseline. At large scale, the difference is negligible relative to compute costs.
Can I run GPU workloads on Fargate?
No — as of 2026, Fargate does not support GPU instances on either ECS or EKS. GPU workloads require EC2-backed nodes (e.g., p4d, g5, or inf2 instance families) on either ECS or EKS.
How does EKS Auto Mode differ from standard managed node groups?
EKS Auto Mode (GA since late 2024) uses Karpenter to automatically provision, scale, and terminate EC2 nodes based on pending pod requirements, without you defining node groups or launch templates. Standard managed node groups require you to pre-define instance types, sizes, and scaling policies.
What is the cold start problem with Fargate, and how do I mitigate it?
Fargate tasks start in 10–30 seconds because AWS must provision a Firecracker microVM for each new task. You can mitigate this by keeping a minimum task count above zero, using ECS Service Connect to avoid task churn during deployments, and pre-pulling large container images using ECR to reduce image pull time.
Should I use ECS or EKS for a new greenfield project in 2026?
Start with ECS on Fargate unless you have a specific reason to need Kubernetes. ECS is simpler to operate, has no control-plane cost, and integrates natively with AWS services. Migrate to EKS later if you hit a concrete limitation — such as needing Helm-based third-party operators or multi-cloud portability.
How do I visualize and document my ECS or EKS architecture?
Tools like draft1.ai let you describe your container orchestration architecture in plain language and generate accurate AWS architecture diagrams automatically. This is particularly useful for documenting ECS task networking, EKS VPC CNI topology, or Fargate service mesh configurations without manually placing icons in a drawing tool.
Draw this in seconds with draft1. Describe your architecture in plain English and draft1 generates an editable AWS/cloud diagram plus documentation — no dragging boxes around. Try it free.
Draw this in ~20 seconds
Describe your own version of this architecture and draft1 generates an editable draw.io diagram — boxes, arrows, labels, the lot.
Generate this diagram free ➔Free demo — no signup. Then 3 free diagrams with an account, no card.