• Backend i DevOps
  • AWS Fargate - Czy to naprawdę serwerless bez obowiązków?

AWS Fargate - Czy to naprawdę serwerless bez obowiązków?

Tymoteusz Kowalski 21 lutego 2026
Kontenery unoszą się na chmurach, jakby były częścią AWS Fargate. Dwa czerwone kontenery i jeden niebieski tworzą surrealistyczny krajobraz.

Spis treści

AWS Fargate pozwala uruchamiać kontenery bez zarządzania serwerami, ale to nie jest „magia bez obowiązków”. W praktyce zyskujesz mniej pracy operacyjnej, prostsze wdrożenia i szybsze skalowanie, a jednocześnie nadal musisz dobrze dobrać CPU, pamięć, sieć i uprawnienia. W tym artykule rozkładam temat na części: jak działa to w ECS i EKS, ile kosztuje, gdzie ma sens oraz kiedy lepiej wybrać inną ścieżkę.

Najważniejsze fakty o uruchamianiu kontenerów bez serwerów

  • AWS Fargate odciąża z zarządzania hostami, ale nie zwalnia z decyzji o CPU, pamięci, sieci i IAM.
  • W ECS każdy task działa na własnym ENI, a w EKS trzeba zdefiniować profil Fargate dla namespace lub etykiet.
  • Rozliczenie jest sekundowe, z 1-minutowym minimum; dodatkowy storage i publiczne adresy IPv4 mogą podnieść koszt.
  • Najlepiej sprawdza się przy API, workerach, mikrousługach i ruchu o zmiennym profilu.
  • Słabiej pasuje do scenariuszy z daemonami, privileged containers, GPU, host networking i ciężkim toolingu node-level.

Czym jest Fargate i co naprawdę upraszcza

Fargate od AWS jest serwerlessowym silnikiem obliczeniowym dla kontenerów. W praktyce oznacza to, że nie stawiasz, nie łatasz i nie skalujesz własnych instancji EC2 tylko po to, żeby uruchomić task albo pod. Orkiestracja nadal należy do ECS albo EKS, ale warstwa infrastruktury schodzi z Twojej głowy.

Ja patrzę na to tak: Fargate dobrze sprawdza się wtedy, gdy chcesz skupić się na aplikacji, a nie na utrzymaniu klastra. Nadal definiujesz obraz kontenera, porty, zmienne środowiskowe, pamięć, CPU, IAM i polityki sieciowe. Znika natomiast cała obsługa hostów, patchowania systemu, doboru rozmiaru nodów i planowania pojemności.

To jest ważne rozróżnienie, bo Fargate nie zwalnia z architektury. Jeśli obraz jest ciężki, logów jest za dużo, a aplikacja nie reaguje dobrze na SIGTERM, problem zostanie, tylko będzie działał na mniej widocznej warstwie. Największa korzyść polega więc nie na „braku DevOps”, lecz na redukcji operacyjnego tarcia.

Porównanie procesów wdrażania aplikacji: bez AWS Fargate (zarządzanie instancjami EC2) i z AWS Fargate (uproszczone zarządzanie zasobami).

Jak działa to w ECS i EKS

Najprościej: ECS i EKS decydują co ma działać, a Fargate dostarcza na czym to działa bez Twojego udziału w zarządzaniu hostem. Różnica między tymi dwoma torami jest istotna, bo w każdym z nich konfiguracja wygląda inaczej.

W ECS

W Amazon ECS task na Fargate wymaga trybu awsvpc, czyli każdy task dostaje własną elastyczną kartę sieciową ENI. To upraszcza izolację i reguły bezpieczeństwa, ale oznacza też, że musisz wskazać subnety i security groups. Jeśli deployujesz usługę w subnetach publicznych, możesz przydzielić publiczny adres IP. Jeśli zostajesz w prywatnych, przygotuj NAT albo prywatne endpointy do usług, z których task musi korzystać.

W praktyce oznacza to zwykle taki przepływ: budujesz obraz, wypychasz go do rejestru, definiujesz task definition z CPU, pamięcią, logowaniem i rolą IAM, a potem uruchamiasz service. Same kontenery w obrębie jednego taska mogą rozmawiać przez localhost, co bywa wygodne przy sidecarach.

Przeczytaj również: REST API w praktyce - Jak budować przewidywalne integracje?

W EKS

W Amazon EKS nie wybierasz po prostu „włącz Fargate” i koniec. Najpierw tworzysz Fargate profile, czyli regułę, która mówi, które namespace’y lub etykiety mają być planowane na Fargate. Do tego dochodzi pod execution role, bo infrastruktura uruchamiająca pod musi mieć prawo pobrać obrazy, odczytać sekrety i wykonać wymagane akcje w AWS.

Tu ważne są też subnety. Pods na Fargate w EKS działają w prywatnych subnetach i nie dostają publicznych adresów IP. Jeśli pod nie pasuje do profilu w momencie planowania, może utknąć w stanie Pending. To jeden z tych szczegółów, które lubią zaskoczyć przy pierwszym wdrożeniu.

Wniosek jest prosty: w ECS konfigurujesz taski i sieć bardziej „aplikacyjnie”, a w EKS musisz dodatkowo pilnować selektorów profili i zasad planowania podów. Następny krok to policzyć, kiedy taki model ma sens finansowy.

Koszty, rozmiary i billing, które warto policzyć wcześniej

Według AWS rozliczenie jest oparte na przydzielonych zasobach: vCPU, pamięci, systemie operacyjnym, architekturze CPU i storage. Liczenie zaczyna się w chwili rozpoczęcia pobierania obrazu, a kończy po zakończeniu taska lub poda, z rozliczeniem sekundowym i minimalnym czasem 1 minuty. Dla Windows minimalny czas rozliczenia wynosi 5 minut. Do tego dochodzi domyślne 20 GB storage ephemeral; wszystko ponad ten limit jest dodatkowo płatne.

Praktyczne znaczenie jest takie: płacisz za to, co zarezerwowałeś, a nie za sam fakt, że kontener chwilowo „czeka”. Dla ruchu skokowego to bywa bardzo wygodne. Dla obciążeń stale wysokich model per-second nie zawsze wygrywa z własnymi nodami, bo rezerwujesz CPU i pamięć cały czas.

CPU Dozwolona pamięć Typowy sens użycia
0,25 vCPU 0,5 GB, 1 GB, 2 GB Małe API, cron, lekki worker
0,5 vCPU 1-4 GB Mała usługa backendowa
1 vCPU 2-8 GB Standardowy mikroserwis
2 vCPU 4-16 GB Cięższe API, integracje, worker CPU-bound
4 vCPU 8-30 GB Większe usługi, większy cache, większe batch'e
8 vCPU 16-60 GB Duże procesy przetwarzające
16 vCPU 32-120 GB Największe workloady na Fargate
W kosztach łatwo przegapić trzy rzeczy: dodatkowe opłaty za publiczne IPv4, transfer danych i usługi wspierające, na przykład CloudWatch Logs. Jeśli logujesz zbyt dużo albo wysyłasz duży wolumen poza VPC, rachunek potrafi rosnąć szybciej niż sam compute.

W ECS możesz też rozważyć Fargate Spot dla zadań odpornych na przerwania. AWS podaje, że pozwala to zejść nawet o 70% względem standardowej ceny Fargate, ale dotyczy to tylko ECS, tylko Linux i tylko x86/ARM. Jeśli masz stałe użycie, warto natomiast sprawdzić Savings Plans, bo dla przewidywalnych obciążeń potrafią dać do 50% oszczędności.

Jeśli więc ktoś pyta mnie, czy Fargate jest „tani”, odpowiadam ostrożnie: bywa bardzo opłacalny operacyjnie, ale finansowo trzeba go liczyć razem z siecią, logami i profilem zużycia. Po kosztach naturalnie pojawia się pytanie o ograniczenia, bo to właśnie one decydują, czy wybór jest bezpieczny.

Ograniczenia i typowe pułapki, które warto znać przed startem

  • Jak podaje AWS, EKS Fargate nie wspiera Fargate Spot, więc nie zbudujesz tam taniego, przerywalnego poola w ten sam sposób co w ECS.
  • W EKS nie ma wsparcia dla DaemonSetów, kontenerów uprzywilejowanych, HostNetwork, HostPort ani GPU. Jeśli agent monitoringowy albo bezpieczeństwa działa jak daemon, trzeba go przeprojektować.
  • W EKS pods działają w prywatnych subnetach i nie dostają publicznych IP, więc architektura sieci musi to uwzględnić od początku.
  • W ECS Fargate wymagany jest tryb awsvpc. Jeśli nie przygotujesz subnetów, security groups i drogi do internetu albo endpointów VPC, pull obrazu lub pobieranie sekretów nie ruszy.
  • Windows containers działają na Fargate w ECS, ale nie na podach EKS. To ważny szczegół przy migracjach starszych aplikacji.
  • W EKS Fargate zasoby zadeklarowane w podzie mają realne znaczenie, bo to one determinują, co zostanie aprowizowane. Zbyt ciasne requesty szybko kończą się throttlingiem albo restartami.
  • Domyślne 20 GB storage ephemeral wystarcza dla wielu usług, ale przy większych plikach tymczasowych, buforach i buildach trzeba to policzyć wcześniej.

To nie są wady w sensie „usługa jest zła”. To są granice modelu. Ja traktuję je jak filtr: jeśli aplikacja wymaga zachowania hostowego, licznych agentów albo niestandardowej kontroli kernela, Fargate po prostu nie jest właściwym miejscem. To prowadzi do najpraktyczniejszego pytania: kiedy wybrać ten model, a kiedy zostać przy EC2 lub nodach klastra.

Kiedy wybrać Fargate, a kiedy EC2 lub klasyczny EKS na nodach

W praktyce to nie jest decyzja zero-jedynkowa. Często najlepszy układ to mieszanka: część usług na Fargate, część na managed nodes albo EC2. Poniższa tabela pomaga mi szybko ocenić, gdzie leży przewaga.

Sytuacja Fargate EC2 lub nody EKS
Zmienne obciążenie, skoki ruchu Dobry wybór, bo łatwiej skalować bez zarządzania hostami Wymaga więcej strojenia capacity i autoskalowania
Stałe, wysokie wykorzystanie Wygodny operacyjnie, ale nie zawsze najtańszy Często lepszy koszt jednostkowy
Potrzeba daemonów, agentów node-level, privileged containers Nie pasuje Pasuje lepiej
GPU, specjalistyczny sprzęt, mocna kontrola hosta Nie jest właściwym wyborem Lepsza ścieżka
Mały zespół backend/DevOps i chęć ograniczenia utrzymania Bardzo mocny argument za Więcej pracy operacyjnej
Chęć pełnej kontroli nad node'ami i ich tuningiem Ograniczona kontrola Większa elastyczność

Moja reguła jest dość prosta: jeśli usługa ma być po prostu stabilnie uruchomiona, łatwo skalowana i nie wymaga hostowego „grzebania”, Fargate wygrywa wygodą. Jeśli zaś muszę instalować dodatkowe agenty, korzystać z GPU, robić głębokie strojenie albo maksymalnie ciąć koszt przy stałym obciążeniu, wracam do EC2 lub managed nodes. To z kolei naturalnie prowadzi do pytania, jak taki wybór przełożyć na realny backend w Pythonie.

Jak wdrażałbym to w backendzie Pythona

W projektach Pythonowych najczęściej widzę trzy dobre wzorce: API w FastAPI albo Django, osobny worker do zadań w tle i osobny proces do zadań cyklicznych. Na Fargate taki podział ma sens, bo każdy komponent można skalować niezależnie i rozliczać oddzielnie.

  1. Utrzymuj obrazy małe - bazuj na lekkim obrazie Pythona, usuwaj zbędne zależności i nie pakuj do kontenera narzędzi, których aplikacja nie potrzebuje. Krótszy pull to szybszy start i mniej kosztów sieciowych.
  2. Dobierz CPU i pamięć z zapasem - małe API często startuje od 0,5 vCPU i 1-2 GB RAM, ale worker Celery, biblioteki ML albo cięższe parsowanie danych mogą potrzebować dużo więcej. Zbyt mały przydział daje throttling albo OOM, a nie oszczędność.
  3. Obsłuż SIGTERM i health checki - task na Fargate może zostać zatrzymany podczas skalowania albo aktualizacji. Aplikacja powinna zamykać połączenia, domykać kolejki i kończyć requesty bez brutalnego ubicia procesu.
  4. Oddziel logi, metryki i sekrety - logi wysyłaj do CloudWatch, sekrety trzymaj w Secrets Manager albo SSM, a nie w obrazie. To banalne, ale często decyduje o tym, czy wdrożenie jest bezpieczne i diagnostyczne.
  5. Planuj sieć od początku - jeśli backend ma gadać z RDS, Redisem, S3 albo ECR, dobrze zaprojektuj subnety, NAT i VPC endpoints. W prywatnej architekturze to nie jest detal, tylko warunek uruchomienia.
  6. Rozdziel API od workerów - w mojej praktyce jedna usługa obsługująca requesty i kolejkę zadań na jednym kontenerze kończy się szybciej niż osobne task definitions. Lepiej dać API jeden profil, a workerom drugi.

Jeżeli pracujesz z mikroserwisem w Pythonie, to Fargate dobrze pasuje szczególnie do FastAPI + Uvicorn, Celery z SQS lub Redisem oraz krótkich jobów ETL. Nie jest to jednak usprawiedliwienie dla ciężkich, monolitycznych obrazów. Im bardziej przewidywalnie dzielisz komponenty, tym mniej zaskoczeń przy skalowaniu i rozliczeniach.

Po takim wdrożeniu zostaje ostatni etap, który często pomija się w pośpiechu: co sprawdzić przez pierwsze dni działania, żeby nie wyciągać pochopnych wniosków z pierwszej wersji.

Co sprawdziłbym po pierwszym wdrożeniu, żeby nie przepalić czasu i budżetu

  • Czas startu tasków - jeśli pull obrazu trwa zbyt długo, zwykle problemem jest zbyt duży image albo zła droga do rejestru.
  • Headroom pamięci - obserwuję, czy kontener nie działa stale na granicy limitu. To szybki sygnał, że przydział jest źle dobrany.
  • Zużycie logów - nadmiar logowania potrafi generować koszt większy niż sam compute przy małych usługach.
  • Networking i egress - jeśli ruch wychodzi poza VPC, sprawdzam NAT, PrivateLink i publiczne IPv4, bo tam często giną pieniądze.
  • Zachowanie przy skalowaniu - patrzę, czy aplikacja dobrze znosi wzrost liczby tasków, czy nie ma konfliktów na cache, lockach lub migracjach.
  • Różnicę między requestem a limitem - szczególnie w EKS Fargate zbyt ciasne wartości są prostą drogą do niestabilności.

Najlepszy efekt daje zwykle podejście stopniowe: zacząć od jednej usługi, zrozumieć jej profil kosztowy i sieciowy, a dopiero potem przenosić kolejne elementy. Wtedy Fargate naprawdę robi to, do czego został zaprojektowany: upraszcza operacje bez udawania, że architektura przestaje mieć znaczenie.

FAQ - Najczęstsze pytania

AWS Fargate to bezserwerowy silnik obliczeniowy dla kontenerów, który pozwala uruchamiać aplikacje bez zarządzania serwerami. Odciąża z obsługi infrastruktury, takiej jak instancje EC2, ich patchowanie i skalowanie, pozwalając skupić się na kodzie aplikacji.

W ECS każdy task na Fargate dostaje własny ENI (tryb awsvpc), co upraszcza izolację. W EKS musisz zdefiniować Fargate Profile dla namespace'ów lub etykiet, a pods działają w prywatnych subnetach bez publicznych IP. Konfiguracja sieci i planowanie podów różnią się znacząco.

Fargate jest opłacalny dla zmiennych obciążeń, skoków ruchu i aplikacji, które nie wymagają głębokiej kontroli nad hostem. Rozliczenie sekundowe z 1-minutowym minimum jest korzystne dla zadań o krótkim czasie trwania. Dla stałych, wysokich obciążeń, własne nody EC2 mogą być tańsze.

Fargate nie wspiera DaemonSetów, kontenerów uprzywilejowanych, HostNetwork, HostPort, GPU ani Windows Containers w EKS. W ECS wymagany jest tryb awsvpc. Istnieją też limity na efemeryczny storage (domyślnie 20 GB) oraz brak Fargate Spot w EKS.

Nie, Fargate redukuje tarcie operacyjne związane z zarządzaniem hostami, ale nie eliminuje pracy DevOps. Nadal musisz dbać o konfigurację CPU, pamięci, sieci, uprawnień IAM, optymalizację obrazów kontenerów i monitorowanie aplikacji. Skupiasz się na aplikacji, a nie na infrastrukturze.

Oceń artykuł

Ocena: 0.00 Liczba głosów: 0

Tagi

aws fargate
fargate w ecs
Autor Tymoteusz Kowalski
Tymoteusz Kowalski
Jestem Tymoteusz Kowalski, pasjonat technologii z wieloletnim doświadczeniem w analizowaniu i pisaniu na temat innowacji w branży. Od ponad pięciu lat zgłębiam różne aspekty technologiczne, koncentrując się na najnowszych trendach oraz ich wpływie na życie codzienne i biznes. Moje zainteresowania obejmują zarówno rozwój oprogramowania, jak i nowoczesne rozwiązania infrastrukturalne. Dzięki mojej pracy jako redaktor specjalistyczny, mam okazję przyglądać się z bliska dynamicznie zmieniającemu się rynkowi technologicznemu. Moim celem jest uproszczenie skomplikowanych danych i dostarczenie czytelnikom obiektywnej analizy, która pomoże im lepiej zrozumieć otaczający świat technologii. Zobowiązuję się do dostarczania rzetelnych, aktualnych i dokładnych informacji, które są niezbędne dla każdego, kto chce być na bieżąco z nowinkami technologicznymi. Wierzę, że wiedza powinna być dostępna dla wszystkich i staram się, aby moje publikacje były nie tylko informacyjne, ale także inspirujące.

Udostępnij artykuł

Napisz komentarz