Skálázható Mikroszolgáltatás (Microservices) Architektúra
Ha a 2010-es évek elején fejlesztettél egy webáruházat, szinte biztosan egyetlen hatalmas kódbázisban dolgoztál. Ezt nevezzük Monolitikus architektúrának. A monolitban a felhasználókezelés, a termékkatalógus, a kosár és a fizetési rendszer mind egyetlen szerveren, egyetlen programként futott. Bár ez eleinte egyszerű, ahogy a cég nő, a monolit karbantarthatatlanná válik. Egyetlen hiba a fizetési modulban az egész weboldalt leállíthatja.
A nagy tech cégek (Netflix, Amazon, Uber) a skálázhatósági problémák megoldására találták ki a Mikroszolgáltatás (Microservices) architektúrát.
Mi az a Mikroszolgáltatás?
A mikroszolgáltatások koncepciója az, hogy a hatalmas, egybefüggő alkalmazást sok kis, független szolgáltatásra bontjuk. Minden egyes szolgáltatás (Service) kizárólag egyetlen üzleti funkcióért felel (például csak a számlázásért, vagy csak az e-mailek kiküldéséért).
Ezek a szolgáltatások teljesen függetlenek egymástól:
- Saját adatbázisuk van (így egy adatbázis-összeomlás nem rántja magával a többi szolgáltatást).
- Saját forráskóddal és kódtárolóval (Git) rendelkeznek.
- Bármilyen programozási nyelven íródhatnak (a számlázó futhat Java-n, míg a chat modul Node.js-ben).
- Hálózaton keresztül (többnyire REST API-kon vagy üzenetsorokon, pl. RabbitMQ, Kafka) kommunikálnak egymással.
Milyen előnyökkel jár ez a váltás?
1. Független Skálázhatóság
A Black Friday alatt a webáruházadban a "Kosár" és a "Fizetés" modul óriási terhelést kap, míg a "Felhasználói Profil Szerkesztése" modul szinte üresjáratban van. Egy monolitban az egész alkalmazásból kell újabb példányokat indítanod. Mikroszolgáltatások esetén elég csak a "Fizetés" modult futtató Docker konténerek számát megnövelni, így rengeteg szerverköltséget spórolsz.
2. Gyorsabb Fejlesztés és Hibatűrés
A különböző fejlesztői csapatok teljesen függetlenül tudnak dolgozni. Az egyik csapat naponta többször is frissítheti (deploy) a saját szolgáltatását anélkül, hogy a többieknek le kéne állítaniuk a munkát. Ha az "Ajánlórendszer" szolgáltatás összeomlik, a webáruház maga továbbra is tökéletesen működik, a vásárlók maximum nem látnak termékajánlókat.
A Mikroszolgáltatások árnyoldala
Nem szabad vakon a mikroszolgáltatások felé rohanni! Ez a megközelítés óriási üzemeltetési (DevOps) komplexitást hoz magával. Hálózatokat kell menedzselni, terheléselosztókat beállítani, és sokkal nehezebb a hibakeresés (debugging) egy olyan kérésnél, ami 5 különböző szerveren megy keresztül. Kisebb projektek esetén a Monolit még mindig a legjobb és legköltséghatékonyabb választás.
Összegzés
A Microservices architektúra a modern felhőalapú (Cloud-native) alkalmazások alapköve. Olyan eszközök tették széles körben elérhetővé, mint a Docker a szolgáltatások becsomagolására, és a Kubernetes a konténerek tízezreinek automatikus irányítására.
Gyakran Ismételt Kérdések (GYIK)
Hogyan kommunikálnak a szolgáltatások gyorsan?
Míg a külső kliensek (böngészők) általában HTTP REST API-n vagy GraphQL-en keresztül kommunikálnak a rendszerrel, a belső szolgáltatások gyakran egy sokkal gyorsabb, bináris protokollt (pl. gRPC) használnak, vagy aszinkron eseményalapú üzenetsorokat (Apache Kafka).