„Háttéralkalmazások/Záróvizsgatételek” változatai közötti eltérés
a →6. JPA – használat: Üres táblázat eltávolítása |
→10. Microservices: Tétel kidolgozása |
||
| 1 081. sor: | 1 081. sor: | ||
=== Milyen előnyökkel és hátrányokkal jár a mikroszolgáltatás architektúra a monolitikussal szemben? === | === Milyen előnyökkel és hátrányokkal jár a mikroszolgáltatás architektúra a monolitikussal szemben? === | ||
=== | ==== Előnyök ==== | ||
Előnye, hogy az alkalmazás modulárissá válik. Ebből következik a... | |||
* kisebb kódbázis | |||
** gyorsabb | |||
*** tesztek | |||
*** build | |||
*** IDE | |||
** könnyebb teszteket írni | |||
** könnyebb bekapcsolódni a munkába | |||
** kisebb csapat tud rajta dolgozni | |||
*** kevesebb koordináció szükséges | |||
* külön kezelhető szolgáltatások | |||
** többféle technológia használható | |||
** robosztusabb | |||
*** terheléselosztás | |||
*** SPOF kiküszöbölése | |||
*** automatikus újraindítás | |||
** jobb skálázhatóság | |||
*** elég a bottleneck(ek)et felskálázni | |||
**** gyorsabb indulás | |||
*** alacsonyabb terhelés esetén leskálázni is lehet | |||
** rugalmasabb frissítések | |||
*** könnyebb a rollback is | |||
** részekre bontott költségek | |||
*** üzemeltetésnél | |||
*** frissítéseknél | |||
**** könnyebben eladható a megrendelő számára | |||
***** akár egy szolgáltatás teljes újraírása is | |||
==== Hátrányok ==== | |||
A modularitásnak természetesen vannak hátrányai is. Ezek a következőek: | |||
* komplexebb architektúra, melynek tervezéséhez és üzemeltetéséhez nagyobb szaktudás (pl. utóbbihoz egy képzett DevOpsos) kell | |||
** több (teszt)példány | |||
*** több tesztszerver | |||
** azok között több kapcsolat | |||
*** a hálózati (szolgáltatások közti) kommunikáció továbbra is kötött | |||
** többféle szerveren is futhatnak | |||
** többféle technológiát is használhatnak | |||
** bonyolultabb a verziókezelés | |||
*** nehezebb a kompatibilitás | |||
** nehezebb a CI/CD | |||
*** bonyolultabb a deploy | |||
* több hálózati kommunikáció | |||
** point of faliure | |||
** overhead | |||
* nehezebben megvalósítható atomicitás | |||
* kódduplikáció | |||
Ezekre (részben vagy egészben) megoldást ad... | |||
... | |||
* egy jól elkészített CI/CD | |||
* egy hálózatkiesésre felkészített szolgáltatás | |||
* a fejlesztőcsapatok közti jó kommunikáció | |||
* közös könyvtárak készítése | |||
** amely megint korlátozza a szolgáltatásokban használható nyelveket | |||
=== | === Ismertesd az alábbi microservice tervezési minták céljait, azok előnyeit, hátrányait! === | ||
{| class="wikitable" | |||
|+összehasonlítás | |||
!tervezési minta | |||
!jellemzői | |||
!előnyei | |||
!hátrányai | |||
|- | |||
|shared database | |||
|több szolgáltatás egy sémát használ | |||
| | |||
* nem kell több adatbázis | |||
* szabadon lehet joinolni | |||
* egy megkezdett tranzakciót folytathat egy másik szolgáltatás | |||
* az ACID az adatbázis által biztosított | |||
| | |||
* ellentétes a microservices alapelveivel | |||
* egyféle RDBMS használható | |||
* bottleneck | |||
* függőséget teremt a szolgáltatások közt | |||
* ha egy szolgáltatásnak szüksége van indexre, akkor a többi teljesítményét is rontja | |||
* egyeztetni kell a sémamódosításokról | |||
|- | |||
|database per service | |||
|mindegyik szolgáltatás külön privát táblát / külön sémát / külön adatbázist használ | |||
| | |||
* külön adatbázisok esetén nincs SPOF | |||
* akár többféle RDBMS is használható | |||
| | |||
* külön adatbázisok esetén nehezebb és drágább az üzemeltetés | |||
* nehezebb joinolni | |||
* nehezebb tranzakciókat átadni másik szolgáltatásnak | |||
* e kettő általában hibás tervezés jele | |||
* de meg lehet oldani az alábbi két minta valamelyikével | |||
|- | |||
|database per service '''API composition'''nel | |||
|a külön privát táblák / külön sémák / külön adatbázisok adatait egy új szolgáltatás joinolja | |||
| | |||
* lehet joinolni | |||
| | |||
* a memóriakorlát miatt továbbra sem lehet szabadon joinolni | |||
|- | |||
|database per service '''command query responsibility segregation'''nel | |||
|a külön privát táblák / külön sémák / külön adatbázisok adatait egy külön szolgáltatás módosítja, és azokat egy read-only view adatbázisban is összegyűjtjük | |||
| | |||
* szabadon lehet joinolni | |||
* a gyakori lekérdezésre lehet optimalizálni a view adatbázis sémáját, ami akár a joinolást is kiküszöbölheti | |||
| | |||
* ez a legbonyolultabb | |||
* esetleges kódduplikáció | |||
* a view adatbázist valahogy szinkronizálni kell a fő adatbázissal | |||
* késleltetés vagy inkonzisztencia is felléphet | |||
|} | |||
== 11. Microservices == | == 11. Microservices == | ||