mikrousługi
mikrousługi – architektoniczny styl projektowania systemów informatycznych, w którym aplikacja jest podzielona na niewielkie, autonomiczne usługi komunikujące się ze sobą przy pomocy lekkich protokołów, najczęściej REST lub gRPC. Każda mikrousługa realizuje jedną, ściśle określoną funkcję biznesową i może być rozwijana, wdrażana oraz skalowana niezależnie od pozostałych elementów systemu.
Historia
Początki koncepcji mikrousług sięgają wczesnych lat 2005, kiedy to w firmie Amazon podjęto decyzję o podziale monolitycznej platformy e‑commerce na mniejsze komponenty. Termin „mikrousługi” pojawił się po raz pierwszy w literaturze technicznej w roku 2011, a od 2014 zyskał na popularności dzięki szerokiemu przyjęciu narzędzi takich jak Docker i Kubernetes.
Kluczowe zasady
- Rozproszenie – usługi są uruchamiane jako odrębne procesy na różnorodnych hostach.
- Autonomia – każda mikrousługa posiada własny kod, bazę danych oraz zależności.
- Luźne powiązania – interakcje odbywają się poprzez dobrze zdefiniowane interfejsy API.
- Skalowalność pozioma – możliwe jest skalowanie wybranych usług w odpowiedzi na obciążenie.
- Ciężka autonomia w wersjonowaniu – usługi mogą mieć niezależne cykle życia i wersje.
Korzyści
- Szybsze wdrażanie
- Umożliwia ciągłą integrację i dostarczanie (CI/CD) poszczególnych usług.
- Lepsza skalowalność
- Skalowanie odbywa się jedynie tam, gdzie jest to potrzebne, co redukuje koszty infrastruktury.
- Odporność na awarie
- Awaria jednej mikrousługi nie musi wpływać na działanie całego systemu.
- Technologiczna heterogeniczność
- Poszczególne usługi mogą być napisane w różnych językach programowania (np. Java, Python, Go).
Wyzwania
- Zarządzanie złożonością – rosnąca liczba usług wymaga efektywnych narzędzi do monitoringu i logowania.
- Komunikacja sieciowa – zwiększa się liczba wywołań sieciowych, co może wpływać na opóźnienia.
- Spójność danych – utrzymanie spójności w środowisku rozproszonym wymaga strategii, takich jak wzorzec Saga.
- Bezpieczeństwo – każdy punkt komunikacji stanowi potencjalny wektor ataku.
Typowe komponenty techniczne
- API‑Gateway – centralny punkt wejścia, obsługuje routing, autoryzację i throttling.
- Service Discovery – mechanizm wykrywania dostępnych usług (np. Consul, Eureka).
- Message Broker – umożliwia asynchroniczną komunikację (np. Kafka, RabbitMQ).
- Kontejneryzacja – izolacja usług w kontenerach (Docker).
- Orkiestracja – zarządzanie cyklem życia kontenerów (Kubernetes).
Przykłady zastosowań
Wiele dużych organizacji przyjęło architekturę mikrousług, m.in.:
- Netflix – system rekomendacji i strumieniowania wideo.
- Uber – platforma transportowa obsługująca setki mikroserwisów.
- Spotify – serwis muzyczny rozdzielony na setki niezależnych usług.
Powiązane pojęcia
Architektura | Monolit | SOA | DevOps | Continuous Delivery
Patrz także
Bibliografia
Literatura i opracowania dostępne w bazie Encyklopedia obejmują m.in. pozycje:
- Newman, S. – Building Microservices (2015)
- Richardson, C. – Microservices Patterns (2018)
- Fowler, M. – artykuł „Microservices” w Martin Fowler (2014)