Podręcznik
3. Architektury aplikacji internetowych
3.3. Mikroserwisy
Architektura mikroserwisowa polega na podziale aplikacji na małe, autonomiczne jednostki (mikroserwisy), które są wdrażane, skalowane i zarządzane niezależnie od siebie. Każdy mikroserwis ma własną logikę biznesową, bazę danych (lub dostęp do swojej części danych) i jest zaprojektowany tak, aby działać jako niezależna jednostka.Do zalet architektury mikroserwisowej zaliczyć należy:
- Łatwość skalowania. Mikroserwisy można skalować niezależnie od siebie, co pozwala na lepsze wykorzystanie zasobów i elastyczne reagowanie na zmieniające się obciążenie poszczególnych komponentów aplikacji.
- Szybsze wdrożenie i rozwój. Dzięki niezależności serwisów zespoły programistów mogą równocześnie rozwijać różne części aplikacji, co przyspiesza wdrażanie nowych funkcji.
- Elastyczność w doborze technologii. Możliwość użycia różnych technologii i języków programowania w poszczególnych mikroserwisach pozwala na ich optymalny wybór w zależności od potrzeb danego mikroserwisu.
- Odporność na awarie. Awaria jednego mikroserwisu nie musi zablokować działania całej aplikacji, co zwiększa niezawodność i dostępność systemu.
- Łatwiejsze utrzymanie i zarządzanie. Poszczególne mikroserwisy są znacznie mniejsze niż odpowiadająca im funkcjonalnie aplikacja monolityczna, a więc są też i prostsze w utrzymaniu. Ułatwia to zarządzanie kodem i pozwala na szybsze naprawianie błędów.
- Większa złożoność komunikacji. Wzrost liczby mikroserwisów prowadzi do skomplikowania komunikacji między nimi, co wymaga zaprojektowania odpowiednich interfejsów API, skonfigurowania połączeń sieciowych oraz rozwiązywania problemów związanych z niezawodnością i opóźnieniami. Najczęściej używa się protokołów HTTP/REST, gRPC lub komunikacji poprzez kolejki komunikatów (np. RabbitMQ, Apache Kafka).
- Trudności w zarządzaniu danymi. Rozproszone bazy danych mogą prowadzić do problemów z transakcyjnością i spójnością danych, co wymaga zastosowania dodatkowych strategii, takich jak zarządzanie zdarzeniami.
- Dodatkowe koszty utrzymania. Monitorowanie, logowanie, śledzenie i zarządzanie wieloma mikroserwisami jest bardziej kosztowne i złożone w porównaniu do architektury monolitycznej.
- Wymagane dodatkowe kompetencje. Mikroserwisy wymagają zaawansowanych umiejętności z rodziny DevOps, znajomości
narzędzi do orkiestracji (np. Kubernetes) oraz odpowiednich strategii
monitorowania i testowania aplikacji webowych.