Architektura mikroserwisów – definicja
Architektura mikroserwisów to podejście projektowe w informatyce, gdzie systemy aplikacyjne są rozbijane na mniejsze, niezależne od siebie i łatwiej zarządzalne komponenty zwane mikroserwisami. Każdy mikroserwis jest samodzielnym modułem, realizującym określoną funkcję bądź usługę, a interakcje pomiędzy nimi odbywają się poprzez interfejsy programistyczne (API). Taka architektura ma na celu zwiększenie elastyczności, skalowalności oraz ułatwienie utrzymania i rozwijania systemów informatycznych.
Korzyści z zastosowania mikroserwisów
- Elastyczność i skalowalność
Mikroserwisy są łatwe do skalowania, ponieważ można je dodawać lub usuwać w miarę potrzeb. Pozwala to na dostosowanie aplikacji do zmieniających się potrzeb biznesowych.
- Wzrost wydajności
Mikroserwisy mogą poprawić wydajność aplikacji, ponieważ każda usługa może być optymalizowana pod kątem konkretnego zadania.
- Zwiększenie niezawodności
Mikroserwisy mogą zwiększyć niezawodność aplikacji, ponieważ awaria jednej usługi nie powoduje awarii całej aplikacji.
- Ułatwienie rozwoju i utrzymania
Mikroserwisy ułatwiają rozwój i utrzymanie aplikacji, ponieważ każda usługa jest niezależna i może być rozwijana i utrzymana przez osobny zespół.
Typologie mikroserwisów
Istnieje wiele różnych typologii mikroserwisów, które dzielą je na kategorie w oparciu o różne kryteria. Oto kilka najpopularniejszych typologii:
Typy mikroserwisów według zakresu
Makro-mikroserwisy: Mikroserwisy o szerokim zakresie, które odpowiadają za wykonywanie złożonych funkcji.
Mikro-mikroserwisy: Mikroserwisy o wąskim zakresie, które odpowiadają za wykonywanie prostych funkcji.
Typy mikroserwisów według technologii
Mikroserwisy natywne: Mikroserwisy, które są pisane w języku programowania i wykorzystują technologie, które są przeznaczone do architektury mikroserwisowej.
Mikroserwisy nienatywne: Mikroserwisy, które są pisane w języku programowania i wykorzystują technologie, które nie są przeznaczone do architektury mikroserwisowej.
Typy mikroserwisów według interfejsu
Mikroserwisy RESTful: Mikroserwisy, które wykorzystują protokół REST do komunikacji między sobą.
Mikroserwisy SOAP: Mikroserwisy, które wykorzystują protokół SOAP do komunikacji między sobą.
Typy mikroserwisów według modelu zarządzania
Mikroserwisy zarządzane: Mikroserwisy, które są zarządzane przez centralną jednostkę organizacyjną.
Mikroserwisy niezdalne: Mikroserwisy, które są zarządzane przez niezależne jednostki organizacyjne.
Typy mikroserwisów według modelu wdrażania
Mikroserwisy wdrażane w chmurze: Mikroserwisy, które są wdrażane w chmurze obliczeniowej.
Mikroserwisy wdrażane lokalnie: Mikroserwisy, które są wdrażane lokalnie w infrastrukturze firmy.
Typy mikroserwisów według modelu rozwoju
Mikroserwisy rozwijane przez zespół monolityczny: Mikroserwisy, które są rozwijane przez jeden zespół programistów.
Mikroserwisy rozwijane przez zespoły autonomiczne: Mikroserwisy, które są rozwijane przez niezależne zespoły programistów.
Wady i zalety architektury mikroserwisów
| Wady | Zalety |
|
Skomplikowany deployment Wdrożenie wielu mikroserwisów i ich koordynacja może być bardziej skomplikowane niż w tradycyjnej architekturze monolitycznej. |
Skalowalność Łatwość w skalowaniu poszczególnych mikroserwisów niezależnie od siebie, co pozwala na efektywne zarządzanie obciążeniem. |
|
Złożoność zarządzania Zarządzanie wieloma niezależnymi mikroserwisami wymaga odpowiednich narzędzi i procesów, co może być czasochłonne. |
Niezależność Każdy mikroserwis jest niezależny, co pozwala na rozwijanie, testowanie i wdrażanie zmian bez wpływu na resztę systemu. |
|
Koszty związane z komunikacją Komunikacja między mikroserwisami może generować dodatkowe koszty związane z przesyłaniem danych między usługami. |
Technologiczna różnorodność Mikroserwisy pozwalają na używanie różnych technologii dla różnych komponentów, co umożliwia dostosowanie do specyficznych wymagań. |
|
Bezpieczeństwo Zarządzanie bezpieczeństwem i autoryzacją w środowisku mikroserwisów może być bardziej wymagające niż w monolicie. |
Łatwość wdrażania nowych funkcji Dzięki niezależności mikroserwisów, wprowadzanie nowych funkcji i aktualizacji może być bardziej elastyczne. |
|
Złożoność debugowania Debugowanie i monitorowanie mikroserwisów może być bardziej skomplikowane niż w przypadku pojedynczej aplikacji monolitycznej. |
Łatwiejsza skalowalność zespołów Mikroserwisy pozwalają na pracę nad różnymi komponentami niezależnie, co ułatwia organizację zespołów i przyspiesza rozwój. |
|
Zarządzanie transakcjami Zarządzanie transakcjami rozproszonymi może być trudniejsze w architekturze mikroserwisowej. |
Lepsza odporność na awarie Awaria jednego mikroserwisu nie wpływa na pozostałe, co zwiększa odporność systemu na awarie. |
Przykłady aplikacji, w których zastosowano mikroserwisy
Amazon Web Services (AWS)
AWS to platforma chmurowa, która oferuje szeroki zakres usług, w tym mikroserwisy. AWS jest wykorzystywany przez wiele dużych firm, takich jak Netflix, Spotify i Airbnb.
Netflix
Netflix to usługa streamingowa, która wykorzystuje mikroserwisy do obsługi zadań takich jak rekomendacje filmów, strumieniowanie wideo i zarządzanie płatnościami.
Spotify
Spotify to usługa streamingowa, która wykorzystuje mikroserwisy do obsługi zadań takich jak wyszukiwanie muzyki, odtwarzanie muzyki i zarządzanie subskrypcjami.
Airbnb
Airbnb to platforma do wynajmu krótkoterminowego, która wykorzystuje mikroserwisy do obsługi zadań takich jak wyszukiwanie ofert, rezerwacje i płatności.
LinkedIn to sieć społecznościowa dla profesjonalistów, która wykorzystuje mikroserwisy do obsługi zadań takich jak profilowanie, wyszukiwanie kontaktów i wysyłanie wiadomości.
Czy Shopify stosuje technologie mikroserwisów?
Tak, Shopify Polska stosuje technologie mikroserwisów. Platforma Shopify jest podzielona na ponad 100 mikroserwisów, które są odpowiedzialne za różne funkcje, takie jak:
- Zarządzanie produktami i zamówieniami
- Obsługa płatności
- Marketing
- Logistyka
- Bezpieczeństwo
Mikroserwisy w Shopify i Shopify Plus są pisane w różnych językach programowania, takich jak Java, Node.js i Python. Są one wdrażane w chmurze obliczeniowej AWS.