Szybsze skalowanie dla Amazon ECS Cluster Auto Scaling
Klienci usługi Amazon Elastic Container Service (ECS), którzy korzystają z automatycznego skalowania klastra (CAS), wyrazili chęć szybszego skalowania, aby uniknąć dodatkowych opłat za zasoby obliczeniowe podczas zdarzeń skalowania. Dlatego też, aby skalowanie stało się bardziej responsywne, twórcy z chęcią przedstawiają ulepszenie zwiększające limit kroków skalowania z 5% do 50% pojemności grupy automatycznego skalowania (ASG). Przeprowadzona przez nich analiza wykazała, że zwiększenie limitu kroków do 50% było optymalne dla poprawy ogólnej efektywności kosztów bez ignorowania dostępności. Za pomocą tego artykułu dowiesz się więcej na temat tego ulepszenia. Autorzy posłużą się przykładem, aby zademonstrować zwiększenie skali w czasie i kosztach, które bezpośrednio wynikają z tego ulepszenia.
Tło
Amazon ECS to w pełni zarządzana usługa organizacji kontenerów, która ułatwia wdrażanie i skalowanie aplikacji kontenerowych oraz zarządzanie nimi. Automatyczne skalowanie klastra to z kolei funkcja Amazon ECS, która zarządza skalowaniem ASG Amazon Elastic Compute Cloud (EC2) zarejestrowanych w klastrze. Dostawca pojemności ECS to interfejs obliczeniowy, który łączy klaster Amazon ECS z ASG.
Dzięki dostawcom pojemności możesz definiować elastyczne reguły dotyczące sposobu działania kontenerowych obciążeń w różnych typach pojemności obliczeniowej i zarządzać skalowaniem tej pojemności. CAS opiera się na dostawcach pojemności w celu określenia infrastruktury, która ma zostać wykorzystana do Twoich działań. To z kolei pozwala przenieść koncentrację z zarządzania skalowaniem infrastruktury na tworzenie i wdrażanie aplikacji. Dostawcy pojemności zarządzają działaniami skalowania i skalowania w poziomie ASG na podstawie obciążenia zadaniami w infrastrukturze klastra.
Klienci informują twórców AWS, że chcą zoptymalizować koszty, a także dostępność infrastruktury dla swoich aplikacji – zwłaszcza w przypadkach, gdy krótkotrwałe skoki ruchu mogą prowadzić do skalowania pojemności, która może pozostać niewykorzystana przez długi czas. Dzieje się tak, ponieważ CAS to ukryty proces, który wykonuje działania skalujące w kilku krokach, w tym gromadzenie i agregację metryk Amazon CloudWatch. Więcej na temat tego, jak działa CAS dowiesz się tutaj.
W celu określenia działań skalowania, CAS w szczególności wymaga początkowych 15-minutowych punktów danych z alarmów CloudWatch. Następnie Amazon ECS zmniejsza pojemność o wcześniej określony procent kroku skalowania w jednym lub większej liczbie zdarzeń skalowania. Stopniowe skalowanie zapewnia regularne zmniejszanie pojemności w czasie, a dostępna jest wolna pojemność umożliwiająca reagowanie na gwałtowne wzrosty ruchu – jednak może również skutkować potencjalnie wyższymi opłatami za obliczenia. Opłaty te mogą być nieistotne w przypadku obciążeń na mniejszą skalę, jednakże w przypadku obciążeń na dużą skalę ten koszt może okazać się niepożądany.
Przedstawienie ulepszeń kosztów i czasu skalowania
Autorzy przetestowali zwiększenie limitu stopniowego skalowania od 5% do 50% z usługą Amazon ECS mającą 1000 zadań wymagających 334 instancji c5.xlarge przy szczytowym ruchu do 100 zadań wymagających 34 instancji. W tym czasie zaobserwowano 8-krotną poprawę czasu skalowania w czasie – z 80 minut do 10 minut oraz ponad 16-krotne zmniejszenie kosztów obliczeniowych – z 7,47 USD do 0,46 USD – w czasie trwania skalowania. W rezultacie aplikacje będą szybciej reagować na zapotrzebowanie na moc obliczeniową, ponieważ instancje EC2 udostępniane przez ECS będą wydawane szybciej.
Ten ulepszony mechanizm skalowania dopasowuje się bezpośrednio do filaru optymalizacji kosztów zasady AWS Well Architected Framework, przyjmując model zużycia, płacąc tylko za to, z czego korzystasz. To ulepszenie jest również zgodne z zasadą Reliability Pillar of the AWS Well Architected Framework. Monitoruje zapotrzebowanie i wykorzystanie obciążenia, aby zapewnić, że zasoby nie są nadmiernie przydzielane. Powinieneś zaobserwować ogólną poprawę wydajności skalowania podczas korzystania z CAS, a także zmniejszenie ogólnych kosztów obliczeniowych z tym związanych, co prowadzi do wyższego zwrotu z inwestycji.
Zrozumienie ulepszenia stopniowego skalowania
Najwyższa pora przyjrzeć się scenariuszowi, który zilustruje wartości i korzyści, jakie klienci odniosą z poprawy limitu stopniowego skalowania.
Wyobraź sobie, że korzystasz z usługi Amazon ECS, która obsługuje żądania strony internetowej, a w ciągu dnia obsługuje szczytowe obciążenie wymagające 1000 zadań. Usługa jest wdrażana przy użyciu dostawcy pojemności ECS wspieranego przez ASG, co oznacza, że zadania dla usługi działają na instancjach Amazon EC2. Usługa wykorzystuje strategię umieszczania binpacków, w której zadania są umieszczane na instancjach Amazon EC2, aby pozostawić jak najmniej niewykorzystanego procesora lub pamięci, wykorzystując jak najmniejszą liczbę instancji Amazon EC2. Ze względu na to, że liczba żądań do tej witryny zmniejsza się pod koniec dnia, usługa będzie teraz wymagała tylko 100 zadań. Zmniejszenie usługi oznacza, że CAS określi, iż do wykonania zadań wymagana jest mniejsza liczba instancji Amazon EC2. Twórcy zwizualizują skalowanie instancji Amazon EC2 w ASG na Amazon CloudWatch, który monitoruje zasoby AWS i aplikacje, zbierając metryki na AWS w czasie rzeczywistym.
Na potrzeby tego eksperymentu autorzy tworzą usługę, zaczynając od obrazu podstawowego BusyBox z publicznych repozytoriów Amazon Elastic Container Repository (Amazon ECR). Usługa działa na dostawcy pojemności ECS wspieranym przez ASG uruchamiającego na żądanie instancje c5.xlarge Amazon EC2 o minimalnym rozmiarze 0 i maksymalnym rozmiarze 1000. Metryki w ASG są włączone, dzięki czemu możesz śledzić liczbę Instancje Amazon EC2 w serwisie (GroupInServiceInstances). Pora na skonfigurowanie pulpitów nawigacyjnych w Amazon CloudWatch, aby przeglądać metryki ASG.
Wyniki eksperymentu znajdują się na wykresie nr 2, na którym widać, że ASG zaczyna się zmniejszać od 334 do 34 wystąpień w ciągu 10 minut (30 wystąpień na minutę). W testach przeprowadzonych przed limitami stopniowego zwiększania skali, ASG skaluje się w dół z 334 do 34 instancji, co zajmuje 80 minut (3,75 instancji na minutę), jak pokazano na wykresie nr 1. Szybkość skalowania od 3,75 instancji na minutę do 30 instancji na minutę po wdrożeniu limitów stopniowego zwiększania skali oznacza 8-krotną poprawę szybkości zmniejszania skali. Należy pamiętać, że inicjowanie skalowania ASG po zakończeniu skalowania w obu przypadkach zajmuje 15 minut. Dzieje się tak, ponieważ alarmy skalowania w CloudWatch wymagają 15 punktów danych (1 punkt danych na minutę) przed rozpoczęciem procesu skalowania dla grupy Auto Scaling. Tutaj autorzy omawiają tylko poprawę czasu trwania skalowania, w momencie gdy skalowanie ASG już się rozpoczęło.
W celu przeanalizowania wpływu skalowania na całkowity koszt, autorzy prześledzili koszt uruchomienia instancji Amazon EC2 za pomocą raportu godzinowego w AWS Cost Explorer. Przy 50% ulepszeniu stopniowego skalowania, jak pokazano w tabeli nr 2, zdarzenie skalowania trwało tylko 10 minut, a koszt uruchomienia instancji Amazon EC2 przez całą godzinę wyniósł 6,24 USD. Przed poprawą stopniowego zwiększania skali, koszt EC2 w ciągu 2 godzin od 12:00 do 2 w nocy, obejmujący 80 minut zdarzenia zwiększania skali, wynosił 13,22 USD i 5,81 USD, jak pokazano w Tabeli nr 1.
Następnie obliczono koszt wystąpień Amazon EC2 w okresie skalowania, rozpoczynając od kosztu wszystkich wystąpień EC2 działających w okresie skalowania, odejmując koszt 34 wystąpień c5.xlarge w tym samym okresie. Różnica daje koszt nadmiaru zasobów obliczeniowych w stosunku do żądanej liczby 34 wystąpień wymaganych dla stanu ustalonego 100 zadań. Należy zauważyć, że koszt uruchomienia 34 instancji c5.xlarge Amazon EC2 w obu scenariuszach wyniósł 5,78 USD za godzinę. Przy 50% zwiększeniu limitu stopniowego skalowania, koszt skalowania instancji Amazon EC2 wyniósł 0,46 USD (tj. 6,24 USD-4,78 USD). Przed poprawą limitu stopniowego skalowania koszt skalowania instancji Amazon EC2 wyniósł 7,47 USD (tj. 13,22-5,78 USD + 5,81 USD-1,78 USD).
Całkowity koszt zasobów obliczeniowych w okresie skalowania został zmniejszony ponad 16-krotnie z 7,47 USD do 0,46 USD. Należy pamiętać, że wyniki kosztów mogą się różnić, ponieważ na koszty mają wpływ takie czynniki, jak typy instancji Amazon EC2 skonfigurowane w ASG oraz region/strefy dostępności, w których działa instancja Amazon EC2.
Wnioski
AWS inwestuje w poprawę skalowania i wydajności, aby zoptymalizować szybkość skalowania Amazon ECS. Niektóre z ostatnich ulepszeń, które wprowadzono, obejmują optymalizacje w AWS Fargate – skalowanie aplikacji do 16 razy szybciej oraz optymalizacje dostawcy pojemności, zapewniające szybsze działanie CAS. Aby jeszcze bardziej uprościć skalowanie, od 27 maja 2022 r. Amazon ECS nie wymaga już planu automatycznego skalowania AWS, gdy skalowanie zarządzane jest włączone u dostawcy pojemności ASG.
W tym artykule autorzy wprowadzili ulepszenia limitu kroków skalowania w Amazon ECS CAS i zaprezentowali, w jaki sposób pomogło to poprawić ogólne skalowanie wydajności i zmniejszyć koszty obliczeniowe związane z działaniami na dużą skalę. Przedstawione optymalizacje są teraz automatycznie włączane w regionach AWS, w których dostępny jest ECS. Żadna dodatkowa aktywność nie jest wymagana z Twojej strony.
Autorzy mają nadzieję, że to ulepszenie spełnia Twoje potrzeby. Możesz rozpocząć pracę z Amazon ECS już dziś.
Źródło: AWS