„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? ===
...


=== Ismertesd az alábbi microservice tervezési minták céljait, azok előnyeit, hátrányait! ===
==== 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:


==== Shared database ====
* 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ó


==== Database per service ====
Ezekre (részben vagy egészben) megoldást ad...
...


==== API composition ====
* 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


==== CQRS ====
=== 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 ==