Czym jest AWS Fargate?
AWS Fargate to innowacyjna technologia, współpracująca z Amazon ECS i Amazon EKS, która umożliwia uruchamianie kontenerów bez konieczności zarządzania serwerami czy klastrami instancji Amazon EC2. W praktyce oznacza to, że Fargate zwalnia użytkowników z konfiguracji, skalowania oraz udostępniania klastrów maszyn wirtualnych, potrzebnych do uruchomienia kontenerów. Nie trzeba już dobierać typów serwerów, planować skalowania klastrów czy optymalizować ich pakowania.
Dzięki Fargate, zadania i usługi Amazon ECS można uruchamiać, korzystając z odpowiedniego typu uruchomienia lub dostawcy pojemności. Wystarczy spakować aplikację w kontenery, określić wymagania co do systemu operacyjnego, procesora i pamięci, skonfigurować polityki sieciowe i IAM, a następnie uruchomić całość.
Kluczową zaletą jest brak konieczności utrzymywania podstawowej pojemności procesora i pamięci RAM dla kontenerów. Użytkownik określa jedynie zasoby potrzebne do zadania, a AWS zajmuje się resztą. Co ważne, każde zadanie Fargate działa w izolacji, nie dzieląc zasobów takich jak jądro, procesor, pamięć czy elastyczny interfejs sieciowy z innymi zadaniami.
Jak funkcjonuje Fargate?
Fargate działa w sposób, który umożliwia wdrożenie kontenerów bez konieczności konfigurowania i zarządzania infrastrukturą, na której one działają. Użytkownik wskazuje Fargate, które obrazy kontenerów mają zostać uruchomione i określa ilość potrzebnych zasobów procesora i pamięci. Następnie Fargate automatycznie udostępnia odpowiednie serwery. Opłaty naliczane są wyłącznie za wykorzystane zasoby w czasie działania kontenerów.
Fargate jest silnikiem obliczeniowym typu „serverless”, ponieważ zwalnia użytkowników z zarządzania serwerami. Chociaż serwery fizycznie istnieją, ich obsługą zajmuje się AWS. Warto podkreślić, że Fargate nie jest tym samym, co AWS Lambda, inna usługa „serverless”, która jednak nie została pierwotnie zaprojektowana z myślą o kontenerach (choć obecnie Lambda również obsługuje obrazy kontenerów).
Korzyści płynące z Fargate
AWS Fargate precyzyjnie alokuje moc obliczeniową, pamięć i inne zasoby potrzebne do zadań, eliminując potrzebę wyboru odpowiedniego typu instancji lub ręcznego skalowania klastra.
Model rozliczeniowy pozwala na płacenie jedynie za zasoby używane w danym momencie przez kontenery, co zapobiega nadmiernej alokacji i kosztom związanym z niepotrzebnymi serwerami.
Zadania Fargate uruchamiane są w izolowanych jądrach, co gwarantuje bezpieczne i odseparowane środowisko obliczeniowe, zwiększając poziom bezpieczeństwa obciążeń.
Ułatwia zespołom projektowanie i wdrażanie aplikacji z wykorzystaniem kontenerów ECS lub EKS, zdejmując z nich ciężar zarządzania infrastrukturą, takiego jak skalowanie serwerów, ich zabezpieczanie i instalowanie poprawek.
Dzięki integracji z innymi usługami AWS, takimi jak Amazon CloudWatch Container Insights, Fargate oferuje zaawansowane możliwości monitorowania. Możliwe jest również wykorzystanie technologii zewnętrznych do gromadzenia dzienników i metryk.
Korzystając z kontenerów w Fargate, można efektywnie wykorzystać wiele innych usług AWS.
Fargate dynamicznie uruchamia i skaluje zasoby obliczeniowe, dopasowując się do aktualnych potrzeb kontenerów, co pozwala uniknąć przepłacania za nieużywane zasoby. Dodatkowo, opcja Fargate Spot umożliwia obniżenie kosztów nawet o 70% (jest to jednak opcja optymalna tylko dla aplikacji, które mogą być przerywane).
Kluczowe elementy Fargate
Klastry
Klastry Amazon ECS to logiczne grupy zadań lub usług, które pozwalają na izolację aplikacji. W przypadku korzystania z Fargate, to on zarządza zasobami klastra.
Definicje zadań
Definicja zadania to dokument tekstowy w formacie JSON, opisujący jeden lub więcej kontenerów w aplikacji. Można w nim zawrzeć informacje o maksymalnie dziesięciu kontenerach. Definicja zadania to swoisty „plan” aplikacji, który określa parametry systemu operacyjnego, kontenery do użycia, porty dla aplikacji i woluminy danych.
Zadania
Zadanie to instancja definicji zadania działająca w klastrze. Po utworzeniu definicji zadania można określić liczbę zadań do uruchomienia. Zadania można uruchamiać jako element usługi lub jako odrębny proces.
Usługi
Usługi Amazon ECS umożliwiają uruchamianie i utrzymywanie określonej liczby zadań w klastrze. Jeśli zadanie ulegnie awarii lub zostanie zatrzymane, harmonogram usług automatycznie uruchamia nową instancję na podstawie definicji zadania, aby zachować odpowiednią liczbę działających zadań.
Architektura systemu operacyjnego i procesora
Fargate obsługuje systemy operacyjne takie jak Amazon Linux 2, Windows Server 2019 Full i Windows Server 2019 core.
Architektury procesora dostępne dla zadań Amazon ECS to ARM i X86_64. W przypadku kontenerów Windows wymagana jest architektura X86_64, natomiast w przypadku kontenerów Linux można użyć ARM64 dla aplikacji opartych na ARM lub X86_64.
ECS z instancjami EC2 vs. ECS z AWS Fargate
W modelu z instancjami EC2, kontenery są uruchamiane na wirtualnych maszynach EC2 w klastrze. ECS zarządza tymi instancjami w połączeniu z zadaniami określonymi w definicji.
Zalety
- Pełna kontrola nad typem używanych instancji EC2.
- Możliwość wykorzystania instancji spot, co może obniżyć koszty nawet o 90%.
Wady 👎
- Konieczność samodzielnego dbania o poprawki bezpieczeństwa i ochronę sieciową instancji, a także o ich skalowalność w klastrze.
W modelu Fargate, nie trzeba zarządzać instancjami EC2. Wystarczy wybrać konfigurację procesora i pamięci, a Fargate zajmie się wdrożeniem kontenerów.
Zalety
- Brak konieczności zarządzania serwerami.
- Odpowiedzialność AWS za dostępność i skalowalność. Należy jednak pamiętać o właściwym doborze pamięci i procesora, aby zapewnić poprawną pracę aplikacji.
- Możliwość uzyskania do 70% zniżki na cenę Fargate, korzystając z Fargate Spot.
Wady 👎
- ECS z AWS Fargate obsługuje tylko jeden tryb sieciowy (awsvpc), co ogranicza kontrolę nad warstwą sieciową.
EKS bez Fargate vs. EKS z Fargate
W EKS bez Fargate trzeba z góry określić wielkość klastra. Możliwe jest ręczne skalowanie węzłów w przyszłości, ale wymaga to dodatkowego wysiłku.
Zalety
- Większa kontrola, m.in. możliwość określenia zmiennych konfiguracyjnych takich jak HostNetwork i HostPort.
- EKS bez Fargate jest preferowany, gdy wymagana jest dostępność kontenerów w regionach nieobsługiwanych przez Fargate.
Wady 👎
- EKS bez Fargate jest trudniejszy w obsłudze.
W EKS z Fargate nie trzeba określać rozmiaru klastra z wyprzedzeniem.
Zalety
- EKS z Fargate oferuje większe bezpieczeństwo, ponieważ działa w dedykowanych maszynach wirtualnych. Brak obsługi trybu uprzywilejowanego stanowi dodatkowe zabezpieczenie.
- W perspektywie długoterminowej jest tańszy.
Wady 👎
- Mniejsza kontrola nad różnymi aspektami środowiska.
Podsumowanie
Fargate to bardzo zaawansowane i dojrzałe narzędzie, które pozwala zaoszczędzić czas, pieniądze i wysiłek, przejmując zarządzanie infrastrukturą. Fargate jest szczególnie przydatny dla osób, które dopiero zaczynają przygodę z kontenerami i chcą skupić się na tworzeniu aplikacji, a nie na ich utrzymaniu.
newsblog.pl