Spis treści 10 sekcji
  1. Czym różnią się te usługi?
  2. Wielka tabela porównawcza
  3. Drzewo decyzyjne - co wybrać?
  4. Scenariusze z życia wzięte
  5. Porównanie kosztów - realne liczby
  6. Praktyka: Deploy aplikacji na ECS Fargate
  7. Kiedy NIE używać kontenerów na AWS
  8. Migracja między usługami
  9. Najczęściej zadawane pytania (FAQ)
  10. Następny krok
TL;DR
  • App Runner - najprostszy wybór, idealny na side projekty i prototypy. Zero konfiguracji infrastruktury.
  • ECS + Fargate - złoty środek dla większości firm. Prostszy niż Kubernetes, wystarczająco elastyczny.
  • ECS + EC2 - gdy potrzebujesz pełnej kontroli nad instancjami (GPU, specyficzny hardware).
  • EKS - gdy już znasz Kubernetes lub potrzebujesz multi-cloud/hybrid. Najwyższy próg wejścia.
  • Koszty mogą się różnić nawet 5x między usługami - wybór ma realne konsekwencje finansowe.

Masz gotowy obraz Dockera i chcesz go uruchomić na AWS. Otwierasz konsolę i widzisz cztery usługi kontenerowe: ECS, EKS, Fargate, App Runner. Każda obiecuje, że jest tą właściwą. Która faktycznie jest?

Pracując jako MSP Engineer w ClearScale, wdrażałem kontenery na AWS dziesiątki razy - od jednoosobowych startupów po korporacje z setkami mikroserwisów. W tym artykule dam Ci konkretne porównanie, tabelę kosztów i drzewo decyzyjne, które pozwoli Ci wybrać w 5 minut. Jeśli dopiero zaczynasz przygodę z kontenerami, przeczytaj najpierw Docker dla początkujących.

Czym różnią się te usługi?

Zanim przejdziemy do porównania, wyjaśnijmy fundamentalną różnicę. Te cztery usługi to nie cztery zamienniki - to różne warstwy abstrakcji:

  • ECS (Elastic Container Service) - orkiestrator kontenerów stworzony przez AWS. Definiujesz zadania (tasks) i serwisy. Decydujesz, czy kontenery działają na EC2 czy Fargate.
  • EKS (Elastic Kubernetes Service) - zarządzany Kubernetes na AWS. Używasz standardowych narzędzi K8s (kubectl, Helm). AWS zarządza control plane.
  • Fargate - serverless compute engine. Nie jest samodzielną usługą, lecz trybem uruchamiania dla ECS lub EKS. Nie zarządzasz żadnymi instancjami EC2.
  • App Runner - w pełni zarządzana usługa. Dajesz obraz z ECR lub kod źródłowy, App Runner robi resztę.
Ważne rozróżnienie: Fargate to nie osobna usługa do uruchamiania kontenerów - to tryb compute dla ECS i EKS. Gdy mówię "ECS Fargate", mam na myśli ECS z Fargate jako silnikiem obliczeniowym (zamiast instancji EC2). To najczęściej wybierana kombinacja.

Wielka tabela porównawcza

CechaECS + FargateECS + EC2EKSApp Runner
Złożoność konfiguracjiŚredniaWysokaBardzo wysokaMinimalna
Krzywa uczenia2-3 tygodnie3-4 tygodnie2-6 miesięcy1-2 dni
Zarządzanie infrastrukturąBrak (serverless)Pełne (patche, skalowanie EC2)Częściowe (worker nodes)Brak
AutoskalowanieTak (task-level)Tak (task + instancje)Tak (pod + node)Tak (automatyczne)
Min. koszt miesięczny~10-15 USD~25-35 USD~75 USD (sam control plane)~5-10 USD
Skalowanie do zeraNie (min. 1 task)NieTak (z KEDA/Karpenter)Tak (z opóźnieniem cold start)
GPU supportNieTakTakNie
Custom networkingTak (VPC, SG)Pełna kontrolaPełna kontrolaOgraniczone
Multi-container podsTak (sidecar)Tak (sidecar)Tak (natywne)Nie
CI/CD integracjaCodePipeline, GitHub ActionsCodePipeline, GitHub ActionsArgoCD, Flux, GitHub ActionsWbudowane auto-deploy
Vendor lock-inŚredni (API AWS)Średni (API AWS)Niski (standardowy K8s)Wysoki
Najlepszy dlaWiększości zastosowańGPU, specjalny hardwareZespołów znających K8sProstych aplikacji webowych

Drzewo decyzyjne - co wybrać?

Zamiast zgadywać, przejdź przez te pytania:

  1. Czy to prosty serwis webowy bez skomplikowanego networkingu?
    • Tak -> App Runner. Koniec, nie komplikuj.
    • Nie -> pytanie 2.
  2. Czy Twój zespół zna i używa Kubernetes?
    • Tak -> EKS. Wykorzystaj istniejącą wiedzę.
    • Nie -> pytanie 3.
  3. Czy potrzebujesz GPU lub specyficznego hardware?
    • Tak -> ECS + EC2 z odpowiednimi instancjami.
    • Nie -> pytanie 4.
  4. Czy planujesz multi-cloud lub migrację poza AWS?
    • Tak -> EKS. Kubernetes jest przenośny.
    • Nie -> ECS + Fargate. Najlepsza relacja prostoty do elastyczności.
Moja rekomendacja: Dla 80% projektów, z którymi pracuję w ClearScale, odpowiedzią jest ECS + Fargate. Jest wystarczająco elastyczny dla złożonych architektur, a jednocześnie nie wymaga zespołu DevOps do zarządzania klastrem Kubernetes. Jeśli dopiero zaczynasz z AWS, sprawdź jak zacząć z AWS w 2026.

Scenariusze z życia wzięte

Scenariusz 1: Side project / MVP

Budujesz aplikację w Node.js lub Pythonie, masz 1-2 kontenery, ruch jest niewielki (kilkaset requestów dziennie). Budżet: jak najmniej.

Wybór: App Runner. Podpinasz repozytorium z GitHub lub obraz z ECR. App Runner buduje, wdraża i skaluje automatycznie. Zero konfiguracji ALB, target group czy task definition. Koszt: 5-15 USD/miesiąc. Rozważ też, czy w tym scenariuszu nie lepiej użyć Lambdy zamiast kontenerów.

Scenariusz 2: Startup z 3-5 mikroserwisami

Masz API gateway, backend, worker do kolejek, może serwis do wysyłki maili. Zespół 3-5 programistów, żaden nie jest DevOps-em z krwi i kości.

Wybór: ECS + Fargate. Definiujesz task definition dla każdego mikroserwisu, ustawiasz ALB do routingu, Service Discovery do komunikacji między serwisami. Fargate eliminuje zarządzanie instancjami. Koszt: 50-200 USD/miesiąc w zależności od ruchu.

Scenariusz 3: Enterprise z 50+ mikroserwisami

Korporacja, kilka zespołów, potrzeba namespace isolation, service mesh, zaawansowane strategie deploymentu (canary, blue/green). Być może multi-cloud.

Wybór: EKS. Kubernetes daje ekosystem narzędzi: Istio/Linkerd (service mesh), ArgoCD (GitOps), Karpenter (autoskalowanie nodów). Koszt: 500+ USD/miesiąc, ale masz pełną kontrolę i przenośność. Potrzebujesz jednak dedykowanego platform engineera.

Porównanie kosztów - realne liczby

Poniższe szacunki dotyczą typowej aplikacji webowej: 2 kontenery (0.5 vCPU, 1 GB RAM każdy), ruch ok. 100k requestów/dzień, region eu-central-1 (Frankfurt).

UsługaComputeStałe opłatySzacunkowy koszt/miesiąc
ECS + Fargate~35 USD (2 taski 24/7)0 USD~35-45 USD
ECS + EC2~25 USD (t3.small On-Demand)0 USD~25-35 USD
EKS + Fargate~35 USD75 USD (control plane)~110-120 USD
EKS + EC2~25 USD75 USD (control plane)~100-110 USD
App Runner~30 USD (z auto-pause)0 USD~30-40 USD
Uwaga na ukryte koszty EKS: Sam control plane EKS kosztuje 75 USD/miesiąc (0.10 USD/h), niezależnie od tego, czy masz 1 czy 100 podów. A jeśli nie zaktualizujesz wersji Kubernetes w ciągu 14 miesięcy od jej wydania w EKS, wchodzisz w extended support i stawka rośnie do 0.60 USD/h (ok. 440 USD/miesiąc). Dla małych projektów to może podwoić lub potroić rachunek. Dodaj do tego koszty NAT Gateway (ok. 32 USD/miesiąc) i ALB (ok. 20 USD/miesiąc), które dotyczą zresztą wszystkich usług.

Praktyka: Deploy aplikacji na ECS Fargate

Przejdźmy od teorii do praktyki. Pokażę Ci jak wrzucić obraz Dockera do ECR i uruchomić go na ECS Fargate. Jeśli nie masz jeszcze Dockera, wróć do przewodnika Docker dla początkujących.

Dwa sposoby, ten sam efekt: Każdy krok poniżej możesz wykonać na dwa sposoby - klikając w panelu webowym AWS albo wpisując komendy w terminalu. Wybierz jedną metodę i trzymaj się jej. Jeśli dopiero zaczynasz, polecam Panel AWS.

Krok 1: Utwórz repozytorium ECR i wypchnij obraz

  1. Otwórz Amazon ECR w konsoli AWS.
  2. Kliknij Create repository.
  3. Wpisz nazwę: moja-aplikacja, zostaw resztę domyślnie.
  4. Kliknij Create repository.
  5. Wejdź w utworzone repozytorium i kliknij View push commands - konsola pokaże Ci gotowe komendy do skopiowania.
Screenshot: ECR console - View push commands z gotowymi komendami do skopiowania
# Utwórz repozytorium ECR
aws ecr create-repository \
  --repository-name moja-aplikacja \
  --region eu-central-1

# Zaloguj Docker do ECR
aws ecr get-login-password --region eu-central-1 | \
  docker login --username AWS --password-stdin \
  123456789012.dkr.ecr.eu-central-1.amazonaws.com

# Zbuduj obraz
docker build -t moja-aplikacja .
# Uwaga: na Macu z Apple Silicon dodaj --platform linux/amd64,
# inaczej Fargate (domyślnie x86_64) nie uruchomi obrazu ARM

# Otaguj obraz
docker tag moja-aplikacja:latest \
  123456789012.dkr.ecr.eu-central-1.amazonaws.com/moja-aplikacja:latest

# Wypchnij do ECR
docker push \
  123456789012.dkr.ecr.eu-central-1.amazonaws.com/moja-aplikacja:latest

Krok 2: Utwórz Task Definition i uruchom serwis ECS

  1. Otwórz Amazon ECS w konsoli.
  2. Przejdź do Task definitions -> Create new task definition.
  3. Nazwa: moja-aplikacja-task, Launch type: AWS Fargate.
  4. CPU: 0.5 vCPU, Memory: 1 GB.
  5. Dodaj kontener: nazwa app, Image URI z ECR (skopiuj z poprzedniego kroku), port 8080.
  6. Kliknij Create.
  7. Przejdź do Clusters -> Create cluster (lub użyj istniejącego).
  8. W klastrze kliknij Create service, wybierz task definition, Desired tasks: 2.
  9. W sekcji Networking skonfiguruj VPC, subnety i Security Group (otwórz port 8080).
  10. Opcjonalnie podepnij Application Load Balancer.
Screenshot: ECS Create Service - konfiguracja task definition i desired count
# Utwórz klaster ECS
aws ecs create-cluster --cluster-name moj-klaster

# Zarejestruj task definition (z pliku JSON)
aws ecs register-task-definition \
  --cli-input-json file://task-definition.json

# Przykładowy task-definition.json:
# {
#   "family": "moja-aplikacja-task",
#   "networkMode": "awsvpc",
#   "requiresCompatibilities": ["FARGATE"],
#   "executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole",
#   "cpu": "512",
#   "memory": "1024",
#   "containerDefinitions": [{
#     "name": "app",
#     "image": "123456789012.dkr.ecr.eu-central-1.amazonaws.com/moja-aplikacja:latest",
#     "portMappings": [{"containerPort": 8080, "protocol": "tcp"}],
#     "essential": true
#   }]
# }

# Utwórz serwis
aws ecs create-service \
  --cluster moj-klaster \
  --service-name moja-aplikacja-svc \
  --task-definition moja-aplikacja-task \
  --desired-count 2 \
  --launch-type FARGATE \
  --network-configuration "awsvpcConfiguration={subnets=[subnet-xxx],securityGroups=[sg-xxx],assignPublicIp=ENABLED}"
Pro tip: Na produkcji nigdy nie używaj :latest jako tagu obrazu. Użyj konkretnego tagu (np. git SHA: :abc1234), żebyś zawsze wiedział, jaka wersja kodu działa. To podstawa bezpiecznych rollbacków.

Kiedy NIE używać kontenerów na AWS

Kontenery nie są odpowiedzią na wszystko. Oto sytuacje, w których lepsze są inne usługi:

  • Proste API lub funkcje event-driven - użyj AWS Lambda. Zero zarządzania, płacisz tylko za wykonania.
  • Statyczna strona internetowa - S3 + CloudFront. Taniej i szybciej niż jakikolwiek kontener.
  • Prosty serwer z GUI (np. WordPress) - pojedyncza instancja EC2 może być prostsza niż konteneryzacja.

Migracja między usługami

Dobra wiadomość: obraz Dockera jest ten sam, niezależnie od tego, gdzie go uruchamiasz. Ścieżka migracji wygląda zwykle tak:

App Runner -> ECS Fargate -> ECS EC2 / EKS

Zaczynasz od najprostszego rozwiązania i przechodzisz na bardziej złożone, gdy tego potrzebujesz. Obraz z ECR działa wszędzie - zmieniasz tylko orkiestrator. To dlatego warto od początku trzymać obrazy w Amazon ECR.

Najczęściej zadawane pytania (FAQ)

Czy Fargate jest droższy od EC2?

Tak, Fargate jest ok. 20-30% droższy od EC2 pod względem czystego compute. Ale eliminujesz koszty zarządzania instancjami: patche, skalowanie, monitorowanie. Dla większości zespołów czas inżynierów jest droższy niż różnica w rachunku AWS. Fargate jest tańszy, gdy weźmiesz pod uwagę Total Cost of Ownership.

Czy mogę uruchomić EKS bez znajomości Kubernetes?

Technicznie tak, ale odradzam. EKS to zarządzany Kubernetes, co oznacza, że AWS dba o control plane, ale Ty wciąż musisz znać koncepty K8s: pods, deployments, services, ingress, RBAC. Bez tej wiedzy będziesz walczyć z każdym problemem. Zacznij od ECS Fargate i przejdź na EKS, gdy zespół dorośnie do Kubernetes.

Czy App Runner nadaje się na produkcję?

Tak, ale z ograniczeniami. App Runner świetnie działa dla prostych aplikacji webowych i API. Nie sprawdzi się, gdy potrzebujesz: sidecar kontenerów, zaawansowanego networkingu (VPC peering, PrivateLink), GPU, cron jobów czy skomplikowanego service discovery. Dla większości startupów i side projektów jest wystarczający.

Ile kosztuje EKS dla małego projektu?

Minimum 75 USD/miesiąc za sam control plane, plus koszty worker nodów (EC2 lub Fargate). Dla małego projektu z 2-3 mikroserwisami realny koszt to 120-180 USD/miesiąc. To dużo w porównaniu z ECS Fargate (35-50 USD) czy App Runner (20-40 USD). EKS finansowo opłaca się od ok. 15-20 mikroserwisów, gdzie ekosystem Kubernetes zaczyna przynosić realne korzyści.

Czy da się przenieść aplikację z ECS na EKS (i odwrotnie)?

Tak, obrazy Dockera z ECR działają na obu platformach. Trzeba jednak przepisać konfigurację orkiestratora: task definitions (ECS) na manifesty Kubernetes (EKS) lub odwrotnie. Sieć, load balancery i IAM role też wymagają rekonfiguracji. Migracja jest wykonalna, ale nie jest trywialna - planuj na 1-2 tygodnie dla małego projektu.

Następny krok

Wiesz już, która usługa kontenerowa jest dla Ciebie. Oto co zrobić dalej:

  1. Jeśli zaczynasz - przeczytaj Docker dla początkujących i zbuduj swój pierwszy obraz.
  2. Jeśli masz obraz - wrzuć go do ECR i uruchom na App Runner (5 minut) lub ECS Fargate (30 minut) według instrukcji wyżej.
  3. Jeśli chcesz zrozumieć koszty - sprawdź jak zacząć z AWS w 2026, gdzie omawiam Free Tier i optymalizację kosztów.
  4. Jeśli potrzebujesz compute bez kontenerów - przeczytaj porównanie EC2 vs Lambda i pełny poradnik EC2.

Masz pytania o kontenery na AWS? Napisz do mnie - chętnie pomogę wybrać najlepsze rozwiązanie dla Twojego projektu.

Emil Kowalczyk

Pasjonat chmury i twórca CloudManiak.pl. Na co dzień MSP Engineer w amerykańskiej firmie ClearScale (AWS Premier Tier Partner). Pomagam osobom wchodzącym do świata chmury zdobywać wiedzę i certyfikaty.