Wzorce projektowe oparte na chmurzeCloud Design Patterns

Te wzorce projektowe są przydatne do tworzenia niezawodnych, skalowalnych, bezpiecznych aplikacji w chmurze.These design patterns are useful for building reliable, scalable, secure applications in the cloud.

Dla każdego wzorca opisano problem rozwiązywany przez ten wzorzec, uwagi dotyczące stosowania wzorca oraz przykład oparty na platformie Microsoft Azure.Each pattern describes the problem that the pattern addresses, considerations for applying the pattern, and an example based on Microsoft Azure. Większość wzorców zawiera przykłady lub fragmenty kodu, które pokazują sposób implementacji wzorca na platformie Azure.Most of the patterns include code samples or snippets that show how to implement the pattern on Azure. Jednak większość z tych wzorców jest odpowiednia dla dowolnego systemu rozproszonego, hostowanego na platformie Azure lub na innych platformach w chmurze.However, most of the patterns are relevant to any distributed system, whether hosted on Azure or on other cloud platforms.

Wyzwania związane z projektowaniem aplikacji w chmurzeChallenges in cloud development

Data management

Zarządzanie danymiData Management

Zarządzanie danymi to kluczowy element aplikacji w chmurze, który ma wpływ na większość atrybutów jakości.Data management is the key element of cloud applications, and influences most of the quality attributes. Dane są zazwyczaj hostowane w różnych lokalizacjach i na wielu serwerach, z powodów takich jak wydajność, skalowalność i dostępność, i może to rodzić szereg wyzwań.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. Na przykład musi zostać zachowana spójność danych i zwykle konieczne będzie synchronizowanie danych w różnych lokalizacjach.For example, data consistency must be maintained, and data will typically need to be synchronized across different locations.

Design and implementation

Projektowanie i implementacjaDesign and Implementation

Dobry projekt obejmuje kilka czynników, takich jak spójność i zgodność projektu i wdrożenia składników, łatwość konserwacji i obsługi w celu uproszczenia administracji i projektowania, a także możliwość ponownego wykorzystania podsystemów i składników w innych aplikacjach i w innych scenariuszach.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. Decyzje podjęte w fazie projektowania i implementacji mają ogromy wpływ na jakość i całkowity koszt posiadania aplikacji i usług hostowanych w chmurze.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 icon

Obsługa komunikatówMessaging

Rozproszony charakter aplikacji w chmurze wymaga infrastruktury obsługi komunikatów, która łączy składniki i usługi, najlepiej w luźno powiązany sposób w celu zapewnienia maksymalnej skalowalności.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. Asynchroniczna obsługa komunikatów jest powszechnie używana i oferuje wiele korzyści, ale także niesie ze sobą wyzwania, takie jak porządkowanie komunikatów, zarządzanie skażonymi komunikatami, idempotentność i inne.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.

Katalog wzorcówCatalog of patterns

WzorcePattern PodsumowanieSummary KategoriaCategory
AmbasadorAmbassador Tworzenie usług pomocnika, które wysyłają żądania sieci w imieniu usługi lub aplikacji klienta.Create helper services that send network requests on behalf of a consumer service or application. Projektowanie i implementacja,Design and Implementation,
Doskonałość operacyjnaOperational Excellence
Warstwa chroniąca przed uszkodzeniemAnti-Corruption Layer Implementowanie warstwy fasady lub adaptera między nowoczesną aplikacją a starszym systemem.Implement a façade or adapter layer between a modern application and a legacy system. Projektowanie i implementacja,Design and Implementation,
Doskonałość operacyjnaOperational Excellence
Asynchroniczne operacje żądanie-odpowiedźAsynchronous Request-Reply Oddzielenie przetwarzania zaplecza od hosta frontonu, kiedy przetwarzanie zaplecza musi być asynchroniczne, a fronton nadal potrzebuje jasnej odpowiedzi.Decouple backend processing from a frontend host, where backend processing needs to be asynchronous, but the frontend still needs a clear response. Obsługa komunikatówMessaging
Zaplecza dla frontonówBackends for Frontends Tworzenie oddzielnych usług zaplecza do użycia przez określone aplikacje lub interfejsy frontonu.Create separate backend services to be consumed by specific frontend applications or interfaces. Projektowanie i implementacjaDesign and Implementation
GródźBulkhead Izolowanie elementów aplikacji w pulach, tak aby w przypadku awarii jednego pozostałe nadal działały.Isolate elements of an application into pools so that if one fails, the others will continue to function. NiezawodnośćReliability
Odkładanie do pamięci podręcznejCache-Aside Ładowanie danych na żądanie do pamięci podręcznej z magazynu danychLoad data on demand into a cache from a data store Zarządzanie danymi,Data Management,
Efektywność wydajnościPerformance Efficiency
ChoreografiaChoreography Pozwól każdej usłudze decydować o czasie i sposobie przetwarzania operacji biznesowych, zamiast polegać na centralnym orkiestratorze.Let each service decide when and how a business operation is processed, instead of depending on a central orchestrator. Obsługa komunikatów,Messaging,
Efektywność wydajnościPerformance Efficiency
WyłącznikCircuit Breaker Obsługa błędów, których naprawienie może potrwać zmienną ilość czasu podczas nawiązywania połączenia ze zdalną usługą lub zasobem.Handle faults that might take a variable amount of time to fix when connecting to a remote service or resource. NiezawodnośćReliability
Sprawdzanie oświadczeniaClaim Check Podziel duży komunikat na sprawdzanie oświadczenia i ładunek, aby uniknąć przeciążania magistrali komunikatu.Split a large message into a claim check and a payload to avoid overwhelming a message bus. Obsługa komunikatówMessaging
Transakcja wyrównującaCompensating Transaction Cofanie pracy wykonywanej przez serię kroków, które razem definiują ostatecznie spójną operację.Undo the work performed by a series of steps, which together define an eventually consistent operation. NiezawodnośćReliability
Konkurujący odbiorcyCompeting Consumers Umożliwianie wielu równoczesnym odbiorcom przetwarzania komunikatów odebranych w tym samym kanale obsługi komunikatów.Enable multiple concurrent consumers to process messages received on the same messaging channel. Obsługa komunikatówMessaging
Konsolidacja zasobów obliczeniowychCompute Resource Consolidation Konsolidacja wielu zadań lub operacji w pojedynczą jednostkę obliczeniowąConsolidate multiple tasks or operations into a single computational unit Projektowanie i implementacjaDesign and Implementation
CQRSCQRS Segregowanie operacji, które odczytują dane z operacji aktualizujących dane, przy użyciu osobnych interfejsów.Segregate operations that read data from operations that update data by using separate interfaces. Zarządzanie danymi,Data Management,
Projektowanie i implementacja,Design and Implementation,
Efektywność wydajnościPerformance Efficiency
Jednostki skalowania wdrożeniaDeployment Stamps Wdróż wiele niezależnych kopii składników aplikacji, w tym magazynów danych.Deploy multiple independent copies of application components, including data stores. Niezawodność,Reliability,
Efektywność wydajnościPerformance Efficiency
Określanie źródła zdarzeńEvent Sourcing Używanie magazynu typu „tylko dołączanie” do rejestrowania serii zdarzeń, które opisują działania wykonywane na danych w domenie.Use an append-only store to record the full series of events that describe actions taken on data in a domain. Zarządzanie danymi,Data Management,
Efektywność wydajnościPerformance Efficiency
Zewnętrzny magazyn konfiguracjiExternal Configuration Store Przenoszenie informacji o konfiguracji z pakietu wdrożeniowego aplikacji do centralnej lokalizacji.Move configuration information out of the application deployment package to a centralized location. Projektowanie i implementacja,Design and Implementation,
Doskonałość operacyjnaOperational Excellence
Tożsamość federacyjnaFederated Identity Delegowanie uwierzytelniania do zewnętrznego dostawcy tożsamości.Delegate authentication to an external identity provider. BezpieczeństwoSecurity
StrażnikGatekeeper Ochrona aplikacji i usług przy użyciu dedykowanego wystąpienia hosta, które działa jako broker między klientami a aplikacją lub usługą, weryfikuje i oczyszcza żądania oraz przekazuje żądania i dane między nimi.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. BezpieczeństwoSecurity
Agregacja za pomocą bramyGateway Aggregation Używanie bramy w celu agregowania wielu indywidualnych żądań w pojedynczym żądaniu.Use a gateway to aggregate multiple individual requests into a single request. Projektowanie i implementacja,Design and Implementation,
Doskonałość operacyjnaOperational Excellence
Odciążanie bramyGateway Offloading Odciążanie funkcjonalności usług udostępnionych lub specjalnych na serwerze proxy bramy.Offload shared or specialized service functionality to a gateway proxy. Projektowanie i implementacja,Design and Implementation,
Doskonałość operacyjnaOperational Excellence
Routing bramyGateway Routing Kierowanie żądań do wielu usług za pomocą pojedynczego punktu końcowego.Route requests to multiple services using a single endpoint. Projektowanie i implementacja,Design and Implementation,
Doskonałość operacyjnaOperational Excellence
Węzły geograficzneGeodes Wdróż usługi zaplecza w zestawie węzłów geograficznych, z których każdy może obsłużyć dowolne żądanie klienta w dowolnym regionie.Deploy backend services into a set of geographical nodes, each of which can service any client request in any region. Niezawodność,Reliability,
Doskonałość operacyjnaOperational Excellence
Monitorowanie punktu końcowego kondycjiHealth Endpoint Monitoring Implementowanie testów funkcjonalności w aplikacji, do których zewnętrzne narzędzia mogą uzyskiwać dostęp przez udostępniane punkty końcowe w regularnych odstępach czasu.Implement functional checks in an application that external tools can access through exposed endpoints at regular intervals. Niezawodność,Reliability,
Doskonałość operacyjnaOperational Excellence
Indeksowanie tabeliIndex Table Tworzenie indeksów dla pól magazynu danych, do których często odwołują się zapytania.Create indexes over the fields in data stores that are frequently referenced by queries. Zarządzanie danymi,Data Management,
Efektywność wydajnościPerformance Efficiency
Wybór lideraLeader Election Koordynowanie akcji wykonywanych przez kolekcję współpracujących wystąpień zadań w aplikacji rozproszonej poprzez wybranie jednego wystąpienia jako wiodącego, które przyjmuje odpowiedzialność za zarządzanie innymi wystąpieniami.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. Projektowanie i implementacja,Design and Implementation,
NiezawodnośćReliability
Zmaterializowany widokMaterialized View Generowanie wstępnie wypełnionych widoków dla danych w co najmniej jednym magazynie danych, gdy dane nie są idealnie sformatowane dla wymaganych operacji zapytania.Generate prepopulated views over the data in one or more data stores when the data isn't ideally formatted for required query operations. Zarządzanie danymi,Data Management,
Doskonałość operacyjnaOperational Excellence
Potoki i filtryPipes and Filters Podział zadania wykonującego złożone przetwarzanie na serię oddzielnych elementów, które mogą być używane ponownie.Break down a task that performs complex processing into a series of separate elements that can be reused. Projektowanie i implementacja,Design and Implementation,
Obsługa komunikatówMessaging
Kolejka priorytetowaPriority Queue Priorytetyzacja żądań wysyłanych do usługi, tak aby żądania o wyższym priorytecie były odbierane i przetwarzane znacznie szybciej niż te o niższym priorytecie.Prioritize requests sent to services so that requests with a higher priority are received and processed more quickly than those with a lower priority. Obsługa komunikatów,Messaging,
Efektywność wydajnościPerformance Efficiency
Wydawca/subskrybentPublisher/Subscriber Umożliwianie aplikacji asynchronicznego informowania o zdarzeniach zainteresowanych odbiorców bez sprzęgania nadawców z odbiorcami.Enable an application to announce events to multiple interested consumers asynchronously, without coupling the senders to the receivers. Obsługa komunikatówMessaging
Wyrównywanie obciążeń przy użyciu kolejkiQueue-Based Load Leveling Używanie kolejki, która pełni rolę bufora między zadaniem i wywoływanym przez nie usługą w celu złagodzenia sporadycznych dużych obciążeń.Use a queue that acts as a buffer between a task and a service that it invokes in order to smooth intermittent heavy loads. Niezawodność,Reliability,
Obsługa komunikatów,Messaging,
Odporność,Resiliency,
Efektywność wydajnościPerformance Efficiency
Ponawianie próbyRetry Umożliwianie aplikacji obsługi przewidywanych, tymczasowych błędów podczas próby połączenia z zasobem usługi lub sieci poprzez niewidoczne ponawianie operacji, która poprzednio zakończyła się niepowodzeniem.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. NiezawodnośćReliability
Agent harmonogramu — nadzorcaScheduler Agent Supervisor Koordynowanie zestawu akcji w rozproszonym zestawie usług i innych zasobach zdalnych.Coordinate a set of actions across a distributed set of services and other remote resources. Obsługa komunikatów,Messaging,
NiezawodnośćReliability
Sekwencyjny konwójSequential Convoy Przetwarzanie zestawu powiązanych komunikatów w zdefiniowanej kolejności bez blokowania przetwarzania innych grup komunikatów.Process a set of related messages in a defined order, without blocking processing of other groups of messages. Obsługa komunikatówMessaging
Dzielenie na fragmentySharding Dzielenie magazynu danych na zestaw poziomych partycji lub fragmentów.Divide a data store into a set of horizontal partitions or shards. Zarządzanie danymi,Data Management,
Efektywność wydajnościPerformance Efficiency
PrzyczepkaSidecar Wdrażanie składników aplikacji w osobnym procesie lub kontenerze w celu zapewnienia izolacji i hermetyzacji.Deploy components of an application into a separate process or container to provide isolation and encapsulation. Projektowanie i implementacja,Design and Implementation,
Doskonałość operacyjnaOperational Excellence
Hosting zawartości statycznejStatic Content Hosting Wdrażanie zawartości statycznej w usłudze magazynu opartej na chmurze, która może dostarczyć ją bezpośrednio do klienta.Deploy static content to a cloud-based storage service that can deliver them directly to the client. Projektowanie i implementacja,Design and Implementation,
Zarządzanie danymi,Data Management,
Efektywność wydajnościPerformance Efficiency
Drzewo figoweStrangler Fig Przyrostowa migracja starszej wersji systemu przez stopniowe zastępowanie konkretnych elementów funkcjonalności nowymi aplikacjami i usługami.Incrementally migrate a legacy system by gradually replacing specific pieces of functionality with new applications and services. Projektowanie i implementacja,Design and Implementation,
Doskonałość operacyjnaOperational Excellence
Ograniczanie przepływnościThrottling Kontrolowanie zużycia zasobów używanych przez wystąpienie aplikacji, pojedynczą dzierżawę lub całą usługę.Control the consumption of resources used by an instance of an application, an individual tenant, or an entire service. Niezawodność,Reliability,
Efektywność wydajnościPerformance Efficiency
Klucz portieraValet Key Używanie tokenu lub klucza, który zapewnia klientom ograniczony bezpośredni dostęp do określonego zasobu lub usługi.Use a token or key that provides clients with restricted direct access to a specific resource or service. Zarządzanie danymi,Data Management,
BezpieczeństwoSecurity