Wzorce projektowe oparte na chmurze
Architekci projektują obciążenia, łącząc usługi platformy, funkcje i kod w celu spełnienia wymagań funkcjonalnych i niefunkcjonalnych w obciążeniach. Projektowanie obciążeń wymaga zrozumienia tych wymagań dotyczących obciążeń, a następnie wybrania topologii i podejścia do rozwiązywania problemów przedstawionych przez ograniczenia obciążenia. Wzorce projektowania w chmurze, z którymi można rozwiązać wiele typowych wyzwań.
Projekt systemów jest mocno przesiąknięty wzorami projektowymi. Infrastruktura, kod i systemy rozproszone są zaprojektowane wokół kombinacji wzorców projektowych. Te wzorce projektowe są przydatne do tworzenia niezawodnych, bezpiecznych, zoptymalizowanych pod kątem kosztów, operacyjnego i wydajnych aplikacji w chmurze.
Te wzorce projektowe nie są specyficzne dla żadnej technologii i są istotne dla żadnego systemu rozproszonego, niezależnie od tego, czy są hostowane na platformie Azure, innych platformach w chmurze, a niektóre mogą nawet rozszerzać obciążenia lokalne lub hybrydowe.
Wzorce projektowania w chmurze ułatwiają proces projektowania
Obciążenia w chmurze są podatne na fallacie przetwarzania rozproszonego. Oto kilka przykładów fallacie projektowania chmury:
- Sieć jest niezawodna
- Opóźnienie wynosi zero
- Przepustowość jest nieskończona
- Sieć jest bezpieczna
- Topologia nie zmienia się
- Jest jeden administrator
- Przechowywanie wersji składników jest proste
- Implementacja możliwości obserwacji może być opóźniona
Wzorce projektowe nie eliminują takich pojęć, jak te, ale mogą pomóc zwiększyć świadomość, rekompensaty i środki zaradcze. Każdy wzorzec chmury ma własne kompromisy. Należy zwrócić uwagę bardziej na to, dlaczego wybierasz określony wzorzec niż do sposobu jego implementacji.
Dobrze zaprojektowane obciążenie uwzględnia sposób użycia tych wzorców projektowych w całej branży jako podstawowych bloków konstrukcyjnych do projektowania obciążeń. Każdy filar usługi Azure Well-Architected jest reprezentowany w tych wzorcach projektowych, często ze wzorcem projektowania wprowadzającym kompromisy z celami innych filarów.
Katalog wzorców
Każdy wzorzec w tym wykazie opisuje problem, który rozwiązuje wzorzec, zagadnienia dotyczące stosowania wzorca i przykład na podstawie platformy Microsoft Azure. Niektóre wzorce obejmują przykłady kodu lub fragmenty kodu, które pokazują, jak zaimplementować wzorzec na platformie Azure.
Wzorzec | Podsumowanie | Filary Azure Well-Architected Framework |
---|---|---|
Ambasador | Tworzenie usług pomocnika, które wysyłają żądania sieci w imieniu usługi lub aplikacji klienta. |
|
Warstwa chroniąca przed uszkodzeniem | Implementowanie warstwy fasady lub adaptera między nowoczesną aplikacją a starszym systemem. |
|
Asynchroniczne operacje żądanie-odpowiedź | Oddzielenie przetwarzania zaplecza od hosta frontonu, kiedy przetwarzanie zaplecza musi być asynchroniczne, a fronton nadal potrzebuje jasnej odpowiedzi. |
|
Zaplecza dla frontonów | Utwórz oddzielne usługi zaplecza, które mają być używane przez określone aplikacje lub interfejsy frontonu. |
|
Gródź | Izoluj elementy aplikacji do pul, aby w przypadku awarii, pozostałe nadal działały. |
|
Odkładanie do pamięci podręcznej | Ładowanie danych na żądanie do pamięci podręcznej z magazynu danych. |
|
Choreografia | Pozwól każdej usłudze decydować o czasie i sposobie przetwarzania operacji biznesowych, zamiast polegać na centralnym orkiestratorze. |
|
Wyłącznik | 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. |
|
Sprawdzanie oświadczenia | Podziel duży komunikat na sprawdzanie oświadczenia i ładunek, aby uniknąć przeciążania magistrali komunikatu. |
|
Transakcja wyrównująca | Cofanie pracy wykonywanej przez serię kroków, które razem definiują ostatecznie spójną operację. |
|
Konkurujący odbiorcy | Umożliwianie wielu równoczesnym odbiorcom przetwarzania komunikatów odebranych w tym samym kanale obsługi komunikatów. |
|
Konsolidacja zasobów obliczeniowych | Skonsoliduj wiele zadań lub operacji w jednej jednostce obliczeniowej. |
|
CQRS | Segregowanie operacji, które odczytują dane z operacji aktualizujących dane, przy użyciu osobnych interfejsów. |
|
Jednostki skalowania wdrożenia | Wdróż wiele niezależnych kopii składników aplikacji, w tym magazynów danych. |
|
Konfiguracja obciążenia usługi Edge | Scentralizowanie konfiguracji w celu rozwiązania problemu z konfigurowaniem wielu systemów i urządzeń na hali sklepowej. | |
Określanie źródła zdarzeń | Używanie magazynu typu „tylko dołączanie” do rejestrowania serii zdarzeń, które opisują działania wykonywane na danych w domenie. |
|
Zewnętrzny magazyn konfiguracji | Przenoszenie informacji o konfiguracji z pakietu wdrożeniowego aplikacji do centralnej lokalizacji. |
|
Tożsamość federacyjna | Delegowanie uwierzytelniania do zewnętrznego dostawcy tożsamości. |
|
Strażnik | 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. |
|
Agregacja za pomocą bramy | Używanie bramy w celu agregowania wielu indywidualnych żądań w pojedynczym żądaniu. |
|
Odciążanie bramy | Odciążanie funkcjonalności usług udostępnionych lub specjalnych na serwerze proxy bramy. |
|
Routing bramy | Kierowanie żądań do wielu usług za pomocą pojedynczego punktu końcowego. |
|
geode | 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. |
|
Monitorowanie punktu końcowego kondycji | 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. |
|
Indeksowanie tabeli | Tworzenie indeksów dla pól magazynu danych, do których często odwołują się zapytania. |
|
Wybór lidera | 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. |
|
Zmaterializowany widok | 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. |
|
|
Utwórz pośrednika, aby umożliwić komunikację między systemami obsługi komunikatów, które są w inny sposób niezgodne z powodu protokołu lub formatu. |
|
Potoki i filtry | Podział zadania wykonującego złożone przetwarzanie na serię oddzielnych elementów, które mogą być używane ponownie. |
|
Kolejka priorytetowa | 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. |
|
Wydawca/subskrybent | Umożliwianie aplikacji asynchronicznego informowania o zdarzeniach zainteresowanych odbiorców bez sprzęgania nadawców z odbiorcami. |
|
Kwarantanna | Upewnij się, że zasoby zewnętrzne spełniają uzgodniony przez zespół poziom jakości, zanim zostaną autoryzowane do wykorzystania w procesie pracy. |
|
Wyrównywanie obciążeń przy użyciu kolejki | 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ń. |
|
Wzorzec limitu szybkości | Wzorzec ograniczania, aby pomóc uniknąć lub zminimalizować błędy ograniczania przepustowości związane z tymi limitami ograniczania przepustowości i ułatwić dokładniejsze przewidywanie przepływności. |
|
Ponów próbę | 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. |
|
Saga | Zarządzanie spójnością danych między mikrousługami w scenariuszach transakcji rozproszonych. Saga to sekwencja transakcji, która aktualizuje każdą usługę i publikuje komunikat lub zdarzenie w celu wyzwolenia następnego kroku transakcji. |
|
Agent harmonogramu — nadzorca | Koordynowanie zestawu akcji w rozproszonym zestawie usług i innych zasobach zdalnych. |
|
Sekwencyjny konwój | Przetwarzanie zestawu powiązanych komunikatów w zdefiniowanej kolejności bez blokowania przetwarzania innych grup komunikatów. |
|
Dzielenie na fragmenty | Dzielenie magazynu danych na zestaw poziomych partycji lub fragmentów. |
|
Przyczepka | Wdrażanie składników aplikacji w osobnym procesie lub kontenerze w celu zapewnienia izolacji i hermetyzacji. |
|
Hosting zawartości statycznej | Wdrażanie zawartości statycznej w usłudze magazynu opartej na chmurze, która może dostarczyć ją bezpośrednio do klienta. |
|
Drzewo figowe | Przyrostowa migracja starszej wersji systemu przez stopniowe zastępowanie konkretnych elementów funkcjonalności nowymi aplikacjami i usługami. |
|
Ograniczanie przepływności | Kontrolowanie zużycia zasobów używanych przez wystąpienie aplikacji, pojedynczą dzierżawę lub całą usługę. |
|
Klucz portiera | Używanie tokenu lub klucza, który zapewnia klientom ograniczony bezpośredni dostęp do określonego zasobu lub usługi. |
|
Następny krok
Przejrzyj wzorce projektowe z perspektywy filaru usługi Azure Well-Architected, z którego perspektywy wzorzec stara się optymalizować działanie.
- wzorce projektowe do obsługi filaru niezawodności
- wzorce projektowe do obsługi filaru zabezpieczeń
- wzorce projektowe do obsługi filaru optymalizacji kosztów
- wzorce projektowe do wspierania filaru doskonałości operacyjnej
- wzorce projektowe wspierające filar wydajności operacyjnej