Szerkesztés

Megosztás a következőn keresztül:


Gridwich clean monolith architektúra

Azure Event Grid
Azure Functions

A projekt kódját tiszta architektúra-monolitikusként rendszerezik, a következő jellemző fogalmi összetevőkkel:

  • API-adapterek
  • Leválasztott alkalmazás üzleti logikája
  • Alapvető tartományobjektumok
  • Infrastruktúra-átjárók
  • Vezérlés inverziója (IoC)

Diagram showing typical conceptual components of a clean monolith architecture.

A megoldás állapot nélküli, ezért nem tartalmaz átjárókat a perzisztenciarétegekhez. A megoldás nem rendelkezik felhasználói felülettel, így nincs vezérlője vagy előadója.

A szoftverösszetevő összetétele a GridwichConfigureServices osztály használatával határozza meg, hogy mely konkrét osztályok érhetők el az Azure Functions-alkalmazás IoC-tárolójában.

Felépítés

Diagram showing components of the Gridwich monolith architecture.

A Gridwich-megoldás egy Core.EventGrid-kódtárat tartalmaz, amely a következőket tartalmazza:

  • A tartománykérelmek és a válasz adatátviteli objektumai (DTO-k).
  • Interfészek az összes alkalmazás-üzleti logikához vagy szolgáltatásobjektumhoz.
  • Azok az alaposztályok, amelyek segítenek elérni a tartományalapú logikát vagy tevékenységeket.
  • Naplózási, megfigyelhetőségi és kivételdefiníciók az alkalmazás teljes területén való használatra.

Az Azure Event Grid kérés- és válaszközvetítőként való beágyazásához a kódtár a következőkkel rendelkezik:

  • Esemény-diszpécser, amely az IoC használatával azonosítja és küldi el az eseményeket a figyelőknek.
  • Egy esemény közzétevője, amely a megfelelő Event Grid-témakörre helyezi a válaszokat.

Az Event Grid-kérelemadapter egy HTTP-végpont azure-függvény HTTP-végpont formájában. A webes kéréseket Event Grid-tömbökké konvertáló adapter szintén ugyanabban az EventGridFunction-ben található.

Az Event Grid válaszátjáró a következőkből áll:

  • Az EventGridHandlerBase, amely a válasz DTO-t objektummá EventGridEvent alakítja.
  • Az EventGridDispatcher, amely az Event Grid-eseményt a megfelelő válasz Eseményrács-témakör végpont URI-jára helyezi a témakörkulcs használatával.

A megoldás a saga résztvevőit a következő kódtárakra bontja, amelyek a tartományspecifikus alkalmazás üzleti logikájával kapcsolatos feladatokkal rendelkeznek. A kódtárak tartalmazzák a szükséges infrastruktúra-átjárókat és azok SDK-jait, amelyek végrehajtják az üzleti logika által igényelt műveleteket.

A kód újrafelhasználása és központosítása érdekében a Gridwich összevonja azokat az üzleti logikát vagy infrastruktúra-átjárókat, amelyeket több résztvevő használ a következő megosztott kódtárakban:

Mikroszolgáltatások alternatíva

A Gridwich-problématérben vagy -architektúrában semmi sem küldi el kifejezetten a megoldást egy monolitikus alkalmazásba vagy több mikroszolgáltatásba.

Az alkalmazást egyszerűen átírhatja mikroszolgáltatásokká, és mindegyik függvényalkalmazás egyetlen saga-résztvevőt üzemeltet. Minden függvényalkalmazás összekapcsolná az alapvető és az alapvető Event Grid-kódtárakat. Az alkalmazások mindegyike rendelkezik kapcsolati kapcsolatokkal, vagy egy közös kódtárat használna az infrastruktúra-átjárókhoz.

Diagram showing an alternative Gridwich microservices architecture.

Az ilyen mikroszolgáltatás-megközelítés előnye, hogy az egyes kéréstípusokra eltérő skálázást lehet alkalmazni. Ha másodpercenként több ezer kérelemtípus lenne, de naponta csak több száz másik kérelemtípus lenne, akkor a teljes megoldás kihasználná, ha kisebb, könnyen példányosítható és gyorsan végrehajtható függvények lennének a nagy mennyiségű kérésekhez.

A mikroszolgáltatások hátránya, hogy minden megosztott modellhez szinkronizált mikroszolgáltatásokra van szükség, vagy adatséma-változás esetén a készlet kiürítését és átváltását kérheti. Ez a követelmény bonyolítaná a jövőbeli fejlesztést, a folyamatos üzembe helyezést és a műveleteket. Mivel az üzleti probléma nem mutatta a mikroszolgáltatások szükségességét, a Gridwich-architektúra tiszta monolitikus megközelítést használ.

Következő lépések