encyklopedia.space

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

  1. Zarządzanie złożonością – rosnąca liczba usług wymaga efektywnych narzędzi do monitoringu i logowania.
  2. Komunikacja sieciowa – zwiększa się liczba wywołań sieciowych, co może wpływać na opóźnienia.
  3. Spójność danych – utrzymanie spójności w środowisku rozproszonym wymaga strategii, takich jak wzorzec Saga.
  4. Bezpieczeństwo – każdy punkt komunikacji stanowi potencjalny wektor ataku.

Typowe komponenty techniczne

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)