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:

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).


Ezek is érdekelhetnek: