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.
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.
Mikroserwisy mogą poprawić wydajność aplikacji, ponieważ każda usługa może być optymalizowana pod kątem konkretnego zadania.
Mikroserwisy mogą zwiększyć niezawodność aplikacji, ponieważ awaria jednej usługi nie powoduje awarii całej aplikacji.
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ół.
Istnieje wiele różnych typologii mikroserwisów, które dzielą je na kategorie w oparciu o różne kryteria. Oto kilka najpopularniejszych typologii:
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.
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.
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ą.
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.
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.
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 | 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. |
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 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 to usługa streamingowa, która wykorzystuje mikroserwisy do obsługi zadań takich jak wyszukiwanie muzyki, odtwarzanie muzyki i zarządzanie subskrypcjami.
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.
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:
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.
Noto Agency Sp. z o.o.
Ignacego Paderewskiego 124a/203
35-328 Rzeszów
Poniedziałek-piątek 8:00-17:00
info@notoagency.pl
+48 536 922 088