Sérülésgátló rétegminta
Olyan homlokzati vagy adapterréteg implementálása különböző alrendszerek között, amelyek nem azonos szemantikával rendelkeznek. Ez a réteg lefordítja az egyik alrendszer által a másik alrendszerre irányuló kéréseket. Ezzel a mintával biztosíthatja, hogy az alkalmazás kialakítását ne korlátozzák a külső alrendszerek függőségei. Ezt a mintát Eric Evans írta le először aDomain-Driven Designban.
Környezet és probléma
A legtöbb alkalmazás más rendszerekre támaszkodik bizonyos adatok vagy funkciók esetében. Ha például egy régi alkalmazást modern rendszerre migrál, akkor is szükség lehet meglévő örökölt erőforrásokra. Az új funkcióknak képesnek kell lenniük az örökölt rendszer meghívására. Ez különösen igaz a fokozatos migrálásokra, ahol egy nagyobb alkalmazás különböző funkciói idővel modern rendszerbe kerülnek.
Ezek az örökölt rendszerek gyakran minőségi problémákat, például konvolúciós adatsémákat vagy elavult API-kat szenvednek. Az örökölt rendszerekben használt funkciók és technológiák széles körben eltérhetnek a modern rendszerektől. Az örökölt rendszerrel való együttműködéshez előfordulhat, hogy az új alkalmazásnak támogatnia kell az elavult infrastruktúrát, protokollokat, adatmodelleket, API-kat vagy más olyan funkciókat, amelyeket egyébként nem helyezne modern alkalmazásba.
Az új és az örökölt rendszerek közötti hozzáférés fenntartása arra kényszerítheti az új rendszert, hogy legalább néhány régi rendszer API-ját vagy más szemantikáját betartsa. Ha ezek az örökölt funkciók minőségi problémákat tapasztalnak, a támogatásuk "megrontja" azt, ami egyébként egy tisztán megtervezett modern alkalmazás lehet.
Hasonló problémák merülhetnek fel minden olyan külső rendszerrel kapcsolatban, amelyet a fejlesztői csapat nem irányít, nem csak az örökölt rendszerekkel.
Megoldás
A különböző alrendszerek elkülönítéséhez helyezzen el közöttük egy korrupciógátló réteget. Ez a réteg lefordítja a két rendszer közötti kommunikációt, így az egyik rendszer változatlan marad, míg a másik elkerülheti annak kialakítását és technológiai megközelítését.
A fenti ábrán egy két alrendszerrel rendelkező alkalmazás látható. Az A alrendszer egy sérülésgátló rétegen keresztül hívja meg a B alrendszert. Az A alrendszer és a sérülésgátló réteg közötti kommunikáció mindig az A alrendszer adatmodelljét és architektúráját használja. A sérülésgátló rétegből a B alrendszerbe irányuló hívások megfelelnek az alrendszer adatmodelljének vagy metódusainak. A sérülésgátló réteg tartalmazza a két rendszer közötti fordításhoz szükséges összes logikát. A réteg implementálható összetevőként az alkalmazáson belül vagy független szolgáltatásként.
Problémák és szempontok
- A sérülésgátló réteg késést okozhat a két rendszer közötti hívásokhoz.
- A sérülésgátló réteg egy további szolgáltatást ad hozzá, amelyet kezelni és karbantartani kell.
- Gondolja át, hogyan méretezhető a sérülésgátló réteg.
- Fontolja meg, hogy több sérülésgátló rétegre van-e szüksége. Előfordulhat, hogy a funkciókat több szolgáltatásra szeretné bontani különböző technológiák vagy nyelvek használatával, vagy más okok is lehetnek a sérülésgátló réteg particionálására.
- Gondolja át, hogyan lesz felügyelve a sérülésgátló réteg a többi alkalmazással vagy szolgáltatással kapcsolatban. Hogyan integrálható a monitorozási, kiadási és konfigurációs folyamatokba?
- Győződjön meg arról, hogy a tranzakció és az adatok konzisztenciája megmarad, és monitorozható.
- Fontolja meg, hogy a sérülésgátló rétegnek kezelnie kell-e a különböző alrendszerek közötti összes kommunikációt, vagy csak a funkciók egy részhalmazát.
- Ha a sérülésgátló réteg egy alkalmazásmigrálási stratégia része, fontolja meg, hogy végleges lesz-e, vagy az összes régi funkció áttelepítése után megszűnik.
- Ezt a mintát a fenti különböző alrendszerek szemléltetik, de más szolgáltatásarchitektúrákra is alkalmazhatók, például az örökölt kód monolitikus architektúrákba való integrálására.
Mikor érdemes használni ezt a mintát?
Használja ezt a mintát a következő esetekben:
- A migrálást több fázisban tervezik, de az új és a régi rendszerek közötti integrációt fenn kell tartani.
- Két vagy több alrendszer eltérő szemantikával rendelkezik, de továbbra is kommunikálnia kell.
Ez a minta nem megfelelő, ha nincsenek jelentős szemantikai különbségek az új és az örökölt rendszerek között.
Számítási feladatok tervezése
A tervezőknek értékelniük kell, hogyan használható a korrupció elleni réteg minta a számítási feladat kialakításában az Azure Well-Architected-keretrendszer pilléreiben foglalt célok és alapelvek kezelésére. Például:
Pillér | Hogyan támogatja ez a minta a pillércélokat? |
---|---|
működési kiválóságiszámítási feladatok minőségétszabványosított folyamatok és a csapat kohéziója révén nyújtja. | Ez a minta segít annak biztosításában, hogy az új összetevők tervezése ne változhasson az örökölt implementációktól, amelyek eltérő adatmodellekkel vagy üzleti szabályokkal rendelkezhetnek az örökölt rendszerekkel való integráláskor, és csökkenthetik az új összetevők műszaki adósságát, miközben továbbra is támogatják a meglévő összetevőket. - OE:04 Eszközök és folyamatok |
Mint minden tervezési döntésnél, fontolja meg az ezzel a mintával bevezethető többi pillér céljaival szembeni kompromisszumokat.