Spis treści
Tradycyjna monolityczna struktura tworzenia aplikacji już dawno przestała się sprawdzać. Na fali popularności technologii chmurowych zastępuje ją architektura mikroserwisów. Mikroserwisy znacząco usprawniają pracę developerów, zwiększają tempo wdrożeń i ułatwiają aktualizacje oprogramowania.
Przez dekady oprogramowanie tworzono jako monolit, łącząc wszystkie funkcje w jednym bloku kodu źródłowego. Powstające aplikacje były owocem prac licznego zespołu współpracujących ze sobą developerów. Takie podejście sprawia, że wszystkie elementy są ze sobą ściśle powiązane.
Awaria jednego z nich może zatem zakłócić pracę całego programu, a zespół IT nie jest w stanie szybko wykryć usterki. Podobny scenariusz jest możliwy również podczas wprowadzania zmian w kodzie. Poprawki w jednej funkcji oznaczają konieczność aktualizacji całej aplikacji, która staje się chwilowo niedostępna. Na szczęście da się inaczej, dzięki implementacji architektury mikroserwisów.
Co to są mikroserwisy?
Wprowadzenie nowego paradygmatu tworzenia oprogramowania zakłada podział aplikacji na mniejsze niezależne komponenty. Oczywiście nadal komunikują się one ze sobą, nawet jeśli wykorzystują różne technologie. Każdy z nich można rozwijać i modernizować bez potrzeby ingerencji w kompletny kod i aktualizacji całego programu. Łatwiejsze jest również testowanie takich modułów i wdrożenie na produkcję.
W przypadku aktualizacji lub awarii użytkownik nie doświadczy dotkliwych problemów z niedostępnością całej usługi. Dzięki architekturze mikroserwisów zespół developerów może pracować dużo wydajniej, skupiając się wyłącznie na obszarze obejmującym pojedynczą funkcję. Wspomniane luźne powiązanie serwisów umożliwia niezależny rozwój funkcjonalności.
Mikroserwisy – geneza powstania
Pierwsze próby stawienia czoła wyzwaniom związanym z monolitycznymi aplikacjami stanowiła architektura zorientowana na usługi (SOA – Service Oriented Architecture). Szybko okazało się, że do jej wdrożenia wymaga się wykorzystania tzw. szyny integracyjnej (ESB – Enterprise Service Bus). ESB miała zadanie skomunikować ze sobą wszystkie mikroserwisy i szybko okazała się wąskim gardłem architektury SOA.
Przełom nadszedł wraz z technologią konteneryzacji, która z poziomu niezależności technologicznej przechodzi na poziom niezależności infrastrukturalnej. Odizolowane, a jednak współpracujące ze sobą zasobniki idealnie nadają się do hostowania w dowolnym środowisku chmurowym.
W środku takiego kontenera znajduje się właściwy kod aplikacji lub jej części, a do tego wymagane biblioteki, procesy, zależności, pliki binarne oraz sam silnik służący do uruchomienia zawartości zasobnika. Dzięki oprogramowaniu do orkiestracji (przykładowo Google Kubernetes Engine) zarządzanie większą liczbą kontenerów nie stanowi już tak dużego wyzwania.
Rozwój systemów a mikroserwisy, czyli jak ich architektura odpowiada na ich potrzeby?
Mocna zależność od infrastruktury stanowiła do niedawna jedno z największych wyzwań dla mikroserwisów. Jednym z rozwiązań okazała się wspomniana konteneryzacja i narzędzia do orkiestracji środowiska kontenerów. Aby uwolnić się od zależności w zakresie infrastruktury sieciowej opracowano model Service Mesh, który pomaga w komunikacji między poszczególnymi mikroserwisami. Developerzy mogą poświęcać czas na tworzenie nowych funkcjonalności, zamiast dopasowywać projekt do wymagań infrastruktury.
Po wdrożeniu na produkcję aplikację musimy monitorować pod kątem ewentualnych problemów. Doglądanie kondycji systemu w sposób manualny może okazać się zbyt czasochłonne. Stąd zaleca się wykorzystanie narzędzi do monitorowania, śledzenia ruchu i sporządzania logów. Jeden z dobrych przykładów stanowi platforma Prometheus.
Biznesowe korzyści i zalety korzystania z mikroserwisów
Jedna z podstawowych zalet korzystania z mikroserwisów ujawnia się w środowisku chmurowym. To zdecydowanie łatwiejsze skalowanie poszczególnych funkcji aplikacji niezależnie od siebie. Duży plus stanowi też brak uzależnienia od jednej technologii albo dostawcy. Projekt może zatem uwzględniać szerokie portfolio rozwiązań, które najlepiej pasują do konkretnych zastosowań.
Stworzenie aplikacji w architekturze mikroserwisów pozwala podnieść jej ogólną niezawodność. Aplikacja nie odmówi posłuszeństwa, nawet jeśli jedna z jej funkcji okaże się wadliwie zaprojektowana lub natrafi na nieoczekiwane problemy. W przypadku bardziej złożonych aplikacji możliwe jest wykorzystanie zasad ciągłego wdrażania (Continuous Deployment – CD) oraz ciągłej integracji (Continuous Integration).
Mikroserwisy wydają się najlepiej dostosowane do wykorzystania architektury typu serverless. W niektórych zastosowaniach taki wybór pozwoli zaoszczędzić na kosztach infrastruktury, szczególnie w projektach, które dopiero startują.
Z punktu widzenia zespołu developerów pojedyncza usługa jest łatwiejsza w zrozumieniu, bo jej kod jest odpowiednio mniejszy. Budowanie nowych funkcji, ich testowanie i wdrożenie, jak również wprowadzenie nowej osoby do pracy nad aplikacją staje się prostsze.
Korzystasz z usług GCP? A może dopiero rozważasz taką decyzję? Dołącz do naszej społeczności na Facebooku! Google Cloud Platform Polska to grupa stworzona z myślą o wszystkich użytkownikach i entuzjastach Google Cloud Platform, która pozwala na zdobywanie doświadczenia i dzielenie się wiedzą na temat narzędzi dostępnych w ramach tej usługi.