Microservices sú trend, ale nie sú univerzálnym riešením. Pozrime sa, kedy má zmysel ktorá architektúra.
Čo je Monolith?
Monolitická aplikácia je jedna súvislá kódová báza, kde všetky komponenty bežia spolu. Databáza, business logika, UI - všetko je prepojené.
Výhody monolitu
- Jednoduchosť - jeden deployment, jedna databáza
- Rýchly vývoj - žiadna overhead komunikácia medzi službami
- Jednoduchý debugging - všetko na jednom mieste
- Nižšie náklady - menej infraštruktúry
Nevýhody
- Škálovanie celej aplikácie kvôli jednej časti
- Riziko "big ball of mud"
- Dlhšie časy nasadenia
Čo sú Microservices?
Microservices rozdeľujú aplikáciu na malé, nezávislé služby, ktoré komunikujú cez API.
Výhody microservices
- Nezávislé škálovanie - škálujte len to, čo potrebujete
- Technologická sloboda - každá služba môže používať iný stack
- Nezávislé nasadenia - menšie riziko, rýchlejšie releasy
- Fault isolation - zlyhanie jednej služby nezničí celok
Nevýhody
- Komplexita - distribuované systémy sú ťažké
- Latencia - sieťová komunikácia je pomalšia
- Data konzistencia - distributed transactions sú náročné
- Vyššie náklady - viac infraštruktúry, monitoring
Kedy zvoliť monolith?
- Začínate nový projekt / MVP
- Malý tím (do 5-10 ľudí)
- Nejasné požiadavky
- Potrebujete rýchlo dodať
Kedy zvoliť microservices?
- Veľký tím s jasne oddelenými zodpovednosťami
- Rôzne časti systému majú rôzne scaling požiadavky
- Potrebujete nezávislé nasadenia
- Máte skúsenosti s distribuovanými systémami
Zlatá stredná cesta
Modular monolith - monolith s jasne definovanými hranicami modulov. Získate výhody oboch svetov a môžete ľahko migrovať na microservices neskôr.
Záver
Začnite s monolithom. Keď narazíte na jeho limity, máte dostatok znalostí o doméne na správne rozdelenie do microservices.