Mikroserwisy: Korzyści z podejścia opartego na konteneryzacji
2022-09-19 11:23:33Nasz DevOps Team Leader, Mateusz, obiecał w swoim ostatnim artykule poruszyć popularny temat: mikroserwisy i kontenery. Zgodnie z złożoną obietnicą przedstawiamy kolejną publikację.
Według Statista w 2021 roku 85% dużych organizacji używało już mikroserwisów, a 14% planowało wprowadzenie ich w przyszłości.
Zanim jednak przejdę do szczegółów, chcę odnieść się do koncepcji jakości, a mianowicie tego, jakie są jej źródła i dlaczego jest taka ważna.
Tworzenie aplikacji i infrastruktur wymaga jasno określonych celów. Początki ery cyfrowej są już dawno za nami, nadszedł czas na dopracowanie i uporządkowanie zasobów, tak aby zmaksymalizować ich wartość.
Jakość ma wiele definicji, ale która z nich ma zastosowanie w naszym przypadku? Pozostawiam to pytanie otwarte, ale mam nadzieję, że po przeczytaniu tego artykułu będziesz w stanie zdefiniować własną koncepcję jakości technologicznej.
Mikroserwisy i kontenery pod lupą
Kontenery i mikroserwisy to dwie metody, które umożliwiają firmom sprawniejsze tworzenie i dostarczanie aplikacji.
Nie będę się długo rozwodzić nad tym, dlaczego ich potrzebujesz. Wystarczy powiedzieć, że współcześni klienci oczekują od aplikacji najwyższej jakości usług, ale jednocześnie ciągłej dostępności i bezpieczeństwa. Jeśli nie będziesz w stanie im tego zapewnić, Twoi klienci z pewnością znajdą to u konkurencji.
Zarówno mikroserwisy, jak i kontenery pozwalają sprostać coraz bardziej wyśrubowanym oczekiwaniom w zakresie szybkości, jakości i elastyczności w tworzeniu i wprowadzaniu aplikacji.
To dwie różne technologie, które można stosować niezależnie, choć często są wykorzystywane w tandemie. Przeanalizujmy więc teraz, jak działają i jakie korzyści oferują Twojej firmie.
Zerwamy z monolitem
Rok 2013 był przełomowy, bo właśnie wtedy zaczęto mówić o „architekturze mikroserwisów”. Od tego momentu popularność tej technologii stale rośnie, i to w astronomicznym tempie.
Wcześniej większość aplikacji była monolityczna. Aplikacja taka stanowi pojedynczą jednostkę, a w większości przypadków jej działanie stanowi też jeden proces.
Nadal pamiętam frustrację związaną z koniecznością ponownej instalacji całości w celu wprowadzenia w aplikacji jednej, drobnej zmiany. Albo całkowity brak narzędzi do skalowania poszczególnych elementów systemu w odpowiedzi na zmieniający się ruch.
Cały proces zarządzania zmianami i wydawania nowych wersji był utrapieniem dla wielu osób pracujących przy projekcie. Jedną z najgorszych chwil była sytuacja, w której błąd w mało znaczącym elemencie monolitu udaremnił wszystkim użytkownikom dostęp do aplikacji.
Z moich doświadczeń wynika, że ponad 90% klientów jest zadowolonych z wdrożenia mikroserwisów w swoich firmach. Jak jednak wiadomo, wszystko ma swoje wady i zalety. Postaram się je teraz wyłuszczyć.
Główna zaleta mikroserwisów
Demontaż architektury monolitycznej może się z początku wydawać prostym zadaniem, ale od razu zaznaczam, że wymaga ono sporej wiedzy.
Ryzyko opóźnień przy wdrażaniu zaktualizowanych wersji aplikacji w nowej infrastrukturze i architekturze mikroserwisów jest wysokie, a zadanie bardziej skomplikowane, niż wygląda, dlatego trzeba brać pod uwagę wzrost kosztów bieżących.
Ryzyko jest jednak niczym w świetle korzyści, które oferują mikroserwisy. Taka architektura pozwala skutecznie zredukować podatność produktu na awarie dzięki podziałowi aplikacji na mniejsze części. Oczywiście całkowity brak zależności jest nieosiągalny, ale można uniknąć sytuacji, w której drobnostka spowoduje niedostępność całego systemu.
Kluczowe jest niezależne wdrażanie każdego elementu aplikacji, dzięki temu można bowiem wykorzystać nowsze technologie na poszczególnych stronach. Co więcej, poszczególne elementy można testować i sprawdzać niezależnie, dzięki czemu poszczególne zespoły mogą współdzielić odpowiedzialność za poszczególne składowe aplikacji.
Wierzę, że udało mi się przekonać Cię do mikroserwisów, mogę więc pewnie przejść do idei kontenerów.
Korzyści z konteneryzacji mikroserwisów
Kontenery są najbardziej popularną metodą wdrażania architektury mikroserwisów i jest ku temu kilka powodów.
Konteneryzacja zyskała popularność w połowie lat 10. XXI wieku, wraz z wprowadzeniem Dockera i Kubernetes, które zapewniły tak potrzebne narzędzia do tworzenia aplikacji i zarządzania nimi.
Główną zaletą kontenerów jest ich wydajność. Umożliwiają one działanie aplikacji, bezpośrednio udostępniając zasoby z systemu operacyjnego serwera, na którym są uruchamiane. Dzięki temu kontenery obniżają koszty ogólnozakładowe, a także uruchamiają się szybciej niż maszyny wirtualne.
Co więcej, kontenery izolują aplikacje czy mikroserwisy, co znacznie zmniejsza ryzyko rozprzestrzeniania się potencjalnych podatności w zakresie bezpieczeństwa.
Architektura tego typu sprzyja ponadto wykrywaniu usług, ponieważ lokalizacja i komunikacja mikroserwisów jest uproszczona w przypadku ich działania w kontenerach zarządzanych w ramach jednej platformy. Ułatwia to projektowanie i budowanie wydajnej architektury sieciowej.
Kontenery ułatwiają także orkiestrację mikroserwisów. Dzięki orkiestracji każdy element można traktować osobno, skalując go, dostosowując jego wydajność do potrzeb i konfigurując odpowiednie oceny funkcjonowania.
Dodatkowo można zautomatyzować uruchamianie poszczególnych komponentów, można też zastosować podejście blue-green deployment.
Na koniec warstwa całodobowego monitoringu i gotowe! O ile konfiguracja okaże się poprawna, zyskamy zautomatyzowany i bezpieczny system o podatności na awarie zredukowanej do poziomu pojedynczego elementu. W razie potrzeby powrót do poprzednich wersji systemu będzie nadal możliwy.
Choć opisany proces wydaje się prosty, jest dość złożony, dlatego warto skorzystać ze wsparcia doświadczonych konsultantów do spraw projektowania infrastruktur w chmurze.
Podsumowanie
Architektura mikroserwisów to wciąż stosunkowo nowy trend, który jednak aktualnie wiedzie prym w branży. Współpraca między programistami i DevOps przekłada się na możliwość realizacji ambitnych, ale i wymagających projektów – jedynym ograniczeniem jest nasza wyobraźnia.
Stajemy więc przed pytaniem: „co dalej?”. Z technologiami mikroserwisów i kontenerów pracuje już bardzo wielu specjalistów, dlatego można mieć nadzieję na dalszy rozwój i kolejne innowacyjne pomysły.
Nadal jednak zbyt wiele osób korzysta z monolitycznych systemów, które z pewnością wiele by zyskały dzięki zastosowaniu kontenerów i mikroserwisów, więc… do dzieła!
Źródła:
Statista – Do you utilise Microservices within your organization?
O autorze: Mateusz Grządzielski, posiada prawie 10-letnie doświadczenie w branży IT. Pracował na wielu stanowiskach wsparcia technicznego – od specjalisty po team leadera.
W Tenesys kieruje zespołem Inżynierów DevOps, skupiając się na projektach klientów i dobrej atmosferze całego zespołu. Poza informatyką Mateusz studiuje na Uniwersytecie Ekonomicznym w Poznaniu i prowadzi własną firmę.