Mikrousługi to architektura, w której aplikacja jest dzielona na małe autonomiczne usługi — każda z własnym kodem, własną bazą danych, własnym cyklem deploymentu — komunikujące się ze sobą przez API REST, GraphQL lub asynchroniczne wiadomości (Kafka, RabbitMQ, NATS). To przeciwieństwo monolitu, gdzie cały kod żyje w jednej aplikacji deployowanej w całości. Obietnica: autonomiczne zespoły (każdy zespół posiada swoją usługę), celowana skalowalność (skalujesz tylko to, co jest pod obciążeniem) i odporność (jedna usługa offline nie kładzie całości). Netflix, Uber, Spotify spopularyzowali to podejście między 2014 a 2018 rokiem.
Marketingowa obietnica skrywa brutalną prawdę techniczną: mikrousługi to ogromna złożoność operacyjna. Wymieniasz złożoność jednego dużego kodu na złożoność systemu rozproszonego — latencja sieciowa, transakcje rozproszone, observability (logi/trace'y/metryki × N usług), wersjonowanie API, skoordynowane deploymenty, koszmar przy debugowaniu. Dla MŚP lub startupu z 1–5 devami to niemal zawsze nadinżyniering. Właściwy odruch jest odwrotny niż moda: zacząć od dobrze podzielonego modularnego monolitu i wydzielać usługę tylko wtedy, gdy pojawi się realna potrzeba (zbyt duży zespół, niejednorodna skalowalność, ograniczenie innej technologii).
Kiedy mikrousługi są właściwym wyborem: zespoły 30+ devów, bardzo niejednorodne obciążenia (jedna usługa 10 req/s, inna 10 000), różne ograniczenia technologiczne (Python ML + Node real-time) lub silne rozdzielenie biznesowe (płatności vs katalog vs dostawa). Wdraża się je na Kubernetes lub zarządzanych PaaS-ach (ECS, Cloud Run), z warstwą event-driven i webhookami do integracji zewnętrznych. Dla 90% SaaS i oprogramowania biznesowego dobrze zaprojektowany monolit Next.js + PostgreSQL jest szybszy, bardziej niezawodny i znacznie tańszy w utrzymaniu.
Mikrousługi: nadinżyniering czy dobry wybór?
- Nadinżyniering, jeśli masz mniej niż 10 devów lub produkt szukający product-market fit.
- Dobry wybór, jeśli masz kilka autonomicznych zespołów, bardzo niejednorodne obciążenia lub rozbieżne ograniczenia technologiczne.
- Zdrowa alternatywa: dobrze podzielony modularny monolit, progresywne wydzielanie modułów do usług w razie realnej potrzeby.
- Ukryty koszt: observability, CI/CD wielousługowe, on-call 24/7 — licz 2–3 dodatkowe etaty DevOps.
