Tervezési minták felhőkhözCloud Design Patterns

Ezek a tervezési minták hasznosak a megbízható, skálázható és biztonságos felhőbeli alkalmazások létrehozásához.These design patterns are useful for building reliable, scalable, secure applications in the cloud.

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.Each pattern describes the problem that the pattern addresses, considerations for applying the pattern, and an example based on Microsoft Azure. A legtöbb minta tartalmaz kódmintákat vagy kódrészleteket is, amelyek a minta Azure-on való alkalmazását mutatják be.Most of the patterns include code samples or snippets that show how to implement the pattern on Azure. A legtöbb minta ugyanakkor minden elosztott rendszeren alkalmazható, függetlenül attól, hogy az az Azure-on vagy más felhőplatformon üzemel-e.However, most of the patterns are relevant to any distributed system, whether hosted on Azure or on other cloud platforms.

A felhőalapú fejlesztésben rejlő kihívásokChallenges in cloud development

Availability

Rendelkezésre állásAvailability

A rendelkezésre állás az időarány, amíg a rendszer működik és üzemel, általában az üzemidő százalékaként megadva.Availability is the proportion of time that the system is functional and working, usually measured as a percentage of uptime. Befolyásolhatják rendszerhibák, infrastruktúraproblémák, rosszindulatú támadások vagy a rendszer terhelése.It can be affected by system errors, infrastructure problems, malicious attacks, and system load. A felhőalapú alkalmazások általában biztosítanak a felhasználó számára egy szolgáltatói szerződést (SLA), így az alkalmazásokat a rendelkezésre állás maximalizálására kell tervezni.Cloud applications typically provide users with a service level agreement (SLA), so applications must be designed to maximize availability.

Data Management

AdatkezelésData Management

Az adatkezelés a felhőalapú alkalmazások kulcsfontosságú eleme, és befolyásolja a legtöbb minőségi attribútumot.Data management is the key element of cloud applications, and influences most of the quality attributes. Az adatok általában különböző helyeken, több kiszolgálón találhatók a teljesítmény, a skálázhatóság vagy a rendelkezésre állás miatt, ez pedig különféle kihívásokat jelenthet.Data is typically hosted in different locations and across multiple servers for reasons such as performance, scalability or availability, and this can present a range of challenges. 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.For example, data consistency must be maintained, and data will typically need to be synchronized across different locations.

Design and Implementation

Tervezés és implementálásDesign and Implementation

A jó tervezés olyan tényezőket is figyelembe vesz, mint a konzisztencia és a koherencia az összetevők tervezése és üzembe helyezése során, a karbantarthatóság az adminisztráció és a fejlesztés egyszerűsítéséhez, illetve az újrahasznosíthatóság, hogy az összetevők és alrendszerek más alkalmazásokban és más forgatókönyvekben is hasznosíthatók legyenek.Good design encompasses factors such as consistency and coherence in component design and deployment, maintainability to simplify administration and development, and reusability to allow components and subsystems to be used in other applications and in other scenarios. A tervezés és az implementálás fázisában hozott döntések óriási hatással vannak a felhőalapú alkalmazások és szolgáltatások minőségére és teljes tulajdonlási költségére.Decisions made during the design and implementation phase have a huge impact on the quality and the total cost of ownership of cloud hosted applications and services.

Messaging

ÜzenetkezelésMessaging

A felhőalapú alkalmazások elosztott jellege miatt szükség van egy üzenetkezelési rendszerre is, amely összeköti az összetevőket és szolgáltatásokat, a skálázhatóság maximalizálása érdekében általában laza kapcsolással.The distributed nature of cloud applications requires a messaging infrastructure that connects the components and services, ideally in a loosely coupled manner in order to maximize scalability. Széles körben elterjedt az aszinkron üzenetkezelés, amely számos előnye mellett kihívásokat is tartogat, ilyen például az üzenetek rendezése, az ártalmas üzenetek kezelése, az idempotencia stb.Asynchronous messaging is widely used, and provides many benefits, but also brings challenges such as the ordering of messages, poison message management, idempotency, and more.

Management and Monitoring

Kezelés és figyelésManagement and Monitoring

A felhőalapú alkalmazások egy távoli adatközpontban futnak, ahol nem lehetséges teljesen uralni az infrastruktúrát, vagy bizonyos esetekben, az operációs rendszert.Cloud applications run in a remote datacenter where you do not have full control of the infrastructure or, in some cases, the operating system. Emiatt a kezelés és a figyelés bonyolultabb, mint egy helyszíni üzemelő példánynál.This can make management and monitoring more difficult than an on-premises deployment. Az alkalmazásoknak elérhetővé kell tenniük a futásidőre vonatkozó adatokat, hogy a rendszergazdák és a kezelők ezek segítségével kezeljék és figyeljék a rendszert, valamint támogathassák a változó üzleti feltételeket és a testreszabást anélkül, hogy le kellene állítani vagy újra üzembe kellene helyezni az alkalmazást.Applications must expose runtime information that administrators and operators can use to manage and monitor the system, as well as supporting changing business requirements and customization without requiring the application to be stopped or redeployed.

Performance and Scalability

Teljesítmény és skálázhatóságPerformance and Scalability

A teljesítmény egy rendszer válaszkészségét mutatja egy művelet adott időtartamon belül való végrehajtásának vonatkozásában, a skálázhatóság pedig a rendszer azon képessége, hogy tudja-e kezelni a terhelés növekedését a teljesítmény romlása nélkül, vagy tudja-e azonnal növelni a rendelkezésre álló erőforrásokat.Performance is an indication of the responsiveness of a system to execute any action within a given time interval, while scalability is ability of a system either to handle increases in load without impact on performance or for the available resources to be readily increased. A felhőalapú alkalmazások általában különböző munkaterheléseknek és aktivitási csúcspontoknak vannak kitéve.Cloud applications typically encounter variable workloads and peaks in activity. Ezeket előre megjósolni, főleg egy több-bérlős forgatókönyvben, szinte lehetetlen.Predicting these, especially in a multitenant scenario, is almost impossible. Az alkalmazásoknak inkább a horizontális felskálázásra kell képesnek lenniük bizonyos korlátok között, hogy megfeleljenek a csúcspont idején az igényeknek, és elvégezzék a horizontálisan leskálázást is, ha csökken az igény.Instead, applications should be able to scale out within limits to meet peaks in demand, and scale in when demand decreases. A skálázhatóság nem csak a számítási példányokat érinti, de más elemeket is, például az adattárolást, az üzenetkezelési infrastruktúrát stb.Scalability concerns not just compute instances, but other elements such as data storage, messaging infrastructure, and more.

Resiliency

RugalmasságResiliency

A rugalmasság a rendszer azon képessége, hogy könnyedén kezelje a hibákat, és gyorsan helyreálljon.Resiliency is the ability of a system to gracefully handle and recover from failures. A felhőalapú üzemeltetés jellegéből (ahol az alkalmazások gyakran több-bérlősek, megosztott platformszolgáltatásokat használnak, versenyeznek az erőforrásokért és a sávszélességért, az interneten keresztül kommunikálnak, és hagyományos hardvereken futnak) következik, hogy nagyobb a valószínűsége, hogy átmeneti és állandóbb hibák is megjelennek.The nature of cloud hosting, where applications are often multitenant, use shared platform services, compete for resources and bandwidth, communicate over the Internet, and run on commodity hardware means there is an increased likelihood that both transient and more permanent faults will arise. A hibák észlelése és a gyors és hatékony helyreállás szükséges a rugalmasság fenntartásához.Detecting failures, and recovering quickly and efficiently, is necessary to maintain resiliency.

Security

BiztonságSecurity

A biztonságosság egy rendszer azon képessége, hogy meg tudja-e akadályozni a tervezett felhasználáson kívüli, rosszindulatú vagy véletlen műveleteket, és meg tudja-e előzni az információk nyilvánosságra kerülését vagy elvesztését.Security is the capability of a system to prevent malicious or accidental actions outside of the designed usage, and to prevent disclosure or loss of information. A felhőalapú alkalmazások elérhetők az interneten a megbízható helyszíni területek határain kívül is, gyakran nyilvánosak, és nem megbízható felhasználókat is kiszolgálhatnak.Cloud applications are exposed on the Internet outside trusted on-premises boundaries, are often open to the public, and may serve untrusted users. Az alkalmazásokat úgy kell megtervezni és üzembe helyezni, hogy védve legyenek a rosszindulatú támadások ellen, csak a jogosult felhasználók férhessenek hozzájuk, és védjék a bizalmas adatokat.Applications must be designed and deployed in a way that protects them from malicious attacks, restricts access to only approved users, and protects sensitive data.

MintakatalógusCatalog of patterns

MintázatPattern ÖsszegzésSummary
AmbassadorAmbassador 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.Create helper services that send network requests on behalf of a consumer service or application.
Anti-Corruption LayerAnti-Corruption Layer Egy előtér- vagy adapterréteget implementálhat egy korszerű alkalmazás és egy korábbi rendszer között.Implement a façade or adapter layer between a modern application and a legacy system.
Aszinkron kérés-válaszAsynchronous Request-Reply 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.Decouple backend processing from a frontend host, where backend processing needs to be asynchronous, but the frontend still needs a clear response.
Backends for FrontendsBackends 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.Create separate backend services to be consumed by specific frontend applications or interfaces.
BulkheadBulkhead Készletekbe választja szét egy alkalmazás elemeit, hogy ha az egyik meghibásodna, a többi tovább üzemeljen.Isolate elements of an application into pools so that if one fails, the others will continue to function.
Cache-AsideCache-Aside Igény szerint tölthet be adatokat egy gyorsítótárba egy adattárolóbólLoad data on demand into a cache from a data store
KoreográfiaChoreography 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.Let each service decide when and how a business operation is processed, instead of depending on a central orchestrator.
Circuit BreakerCircuit 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.Handle faults that might take a variable amount of time to fix when connecting to a remote service or resource.
Claim CheckClaim Check A nagy méretű üzeneteket jogcímellenőrzésre és hasznos adatra oszthatja fel, hogy elkerülje az üzenetbusz túlterhelését.Split a large message into a claim check and a payload to avoid overwhelming a message bus.
Compensating TransactionCompensating Transaction Visszavonhat egy sorozatnyi, együttesen végül konzisztens műveletet meghatározó lépés által végrehajtott munkát.Undo the work performed by a series of steps, which together define an eventually consistent operation.
Competing ConsumersCompeting 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.Enable multiple concurrent consumers to process messages received on the same messaging channel.
Compute Resource ConsolidationCompute Resource Consolidation Egyetlen számítási egységbe konszolidálhat több feladatot vagy műveletetConsolidate multiple tasks or operations into a single computational unit
CQRSCQRS Különböző felületek használatával elkülönítheti az adatolvasó műveleteket az adatfrissítő műveletektől.Segregate operations that read data from operations that update data by using separate interfaces.
Event SourcingEvent 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.Use an append-only store to record the full series of events that describe actions taken on data in a domain.
External Configuration StoreExternal Configuration Store A konfigurációs adatokat áthelyezheti az alkalmazás üzembehelyezési csomagjából egy központi helyre.Move configuration information out of the application deployment package to a centralized location.
Federated IdentityFederated Identity A hitelesítést delegálhatja egy külső identitásszolgáltatónak.Delegate authentication to an external identity provider.
GatekeeperGatekeeper 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.Protect applications and services by using a dedicated host instance that acts as a broker between clients and the application or service, validates and sanitizes requests, and passes requests and data between them.
Gateway AggregationGateway Aggregation Több egyéni kérést összesíthet egyetlen kérésbe egy átjáró segítségével.Use a gateway to aggregate multiple individual requests into a single request.
Gateway OffloadingGateway Offloading A megosztott vagy specializált szolgáltatásműködést kiszervezheti egy átjáró proxyra.Offload shared or specialized service functionality to a gateway proxy.
Gateway RoutingGateway Routing Átirányíthatja a kéréseket több szolgáltatásra egyetlen végpont használatával.Route requests to multiple services using a single endpoint.
Health Endpoint MonitoringHealth 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.Implement functional checks in an application that external tools can access through exposed endpoints at regular intervals.
Index TableIndex Table Indexeket hozhat létre a lekérdezések által gyakran hivatkozott adattárbeli mezőkről.Create indexes over the fields in data stores that are frequently referenced by queries.
Leader ElectionLeader 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.Coordinate the actions performed by a collection of collaborating task instances in a distributed application by electing one instance as the leader that assumes responsibility for managing the other instances.
Materialized ViewMaterialized 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.Generate prepopulated views over the data in one or more data stores when the data isn't ideally formatted for required query operations.
Pipes and FiltersPipes and Filters Egy összetett feldolgozást végrehajtó feladatot lebonthat különálló, újrahasznosítható elemek sorává.Break down a task that performs complex processing into a series of separate elements that can be reused.
Priority QueuePriority 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.Prioritize requests sent to services so that requests with a higher priority are received and processed more quickly than those with a lower priority.
Közzétevő/előfizetőPublisher/Subscriber 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.Enable an application to announce events to multiple interested consumers asynchronously, without coupling the senders to the receivers.
Queue-Based Load LevelingQueue-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.Use a queue that acts as a buffer between a task and a service that it invokes in order to smooth intermittent heavy loads.
RetryRetry 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.Enable an application to handle anticipated, temporary failures when it tries to connect to a service or network resource by transparently retrying an operation that's previously failed.
Scheduler Agent SupervisorScheduler Agent Supervisor Koordinálhat egy műveletkészletet egy elosztott szolgáltatáskészleten és más távoli erőforrásokon.Coordinate a set of actions across a distributed set of services and other remote resources.
ShardingSharding Egy adattárat horizontális partíció- vagy szilánkkészletté oszthat fel.Divide a data store into a set of horizontal partitions or shards.
SidecarSidecar 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.Deploy components of an application into a separate process or container to provide isolation and encapsulation.
Static Content HostingStatic 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.Deploy static content to a cloud-based storage service that can deliver them directly to the client.
StranglerStrangler 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.Incrementally migrate a legacy system by gradually replacing specific pieces of functionality with new applications and services.
SzabályozásThrottling 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.Control the consumption of resources used by an instance of an application, an individual tenant, or an entire service.
Valet KeyValet 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.Use a token or key that provides clients with restricted direct access to a specific resource or service.