Laptop to Production

ECS or EKS?

Deciding with evidence, not opinion.

Time
30 minutes
Level
Intermediate

Part 1: The problem

QuickCart, the platform argument

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.

Key point: Choose the platform your team can run well at 2am, and write down what would change your mind.

The comparison, on the five things that matter

ECS on FargateEKS
Operational loadVery little. No cluster to upgrade, no servers, no add-ons to maintainA 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 runsNothing. You pay for the tasks that runAbout $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
EcosystemAWS’s own integrations, and not much beyond themVery large: Helm charts, operators, GitOps tools, custom resources and your own controllers
PortabilityAWS onlyRuns on every major cloud and on your own servers. Your AWS-specific parts, like load balancer annotations and IAM, still need rewriting
Team skillsFew new ideas: task definition, service, clusterMany 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 FargateEKS
Creating the clusterSeconds. It’s only a nameAbout 15 to 20 minutes: a control plane, nodes and their IAM roles
Connecting a load balancerOne section of the service formInstall the AWS Load Balancer Controller: an IAM policy, a service account with a role, a Helm install, then an Ingress
Health check failsThe task is replacedWith a failing readiness probe, the pod gets no traffic but isn’t restarted
Undoing a broken releaseAutomatic, with the circuit breaker’s rollback onYou run kubectl rollout undo. Kubernetes stops and waits
Releasing without dropped requestsMostly handled by ECSYou 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?

QuestionWhy 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 whenEKS usually fits when
The team is small, and the people running the platform also write featuresThere’s a platform team whose job is to run it
Everything runs on AWS, with no real plan to leaveRunning on another cloud or your own servers is planned, with a date
The team knows ECS, or neitherThe team already knows Kubernetes well
There’s no named Kubernetes-only needThe app needs a specific operator, a custom controller or another Kubernetes-only tool
Other services already run on ECSOther 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.

  1. Who will run the platform day to day?
  2. Is running outside AWS a real plan?
  3. Does the app need a tool only Kubernetes has?
  4. What does the team know today?
  5. What already runs in production?
  6. 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.

    ReadyAnswer each question for your own team, or choose Fill in QuickCart's answers. Every answer shows why it counts.

    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.

    1. 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.

      WhatECS on FargateEKSWhere it comes from
      Time to create the clustersecondsyour time, or about 15 to 20 minutesyour lab notes
      Steps to connect a load balancerone form sectionyour count of commandsyour lab notes
      Failed requests during a release under loadyour numberyour numberReleases without downtime
      Undoing a bad releaseautomaticone commandthe labs
      Cost before any app runs$0about $73 a monthAWS pricing pages, checked today
      Servers to look afternoneyour nodes, unless on Fargatethe labs
      You should see

      A table where every number has a source. If a cell says “I think”, find the number or leave the row out.

    2. 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.

    3. Write the memo

      Create a file called recommendation.md and fill in this template. Replace every line in capitals. Keep it to one page.

      recommendation.md
      Recommendation: 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.
      SectionWhat 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 sectionsOne 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 see

      One page. The first line is the answer. Every paragraph has at least one fact or number.

    4. 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, expectIf 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.

    5. Check it

      Read the memo against this list, and fix anything that fails:

      CheckPasses when
      The answer comes firstThe first line says ECS or EKS
      Every claim has evidenceEach paragraph has a number, a measurement or a source
      Prices are datedEvery price says where and when you checked it
      The other side is fairSomeone who disagrees would recognise their best argument
      It can change“What would change our mind” names specific facts
      It fits on one pageIf not, cut adjectives first, then repeated points
    6. 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

    On one card
    Question or factWhat to remember
    Same job?Yes. Both run the same image, behind the same load balancers, in the same VPC
    ECS control plane costNone. You pay for tasks
    EKS control plane costAbout $0.10 an hour on standard support, about six times more on extended support. Prices change
    EKS upkeepRegular version upgrades for the cluster, nodes and add-ons
    Broken releaseECS with the circuit breaker rolls back itself. Kubernetes waits for kubectl rollout undo
    Biggest factorWho will run the platform
    PortabilityWorth 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 memoAnswer first, evidence, the strongest counter-argument, and what would change your mind

    Finished the build and the quiz? Mark it done to fill in its stop on the route map.