Definicja #
Mikroservisy (ang. microservices) to styl architektoniczny aplikacji oparty na zestawie małych, autonomicznych serwisów, z których każdy:
- Realizuje pojedynczą odpowiedzialność biznesową (bounded context)
- Jest niezależnie wdrażany, skalowany i rozwijany
- Posiada własną bazę danych (brak współdzielonego storage)
- Komunikuje się z innymi serwisami przez REST, gRPC lub kolejki wiadomości (Kafka, RabbitMQ)
Zalety mikroservisów:
- Niezależne skalowanie — każdy serwis skaluje się według własnych potrzeb
- Izolacja awarii — błąd jednego serwisu nie powala całego systemu
- Różnorodność technologiczna — każdy serwis może używać innego języka i bazy danych
- Szybszy development — małe, autonomiczne zespoły mogą wdrażać niezależnie
Wady: złożoność operacyjna (wiele serwisów do monitorowania), sieciowe opóźnienia, wyzwania z transakcjami rozproszonymi i debugowaniem. Mikroservisy nie zawsze są właściwym wyborem — monolity są prostsze na początku.
Zastosowania #
- Duże aplikacje e-commerce — osobne serwisy dla katalogu, koszyka, płatności, zamówień
- Platformy SaaS z wieloma domenami biznesowymi wymagającymi niezależnych cykli release
- Systemy z różnymi wymaganiami skalowania (np. serwis rekomendacji vs. serwis logowania)
- Organizacje z wieloma autonomicznymi zespołami (zasada Conwaya — architektura odzwierciedla strukturę org)
- Migracja monolitu — stopniowe wyodrębnianie serwisów ze starszych aplikacji (Strangler Fig Pattern)
Ścieżka nauki #
Przed mikroservisami musisz dobrze rozumieć monolit i jego ograniczenia, REST i asynchroniczną komunikację (kolejki), Docker i Kubernetes, a także wzorce Domain-Driven Design (Bounded Context, Aggregate).
Na starcie przeczytaj "Building Microservices" Sama Newmana — to fundamentalna pozycja. Zbuduj mały system 2-3 serwisów z Docker Compose, naucz się service discovery i API gateway.
Następnie poznaj wzorce mikroservisowe: Circuit Breaker (Polly, Resilience4j), Saga dla transakcji rozproszonych, CQRS + Event Sourcing, Sidecar. Opanuj Kubernetes dla orkiestracji i Istio/Linkerd dla service mesh. Monitoring (Prometheus, Grafana) i distributed tracing (Jaeger, Zipkin) są kluczowe w środowiskach produkcyjnych z wieloma serwisami.
FAQ #
- Kiedy warto używać mikroservisów zamiast monolitu?
- Mikroservisy opłacają się przy: dużych systemach z wieloma domenami biznesowymi, zespołach powyżej 20-30 osób, różnych wymaganiach skalowania komponentów, potrzebie niezależnych wdrożeń. Monolity są lepsze na starcie — Martin Fowler zaleca zaczynać od monolitu i wyodrębniać serwisy gdy jest ku temu powód.
- Ile zarabia architect mikroservisów w Polsce?
- Architect z doświadczeniem w mikroservisach (Kubernetes, service mesh, DDD) zarabia zazwyczaj 25 000-45 000 zł brutto miesięcznie lub więcej na B2B. To jedna z najlepiej opłacanych specjalizacji w IT.
- Czym różnią się mikroservisy od SOA?
- SOA (Service-Oriented Architecture) i mikroservisy to powiązane koncepty, ale różnią się skalą i podejściem. SOA zazwyczaj oznacza większe serwisy komunikujące się przez ESB (Enterprise Service Bus). Mikroservisy są mniejsze, unikają centralnego brokera i preferują lekką komunikację (REST, gRPC, kolejki).
- Co to jest API Gateway w kontekście mikroservisów?
- API Gateway to serwis działający jako centralny punkt wejścia dla klientów (frontend, aplikacje mobilne). Agreguje żądania do wielu serwisów, obsługuje autentykację, rate limiting i routing. Popularne implementacje to Kong, AWS API Gateway, Nginx i Ocelot (.NET).