Top 10 microservice tervezési minta: SAGA

Mik azok a microservice tervezési minták?

A mikroszolgáltatás független alkalmazáskomponensekből áll, amelyek egy rendszer számára specifikus funkciókat hajtanak végre. Egyetlen példánya vagy több példánya is lehet a funkcionális követelmények alapján.
A kliensoldali (webes felület és mobilos UI) és a köztes rétegekben lévő más integrált szolgáltatásokkal együtt ezek a mikroszolgáltatások mindegyike egy teljes architektúrát alkot.

Az ilyen mikroszolgáltatás-architektúra tervezése, fejlesztése és telepítése azonban kihívásokkal jár, mint például:

  • Közös hozzáférés kezelése
  • Adatkonzisztencia
  • Szolgáltatások biztonsága
  • Szolgáltatások közötti kommunikáció

Itt jönnek a képbe a mikroszolgáltatás tervezési minták (microservice design patterns)!
Ezek olyan referenciaarchitektúrás minták, amelyek segítenek a szolgáltatások hatékonyabb adminisztrációjában, ezeknek a kihívásoknak a leküzdésében és a teljesítmény maximalizálásában.

Microservice design patterns

Sőt, a mikroszolgáltatásokban az Ön felhasználási eseteihez megfelelő tervezési minták alkalmazása növelheti a komponensek újrafelhasználhatóságát, ami végül a fejlesztési idő és erőfeszítések csökkenését eredményezi.
Idővel az újrafelhasználhatóság kiküszöböli a szükségtelen újrafejlesztést az alkalmazás módosításainál.

A 10 legfontosabb microservice tervezési minta

Fontos megjegyezni, hogy a mikroszolgáltatás tervezési minták nem csodaszerek!
Minden tervezési mintának megvannak a maga előnyei és hátrányai.
A következőkben az alábbi 12 tervezési mintát mutatjuk be röviden:

  1. Strangler Fig
  2. SAGA
  3. Aggregator
  4. Event Source
  5. CQRS
  6. Sidecar
  7. Database per microservice
  8. Backend For Frontends (BFF)
  9. Api Gateway
  10. Circuit Braker

2. SAGA minta

A Saga egy tervezési minta, amely az elosztott tranzakciók kezelésére szolgál mikroszolgáltatás-architektúrákban. Biztosítja az atomicity tulajdonságot, azaz a tranzakció minden műveletének sikeresen kell befejeződnie, különben az egész tranzakciót vissza kell állítani.

From_2PC_To_Saga

A Saga minta működése:

  1. Tranzakció kezdeményezése: A kliens egy tranzakciót indít el az egyik mikroszolgáltatásnál.
  2. Terjedés: A mikroszolgáltatás további mikroszolgáltatásokat hív meg a tranzakció végrehajtásához. Minden mikroszolgáltatás elvégzi a saját feladatát, és regisztrál egy kompenzációs műveletet a Saga koordinátornál.
  3. Sikeres befejezés: Ha minden mikroszolgáltatás sikeresen végrehajtja a feladatát, a tranzakció sikeresnek minősül. A Saga koordinátor megerősíti a végrehajtást minden részt vevő mikroszolgáltatásnál.
  4. Hiba esetén: Ha valamelyik mikroszolgáltatás hibát észlel a tranzakció során, a Saga koordinátort értesíti a hibáról.
  5. Kompenzáció: A Saga koordinátor elindítja a korábban regisztrált kompenzációs műveleteket az összes részt vevő mikroszolgáltatásnál, visszaállítva az állapotot a tranzakció kezdeti állapotára.

A Saga minta előnyei:

  • Atomicity: Biztosítja, hogy a tranzakció minden művelete vagy együttesen sikerüljön, vagy együttesen hibázzon.
  • Skalázhatóság: A mikroszolgáltatások függetlenül skálázhatók.
  • Hibakezelés: Lehetővé teszi a hibák hatékony kezelését és a tranzakció visszaállítását.

A Saga minta hátrányai:

  • Komplexitás: A Saga minta implementálása összetett lehet, főleg nagy és összetett tranzakciók esetén.
  • Egyetlen hiba pont: A Saga koordinátor egyetlen hiba ponttá válhat, ha nem kezelik megfelelően.

Mikor használjuk a Saga mintát?

A Saga mintát akkor érdemes alkalmazni, ha:

  • Több mikroszolgáltatáson keresztül kell tranzakciót végrehajtani.
  • A tranzakciónak atomikusnak kell lennie.
  • Fontos a tranzakció hibájának hatékony kezelése.
  • A tranzakcióban részt vevő mikroszolgáltatások száma és a tranzakcióban végrehajtott műveletek száma nem túl nagy.

Mikor nem érdemes a Saga mintát alkalmazni?

A Saga mintát nem érdemes alkalmazni, ha a tranzakció nem atomikus, ha a tranzakcióban részt vevő mikroszolgáltatások száma és a tranzakcióban végrehajtott műveletek száma nagy, és ha a kompenzációs műveletek összetettek.

Példa a Saga mintára:

Tegyük fel, hogy egy utazási foglalási rendszert fejlesztünk, amely repülőjegy-foglalást, szállásfoglalást és autókölcsönzést foglal magában. A Saga mintát használhatjuk annak biztosítására, hogy a felhasználó egyszerre foglalhasson repülőjegyet, szállást és autót. Ha a tranzakció során hiba lép fel (például a repülőjegy-foglalás sikertelen), a Saga minta visszaállítja a szállás- és autókölcsönzés-foglalásokat is.

Saga pattern

A Saga minta implementációja:

A Saga minta implementációja két fő megközelítést alkalmaz:

Koreográfia: Decentralizált megközelítés, ahol minden mikroszolgáltatás önállóan publikál eseményeket a következő lépés elindítására.

Create_Order_Saga_coreography

Orchestration: Központi kontroller (orchestrator) kezeli a teljes Saga folyamatot, egymás után hívva meg a helyi tranzakciókat.

Create_Order_Saga_Orchestration

A Saga minta összetettsége:

A Saga minta implementációja összetett lehet, főleg nagy és összetett tranzakciók esetén. A komplexitás oka a következő:

  • A tranzakcióban részt vevő mikroszolgáltatások száma.
  • A tranzakcióban végrehajtott műveletek száma.
  • A kompenzációs műveletek összetettsége.

A Saga minta előnyeinek és hátrányainak összegzése:

Előnyök:

  • Atomicity garanciája
  • Skalázhatóság
  • Hatékony hibakezelés

Hátrányok:

  • Komplexitás
  • Egyetlen hiba pont

Alternatívák a Saga mintára:

  • Egyszerű tranzakciók: Ha a tranzakció egyszerű és nem atomikus, akkor nem szükséges a Saga minta használata.
  • Komplex tranzakciók: Ha a tranzakció összetett és atomikusnak kell lennie, akkor a kétfázisú elkötelezettség (2PC) használata is lehetséges.

Összefoglalás

A Saga minta egy hasznos eszköz az elosztott tranzakciók kezelésére mikroszolgáltatás-architektúrákban. A minta implementálása összetett lehet, de számos előnnyel jár, mint az atomicity garanciája, a skálázhatóság és a hatékony hibakezelés. A Saga mintát akkor érdemes alkalmazni, ha a tranzakciónak atomikusnak kell lennie, és ha a tranzakcióban részt vevő mikroszolgáltatások száma és a tranzakcióban végrehajtott műveletek száma nem túl nagy.

Legutóbbi bejegyzések

Top 10 microservice tervezési minta: Api Gateway

A „SAGA” az egyik kulcsfontosságú minta, amely lehetővé teszi a tranzakciók kezelését mikroszolgáltatások között, és segítséget nyújt a rendszer stabilitásának növelésében.

Elérhetőségek

Social