• Home
  • Blog
  • Tniemy koszty mikroserwisów w chmurze z użyciem konteneryzacji i ECS cz. 1/2

TECHNOLOGIE, TRENDY

Tniemy koszty mikroserwisów w chmurze z użyciem konteneryzacji i ECS cz. 1/2

26.05.2020 - Przeczytasz w 3 min.

Rozwiązania chmurowe a architektura mikroserwisów? Zastanawiasz się, jak możesz obniżyć koszty przy użyciu konteneryzacji oraz ECS? Przeczytaj 1 część naszego artykułu.

RST_cloud_mikroserwisy_konteneryzacja

Możemy się wszyscy zgodzić z tym, że tak samo biznes, jak i zespoły programistów, chcąszybko wdrażać swoją ciężką pracę. Nie ma tutaj też wątpliwości, że aby to zrobić, potrzebujemy świetnego QA i automatyzacji. Jednak aby było to możliwe produkty trzeba wdrażać stopniowo na kolejnych środowiskach, zachowując jak najwyższą jakość i efektywność. 

W rezultacie zysk przynoszą jedynie klienci końcowi i to dla nich projektujemy architekturę. Teraz, idąc z duchem czasu, wybieramy mikroserwisy – przede wszystkim ze względu na ich wydajności i niski wpływ awarii na cały system. A ilość serwisów lubi rosnąć; rozwijające się biznesy na pewno odczuły to na swoich kontach bankowych. Jeśli chcesz rozpocząć przygodę z mikroserwisami, zerknij na darmowy ebook “Mikroserwisy czy monolit”. Chmura i mikroserwisy potrafią wyssać pieniądze, a z poziomu wykonawcy nie dostrzegamy możliwości oszczędzania. “Przecież to musi tyle kosztować bo ludzie używają”. Chciałbym wskazać jeden z często pomijanych aspektów, który pomoże zaoszczędzić nawet kilkaset dolarów miesięcznie.

Amazon Web Services liczy koszty “pay-as-you-go” co oznacza, że w rzeczywistości zapłacimy dokładnie za to co zużyjemy. Przyjmijmy, że nasz dział rozwoju oprogramowania wykorzystuje przynajmniej 2 środowiska przejściowe – te koszty znamy, nie powinny nas zaskakiwać z miesiąca na miesiąc. Ale co jeśli możemy je zmniejszyć nawet czterokrotnie?

 

rst_software_masters_mikrouslugi_w_chmurze_1

Koszty architektury mikroserwisowej w AWS?

Nie chcę i nie będę opisywał sposobów na optymalizację kosztów środowiska produkcyjnego. Jest to temat różny dla każdej branży i technologii. Skupimy się na sposobach organizacji środowisk developerskich oraz Staging.

Istnieje przynajmniej kilka możliwości utrzymywania takich środowisk w AWS:

  • Maszyna dla każdego serwisu

Często się zdarza, że jest to jeden z pierwszych wyborów, nie zawsze trafiony.Łatwo też wpaść w pułapkę gdy z mikroserwisami dopiero zaczynamy i niewystarczająco przemyśleliśmy infrastrukturę. Koszty będą tutaj tak wysokie, że mogą pogrzebać cały projekt. Jeżeli korzystasz z tej opcji, czytaj dalej aby poznać inne sposoby, które moim zdaniem z łatwością zastosujesz.

  • Elastic Beanstalk – multicontainer environments

Narzędzie znane większości początkujących DevOpsów, często brane pod uwagę przy rozpoczynaniu nowych projektów. Wykorzystujemy tutaj konteneryzację, więc już znacznie zmniejszamy koszty. Rozwiązanie to – o ile jest proste – nie daje najlepszego możliwego rezultatu. W tej opcji wszystkie nasze serwisy są uruchamiane w kontenerach na maszynie EC2. 

Granicę możliwości odnajdujemy gdy chcemy inaczej skalować tylko część mikrousług (np. na potrzeby testów wydajności konkretnego serwisu lub sprawdzenia, jak nasza usługa się  skaluje). W takiej sytuacji musimy postawić kolejną instancję EC2, na której w identycznych proporcjach będą działać wszystkie aplikacje. To nie brzmi zbyt oszczędnie i takie oczywiście nie jest. W przypadku, gdy nasze usługi nie wykorzystują wszystkich zasobów pojedynczej instancji EC2, chcielibyśmy wykorzystać nieużywaną moc tej pierwszej do wyskalowania tylko kilku usług – Beanstalk nam tego nie umożliwi.

  • ECS – Elastic Container Service

Taką funkcję daje nam ECS. Działa on na podobnej zasadzie co Beanstalk w konfiguracji multicontainer, ale umożliwia dużo więcej. Możemy tutaj zużyć wszystkie wynajęte zasoby EC2, skalując osobno każdą z usług, ustawić automatyczne skalowanie oraz znacząco zmniejszyć nasze koszty, wykorzystując kilka sztuczek.

Czym jest ECS?

Elastic Container Service jest to orkiestrator kontenerów Dockera, na których działają nasze Serwisy. Świetnie radzi sobie ze skalowaniem, jest darmowy i relatywnie prosty w obsłudze. Sterować nim można za pomocą konsoli AWS, CLI lub dedykowanego API. 

Narzędzie to pomaga nam sterować kontenerami, które tutaj nazywane są Taskami. Taski te są częścią Service’u, który zarządza tym, jak wiele Tasków nasza usługa chce wykorzystywać w danym momencie. Każdy Task posiada definicję opisującą, jakich zasobów potrzebuje i z jakiego obrazu Dockerowego ma korzystać. Do zdefiniowania mamy jeszcze Cluster, który zarządza iloma i jakimi maszynami dysponujemy. ECS sam decyduje na jakiej instancji EC2 klastra uruchomić Taski. Robi to w najlepszy możliwy sposób, dzięki czemu mamy pewność, że nasze zasoby są rozdysponowane w najoszczędniejszy sposób.

 

W następnej części wskażę kilka prostych, lecz efektywnych sposobów na to, jak zmniejszyć koszty środowisk innych niż produkcyjne z użyciem ECS lub bez niego. Koniecznie przeczytaj:
,,Tniemy koszty mikrousług w chmurze z użyciem konteneryzacji i ECS cz. 2/2″

 

RST Software Masters – AWS Select Consulting Partner z wieloletnim doświadczeniem w budowaniu mikroserwisów.

Ocena artykułu

Udostępnij

Grzegorz Wierzchanowski-RST Software

Grzegorz Wierzchanowski

Technical Team Leader

Certyfikowany AWS Solution Architect skupiający swoją ciekawość na rozwiązaniach Serverless. Programista-samouk z całkiem dobrą znajomością języków Java, Kotlin oraz TypeScript. Karierę zaczynał jako Game Developer, zmienił jednak specjalizację na aplikacje mobilne, po czym rozwinął się do pozycji Full Stack Developera.  

Newsletter

Newsletter

Dziękujemy, Twój email został wysłany.

Nasz serwis internetowy używa plików cookies do prawidłowego działania strony. Korzystanie z serwisu bez zmiany ustawień dla plików cookies oznacza, że będą one zapisywane w pamięci urządzenia. Ustawienia te można zmieniać w przeglądarce internetowej. Więcej informacji udostępniamy w Polityce plików cookies.