ECS or EKS?
Deciding with evidence, not opinion.
Part 1: The problem
QuickCart’s orders service runs on ECS. It works: releases have no dropped requests, and a bad release rolls itself back.
Then a new payments service is planned. Kofi wants it on Kubernetes: “It’s the industry standard. Every job advert asks for it.” Priya wants ECS: “We already know it, and there are four of us.”
The argument runs for two weeks, in meetings and in chat. Nobody changes their mind, because nobody is arguing about the same thing. Kofi is talking about the industry; Priya is talking about the team.
Both mistakes come from deciding by reputation. This lesson is about deciding with evidence: what each platform really costs this team, measured, and written down so the decision survives someone arguing the other side.
Part 2: The idea
ECS and EKS do the same job. Both take your image, keep a set number of copies running, replace them when they fail, release new versions gradually, and put a load balancer in front. They run the same container image, in the same VPC, behind the same kind of load balancer, with the same IAM and CloudWatch.
The difference is how much of the platform you run yourself, and what you get in return.
The comparison, on the five things that matter
| ECS on Fargate | EKS | |
|---|---|---|
| Operational load | Very little. No cluster to upgrade, no servers, no add-ons to maintain | A cluster to upgrade regularly, nodes to patch (unless you use Fargate), and add-ons such as the load balancer controller to keep current |
| Cost before any app runs | Nothing. You pay for the tasks that run | About $0.10 an hour per cluster for the control plane on standard support, roughly $73 a month. Older versions on extended support cost about six times more |
| Ecosystem | AWS’s own integrations, and not much beyond them | Very large: Helm charts, operators, GitOps tools, custom resources and your own controllers |
| Portability | AWS only | Runs on every major cloud and on your own servers. Your AWS-specific parts, like load balancer annotations and IAM, still need rewriting |
| Team skills | Few new ideas: task definition, service, cluster | Many new ideas: pods, deployments, services, ingress, namespaces, probes, RBAC, and how EKS connects them to AWS |
Prices are for us-east-1 at the time of writing, and they change. Check the ECS and EKS pricing pages before you quote numbers.
What you actually saw, running the same service on both
These come from the ECS on Fargate and Kubernetes and EKS labs, where the same image ran on both:
| ECS on Fargate | EKS | |
|---|---|---|
| Creating the cluster | Seconds. It’s only a name | About 15 to 20 minutes: a control plane, nodes and their IAM roles |
| Connecting a load balancer | One section of the service form | Install the AWS Load Balancer Controller: an IAM policy, a service account with a role, a Helm install, then an Ingress |
| Health check fails | The task is replaced | With a failing readiness probe, the pod gets no traffic but isn’t restarted |
| Undoing a broken release | Automatic, with the circuit breaker’s rollback on | You run kubectl rollout undo. Kubernetes stops and waits |
| Releasing without dropped requests | Mostly handled by ECS | You add a readiness gate and a preStop wait yourself |
Six questions that decide it
A recommendation isn’t a feature list. It answers: for this team, running this app, what should they do?
| Question | Why it matters |
|---|---|
| Who will run the platform? | The biggest factor. Kubernetes needs people who know it well, on call |
| Is running outside AWS a real plan? | Portability is only worth something if you’ll use it. “Maybe one day” rarely counts |
| Does the app need something only Kubernetes has? | Name the tool. If you can’t, the answer is no |
| What does the team know today? | Learning Kubernetes well takes months |
| What already runs in production? | Adding a second platform means two ways to release, debug and secure everything |
| How many services and teams? | Kubernetes’ fixed costs pay back better across many teams than across a handful of services |
When each one fits
| ECS usually fits when | EKS usually fits when |
|---|---|
| The team is small, and the people running the platform also write features | There’s a platform team whose job is to run it |
| Everything runs on AWS, with no real plan to leave | Running on another cloud or your own servers is planned, with a date |
| The team knows ECS, or neither | The team already knows Kubernetes well |
| There’s no named Kubernetes-only need | The app needs a specific operator, a custom controller or another Kubernetes-only tool |
| Other services already run on ECS | Other services already run on Kubernetes |
Part 3: See it
Answer each question for your own team, or fill in QuickCart’s answers. Then change one answer at a time and watch which ones move the recommendation.
- Who will run the platform day to day?
- Is running outside AWS a real plan?
- Does the app need a tool only Kubernetes has?
- What does the team know today?
- What already runs in production?
- How many services, and how many teams?
Recommendation
Answer the questions
No answers yet.
Choose one answer for each of the 6 questions. The recommendation and its reasons appear here as you go.
What to notice: no single feature decides it. The answers that move the recommendation most are about people: who runs it, what they know, and what already runs. That’s why the memo you’ll write leads with the team, not the technology.
Part 4: Do it
Free — you write a document. Nothing is created in AWS.
You’ll write a one-page recommendation, the kind a team lead or architect asks for before a platform decision. About 30 minutes. It’s best done after the ECS and EKS labs, so you can use your own numbers. If you haven’t done them, use the numbers in the idea.
Collect the evidence
Make a table of facts before you write any opinions. For each row, use your own measurement if you have one. Otherwise use the course’s figures and say so.
What ECS on Fargate EKS Where it comes from Time to create the cluster seconds your time, or about 15 to 20 minutes your lab notes Steps to connect a load balancer one form section your count of commands your lab notes Failed requests during a release under load your number your number Releases without downtime Undoing a bad release automatic one command the labs Cost before any app runs $0 about $73 a month AWS pricing pages, checked today Servers to look after none your nodes, unless on Fargate the labs You should seeA table where every number has a source. If a cell says “I think”, find the number or leave the row out.
Answer the six questions for your team
Use the decision helper in See it. Answer honestly for the team that would run the platform, not for an imaginary bigger one.
Write down the recommendation it gives, and which answers pushed it hardest. Those answers are the reasons you’ll lead with.
Write the memo
Create a file called
recommendation.mdand fill in this template. Replace every line in capitals. Keep it to one page.recommendation.mdRecommendation: ECS OR EKS for new services. Why: THE ONE DECIDING REASON, IN ONE SENTENCE. What we measured: Time to create a cluster: ECS NUMBER EKS NUMBER Steps to connect a load balancer: ECS NUMBER EKS NUMBER Failed requests during a release: ECS NUMBER EKS NUMBER Undoing a bad release: ECS ANSWER EKS ANSWER Cost before any app runs: ECS NUMBER EKS NUMBER Operational burden: WHAT EACH ONE MAKES US LOOK AFTER, AND WHO WOULD DO IT. Cost at our scale: THE FIXED COST, AND PEOPLE'S TIME, COMPARED WITH OUR BILL. Team readiness: WHO KNOWS WHAT TODAY, AND HOW LONG LEARNING WOULD TAKE. Migration risk: WHAT ALREADY RUNS, AND WHAT RUNNING TWO PLATFORMS WOULD COST. The strongest argument against this, and our answer: ARGUMENT. ANSWER. What would change our mind: THE FACTS THAT WOULD FLIP THIS DECISION.Section What goes in it RecommendationThe answer first. A reader who stops here still knows what you think WhyOne reason. If you need three, the first one isn’t strong enough What we measuredThe evidence table, short The four middle sections One short paragraph each, with a number where you have one The strongest argument against thisThe best case for the other side, stated fairly, then your answer What would change our mindThe facts that would flip the decision. This is what makes it a judgement, not a preference You should seeOne page. The first line is the answer. Every paragraph has at least one fact or number.
Argue the other side
Before anyone else does, write down the strongest argument against your recommendation, and answer it. These are the ones you’ll hear:
If you recommend ECS, expect If you recommend EKS, expect “Kubernetes is the standard. It’s easier to hire for.” “Now we run two platforms. Who looks after both?” “EKS stops us being locked in to AWS.” “Is leaving AWS actually planned, with a date?” “Kubernetes has tools ECS doesn’t.” “Which tool does this app actually need?” “We’ll outgrow ECS.” “What will we be doing in the months it takes to learn this?” Pick the one that worries you most, and put it in the memo with your answer.
Check it
Read the memo against this list, and fix anything that fails:
Check Passes when The answer comes first The first line says ECS or EKS Every claim has evidence Each paragraph has a number, a measurement or a source Prices are dated Every price says where and when you checked it The other side is fair Someone who disagrees would recognise their best argument It can change “What would change our mind” names specific facts It fits on one page If not, cut adjectives first, then repeated points Clean-up step: Clean up
Nothing was created in AWS in this lab, so there’s nothing to delete. Keep
recommendation.md; Project 3 asks for exactly this memo, with your own measurements.If you still have the ECS service or the EKS cluster from the earlier labs, delete them now using those lessons’ clean-up steps. An EKS cluster costs money every hour it exists, even when idle.
Part 5: Check yourself
A two-person team already runs everything on ECS. A new service is coming. Someone says "Kubernetes is the industry standard, so we should use EKS". What's the strongest reply?
What does an EKS cluster cost before any app runs on it, on standard support in us-east-1?
Why does an EKS cluster need regular work even when nobody changes the apps?
A new version is broken. Its new copies keep failing to start. What do ECS and Kubernetes each do by default?
Which sentence makes a recommendation hardest to argue with?
Part 6: Cheat sheet
| Question or fact | What to remember |
|---|---|
| Same job? | Yes. Both run the same image, behind the same load balancers, in the same VPC |
| ECS control plane cost | None. You pay for tasks |
| EKS control plane cost | About $0.10 an hour on standard support, about six times more on extended support. Prices change |
| EKS upkeep | Regular version upgrades for the cluster, nodes and add-ons |
| Broken release | ECS with the circuit breaker rolls back itself. Kubernetes waits for kubectl rollout undo |
| Biggest factor | Who will run the platform |
| Portability | Worth something only if leaving AWS is really planned |
| “We need Kubernetes for X” | Name X. If you can’t, you don’t |
| Already on one platform? | A second one doubles how you release, debug and secure |
| A good memo | Answer first, evidence, the strongest counter-argument, and what would change your mind |