Tervezési minták felhőkhöz
Ezek a tervezési minták hasznosak a megbízható, skálázható és biztonságos felhőbeli alkalmazások létrehozásához.
Mindegyik minta ismerteti az általa kezelt problémát, a minta alkalmazásának szempontjait és egy, a Microsoft Azure-on alapuló példát. A legtöbb minta olyan kódmintákat vagy kódrészleteket tartalmaz, amelyek bemutatják, hogyan implementálható a minta az Azure-ban. A legtöbb minta azonban minden elosztott rendszer szempontjából releváns, függetlenül attól, hogy az Azure-ban vagy más felhőplatformokon van-e üzemeltetve.
A felhőalapú számítási feladatok hajlamosak az elosztott számítástechnika buktatóira. Néhány példa a felhőtervezési hibákra:
- A hálózat megbízható
- A késés nulla
- A sávszélesség végtelen
- A hálózat biztonságos
- A topológia nem változik
- Van egy rendszergazda
- Az összetevők verziószámozása egyszerű
- A megfigyelhetőség megvalósítása késleltethető
A tervezési minták nem szüntetik meg az ilyen fogalmakat, de segíthetnek a tudatosság, a kompenzációk és a kockázatcsökkentések kialakításában. Minden felhőminta saját kompromisszumokkal rendelkezik. Nagyobb figyelmet kell fordítania arra, hogy miért választ ki egy adott mintát, mint hogy hogyan valósítsa meg.
A felhőalapú fejlesztésben rejlő kihívások
AdatkezelésAz adatkezelés a felhőalkalmazások kulcsfontosságú eleme, és a legtöbb minőségi attribútumot befolyásolja. Az adatok általában különböző helyeken és több kiszolgálón találhatók a teljesítmény, a méretezhetőség vagy a rendelkezésre állás érdekében. Ez különböző kihívásokat jelenthet. Fenn kell tartani például az adatok konzisztenciáját, és az adatokat jellemzően több különböző hely között kell szinkronizálni. |
|
Tervezés és implementálásA jó tervezés magában foglalja az összetevők tervezésének és üzembe helyezésének konzisztenciáját és koherenciáját, az adminisztráció és a fejlesztés egyszerűsítésének karbantarthatóságát, valamint az összetevők és alrendszerek más alkalmazásokban és forgatókönyvekben való használatát lehetővé tevő újrafelhasználhatóságot. A tervezési és megvalósítási fázisban hozott döntések jelentősen befolyásolják a felhőalapú alkalmazások és szolgáltatások tulajdonjogának minőségét és teljes költségét. |
|
ÜzenetkezelésA felhőalapú alkalmazások elosztott jellege olyan üzenetkezelési infrastruktúrát igényel, amely összekapcsolja az összetevőket és a szolgáltatásokat, ideális esetben lazán összekapcsolva a méretezhetőség maximalizálása érdekében. Az aszinkron üzenetkezelést széles körben használják, és számos előnnyel jár, de olyan kihívásokat is kínál, mint az üzenetek megrendelése, a méregüzenetek kezelése, az idempotencia stb. |
Mintakatalógus
Minta | Összegzés | Kategória |
---|---|---|
Ambassador | Olyan segítő szolgáltatásokat hozhat létre, amelyek egy otthoni használatra szánt szolgáltatás vagy alkalmazás nevében küldenek hálózati kéréseket. | Tervezés és megvalósítás, Működésbeli kiválóság |
Anti-Corruption Layer | Egy előtér- vagy adapterréteget implementálhat egy korszerű alkalmazás és egy korábbi rendszer között. | Tervezés és megvalósítás, Működésbeli kiválóság |
Aszinkron kérés-válasz | Leválaszthatja a háttérbeli feldolgozást az előtérbeli gazdagépről, ha a háttérbeli feldolgozásnak aszinkronnak kell lennie, de az előtér egyértelmű választ igényel. | Üzenetkezelés |
Backends for Frontends | Elkülönített, adott előtérbeli alkalmazások vagy felületek által használt háttérszolgáltatásokat hozhat létre. | Tervezés és implementálás |
Bulkhead | Készletekbe választja szét egy alkalmazás elemeit, hogy ha az egyik meghibásodna, a többi tovább üzemeljen. | Megbízhatóság |
Cache-Aside | Igény szerint tölthet be adatokat egy gyorsítótárba egy adattárolóból | adatkezelés, Teljesítménybeli hatékonyság |
Koreográfia | Központi vezénylő használata helyett hagyja, hogy az egyes szolgáltatások döntsenek az üzleti műveletek feldolgozásának idejéről és módjáról. | Üzenetkezelés, Teljesítménybeli hatékonyság |
Circuit Breaker | Ha távoli szolgáltatáshoz vagy erőforráshoz csatlakozik, kezelheti azokat a hibákat, amelyek javítása esetleg sok időt venne igénybe. | Megbízhatóság |
Claim Check | A nagy méretű üzeneteket jogcímellenőrzésre és hasznos adatra oszthatja fel, hogy elkerülje az üzenetbusz túlterhelését. | Üzenetkezelés |
Compensating Transaction | Visszavonhat egy sorozatnyi, együttesen végül konzisztens műveletet meghatározó lépés által végrehajtott munkát. | Megbízhatóság |
Competing Consumers | Lehetővé teheti több párhuzamos felhasználó számára, hogy feldolgozzák az ugyanazon az üzenetkezelési csatornán fogadott üzeneteket. | Üzenetkezelés |
Compute Resource Consolidation | Egyetlen számítási egységbe konszolidálhat több feladatot vagy műveletet | Tervezés és implementálás |
CQRS | Különböző felületek használatával elkülönítheti az adatolvasó műveleteket az adatfrissítő műveletektől. | adatkezelés, Tervezés és megvalósítás, Teljesítménybeli hatékonyság |
Üzembehelyezési bélyegzők | Üzembe helyezheti az alkalmazás-összetevők (többek között az adattárak) több, egymástól független másolatát. | Megbízhatóság, Teljesítménybeli hatékonyság |
Peremhálózati számítási feladatok konfigurálása | A bolti rendszerek és eszközök széles választéka megnehezítheti a számítási feladatok konfigurálását. | Tervezés és implementálás |
Event Sourcing | Használhat egy csak hozzáfűzéssel bővíthető tárat az egy tartomány adatain elvégzett műveleteket leíró események teljes sorozatának rögzítésére. | adatkezelés, Teljesítménybeli hatékonyság |
External Configuration Store | A konfigurációs adatokat áthelyezheti az alkalmazás üzembehelyezési csomagjából egy központi helyre. | Tervezés és megvalósítás, Működésbeli kiválóság |
Federated Identity | A hitelesítést delegálhatja egy külső identitásszolgáltatónak. | Biztonság |
Gatekeeper | Védheti az alkalmazásokat és szolgáltatásokat egy dedikált üzemeltető példány segítségével, amely közvetítőként szolgál az ügyfelek és az alkalmazás vagy szolgáltatás között, érvényesíti és vírusmentesíti a kéréseket, valamint közvetíti a kéréseket és az adatokat közöttük. | Biztonság |
Gateway Aggregation | Több egyéni kérést összesíthet egyetlen kérésbe egy átjáró segítségével. | Tervezés és megvalósítás, Működésbeli kiválóság |
Gateway Offloading | A megosztott vagy specializált szolgáltatásműködést kiszervezheti egy átjáró proxyra. | Tervezés és megvalósítás, Működésbeli kiválóság |
Gateway Routing | Átirányíthatja a kéréseket több szolgáltatásra egyetlen végpont használatával. | Tervezés és megvalósítás, Működésbeli kiválóság |
Geodes | Földrajzi csomópontok készletébe helyezhet üzembe háttérszolgáltatásokat, amelyek mindegyike bármely régióban bármely ügyfélkérelmet képes kiszolgálni. | Megbízhatóság, Működésbeli kiválóság |
Health Endpoint Monitoring | Rendszeres időközönként működés-ellenőrzéseket implementálhat egy alkalmazásban, amelyhez az elérhetővé tett végpontokon keresztül hozzáférhetnek külső eszközök. | Megbízhatóság, Működésbeli kiválóság |
Index Table | Indexeket hozhat létre a lekérdezések által gyakran hivatkozott adattárbeli mezőkről. | adatkezelés, Teljesítménybeli hatékonyság |
Leader Election | Koordinálhat egy elosztott alkalmazásban az együttműködő feladatpéldányokból álló gyűjtemény által végrehajtott műveleteket, ha vezetőnek választ meg egy példányt, amely vállalja a többi példány kezelésével járó felelősséget. | Tervezés és megvalósítás, Megbízhatóság |
Materialized View | Létrehozhat előre kitöltött nézeteket egy vagy több adattár adataiból, ha az adatok formázása nem ideális a szükséges lekérdezési műveletekhez. | adatkezelés, Működési kiválóság, Teljesítménybeli hatékonyság |
Pipes and Filters | Egy összetett feldolgozást végrehajtó feladatot lebonthat különálló, újrahasznosítható elemek sorává. | Tervezés és megvalósítás, Üzenetkezelés |
Priority Queue | Priorizálhatja a szolgáltatásoknak küldött kéréseket úgy, hogy a magasabb prioritású kéréseket a rendszer gyorsabban fogadja és dolgozza fel, mint az alacsonyabb prioritásúakat. | Üzenetkezelés, Teljesítménybeli hatékonyság |
Közzétevő/előfizető | Engedélyezheti egy alkalmazás számára, hogy több érdeklődő fogyasztó számára aszinkron módon, a küldők és a fogadók összekapcsolása nélkül jelentsen be eseményeket. | Üzenetkezelés |
Queue-Based Load Leveling | Használhat egy pufferként szolgáló üzenetsort egy feladat és az általa meghívott szolgáltatás között, hogy kiegyenlítse az időszakos nagy terheléseket. | Megbízhatóság, Üzenetkezelés, Rugalmasság, Teljesítménybeli hatékonyság |
Sebességkorlát minta | A szabályozási korlátokhoz kapcsolódó szabályozási hibák elkerülése és minimalizálása, valamint az átviteli sebesség pontosabb előrejelzése érdekében korlátozza a mintát. | Megbízhatóság |
Retry | Engedélyezheti egy alkalmazás számára a szolgáltatásokhoz vagy hálózati erőforrásokhoz való csatlakozáskor jelentkező előre jelzett, átmeneti meghibásodások kezelését egy korábban meghiúsult művelet transzparens módon való ismételt megkísérlésével. | Megbízhatóság |
Monda | Elosztott tranzakciós forgatókönyvekben kezelheti az adatkonzisztenciát a mikroszolgáltatások között. A saga olyan tranzakciók sorozata, amelyek frissítik az egyes szolgáltatásokat, és közzétenek egy üzenetet vagy eseményt a következő tranzakciós lépés aktiválásához. | Üzenetkezelés |
Scheduler Agent Supervisor | Koordinálhat egy műveletkészletet egy elosztott szolgáltatáskészleten és más távoli erőforrásokon. | Üzenetkezelés, Megbízhatóság |
Sequential Convoy | A kapcsolódó üzeneteket meghatározott sorrendben dolgozhatja fel, más üzenetcsoportok feldolgozásának akadályozása nélkül. | Üzenetkezelés |
Sharding | Egy adattárat horizontális partíció- vagy szilánkkészletté oszthat fel. | adatkezelés, Teljesítménybeli hatékonyság |
Sidecar | Egy alkalmazás összetevőit külön folyamatban vagy tárolóban helyezheti üzembe, így elkülönítést és beágyazást biztosíthat. | Tervezés és megvalósítás, Működésbeli kiválóság |
Static Content Hosting | A statikus tartalmakat egy felhőalapú társzolgáltatásban helyezheti üzembe, amely közvetlenül az ügyfélnek közvetíti azt. | Tervezés és megvalósítás, adatkezelés, Teljesítménybeli hatékonyság |
Strangler Fig | Növekményesen migrálhat egy korábbi rendszert oly módon, hogy egyes funkciódarabokat fokozatosan új alkalmazásokra és szolgáltatásokra cserél. | Tervezés és megvalósítás, Működésbeli kiválóság |
Szabályozás | Szabályozhatja egy alkalmazáspéldány, egyéni bérlő vagy teljes szolgáltatás által használt erőforrások felhasználását. | Megbízhatóság, Teljesítménybeli hatékonyság |
Valet Key | Jogkivonatot vagy kulcsot használhat, amely korlátozott közvetlen hozzáférést biztosít az ügyfelek számára egy adott erőforráshoz vagy szolgáltatáshoz. | adatkezelés, Biztonság |