Udostępnij za pośrednictwem


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.
  • Niezawodność
  • Bezpieczeństwo
Warstwa chroniąca przed uszkodzeniem Implementowanie warstwy fasady lub adaptera między nowoczesną aplikacją a starszym systemem.
  • Doskonałość operacyjna
Asynchroniczne operacje żądanie-odpowiedź Oddzielenie przetwarzania zaplecza od hosta frontonu, kiedy przetwarzanie zaplecza musi być asynchroniczne, a fronton nadal potrzebuje jasnej odpowiedzi.
  • Wydajność
Zaplecza dla frontonów Utwórz oddzielne usługi zaplecza, które mają być używane przez określone aplikacje lub interfejsy frontonu.
  • Niezawodność
  • Bezpieczeństwo
  • Wydajność
Gródź Izoluj elementy aplikacji do pul, aby w przypadku awarii, pozostałe nadal działały.
  • Niezawodność
  • Bezpieczeństwo
  • Wydajność
Odkładanie do pamięci podręcznej Ładowanie danych na żądanie do pamięci podręcznej z magazynu danych.
  • Niezawodność
  • Wydajność
Choreografia Pozwól każdej usłudze decydować o czasie i sposobie przetwarzania operacji biznesowych, zamiast polegać na centralnym orkiestratorze.
  • Doskonałość operacyjna
  • Wydajność
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.
  • Niezawodność
  • Wydajność
Sprawdzanie oświadczenia Podziel duży komunikat na sprawdzanie oświadczenia i ładunek, aby uniknąć przeciążania magistrali komunikatu.
  • Niezawodność
  • Bezpieczeństwo
  • Optymalizacja kosztów
  • Wydajność
Transakcja wyrównująca Cofanie pracy wykonywanej przez serię kroków, które razem definiują ostatecznie spójną operację.
  • Niezawodność
Konkurujący odbiorcy Umożliwianie wielu równoczesnym odbiorcom przetwarzania komunikatów odebranych w tym samym kanale obsługi komunikatów.
  • Niezawodność
  • Optymalizacja kosztów
  • Wydajność
Konsolidacja zasobów obliczeniowych Skonsoliduj wiele zadań lub operacji w jednej jednostce obliczeniowej.
  • Optymalizacja kosztów
  • Doskonałość operacyjna
  • Wydajność
CQRS Segregowanie operacji, które odczytują dane z operacji aktualizujących dane, przy użyciu osobnych interfejsów.
  • Wydajność
Jednostki skalowania wdrożenia Wdróż wiele niezależnych kopii składników aplikacji, w tym magazynów danych.
  • Doskonałość operacyjna
  • Wydajność
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.
  • Niezawodność
  • Wydajność
Zewnętrzny magazyn konfiguracji Przenoszenie informacji o konfiguracji z pakietu wdrożeniowego aplikacji do centralnej lokalizacji.
  • Doskonałość operacyjna
Tożsamość federacyjna Delegowanie uwierzytelniania do zewnętrznego dostawcy tożsamości.
  • Niezawodność
  • Bezpieczeństwo
  • Wydajność
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.
  • Bezpieczeństwo
  • Wydajność
Agregacja za pomocą bramy Używanie bramy w celu agregowania wielu indywidualnych żądań w pojedynczym żądaniu.
  • Niezawodność
  • Bezpieczeństwo
  • Doskonałość operacyjna
  • Wydajność
Odciążanie bramy Odciążanie funkcjonalności usług udostępnionych lub specjalnych na serwerze proxy bramy.
  • Niezawodność
  • Bezpieczeństwo
  • Optymalizacja kosztów
  • Doskonałość operacyjna
  • Wydajność
Routing bramy Kierowanie żądań do wielu usług za pomocą pojedynczego punktu końcowego.
  • Niezawodność
  • Doskonałość operacyjna
  • Wydajność
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.
  • Niezawodność
  • Wydajność
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.
  • Niezawodność
  • Doskonałość operacyjna
  • Wydajność
Indeksowanie tabeli Tworzenie indeksów dla pól magazynu danych, do których często odwołują się zapytania.
  • Niezawodność
  • Wydajność
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.
  • Niezawodność
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.
  • Wydajność
Messaging Bridge 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.
  • Optymalizacja kosztów
  • Doskonałość operacyjna
Potoki i filtry Podział zadania wykonującego złożone przetwarzanie na serię oddzielnych elementów, które mogą być używane ponownie.
  • Niezawodność
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.
  • Niezawodność
  • Wydajność
Wydawca/subskrybent Umożliwianie aplikacji asynchronicznego informowania o zdarzeniach zainteresowanych odbiorców bez sprzęgania nadawców z odbiorcami.
  • Niezawodność
  • Bezpieczeństwo
  • Optymalizacja kosztów
  • Doskonałość operacyjna
  • Wydajność
Kwarantanna Upewnij się, że zasoby zewnętrzne spełniają uzgodniony przez zespół poziom jakości, zanim zostaną autoryzowane do wykorzystania w procesie pracy.
  • Bezpieczeństwo
  • Doskonałość operacyjna
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ń.
  • Niezawodność
  • Optymalizacja kosztów
  • Wydajność
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.
  • Niezawodność
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.
  • Niezawodność
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.
  • Niezawodność
Agent harmonogramu — nadzorca Koordynowanie zestawu akcji w rozproszonym zestawie usług i innych zasobach zdalnych.
  • Niezawodność
  • Wydajność
Sekwencyjny konwój Przetwarzanie zestawu powiązanych komunikatów w zdefiniowanej kolejności bez blokowania przetwarzania innych grup komunikatów.
  • Niezawodność
Dzielenie na fragmenty Dzielenie magazynu danych na zestaw poziomych partycji lub fragmentów.
  • Niezawodność
  • Optymalizacja kosztów
Przyczepka Wdrażanie składników aplikacji w osobnym procesie lub kontenerze w celu zapewnienia izolacji i hermetyzacji.
  • Bezpieczeństwo
  • Doskonałość operacyjna
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.
  • Optymalizacja kosztów
Drzewo figowe Przyrostowa migracja starszej wersji systemu przez stopniowe zastępowanie konkretnych elementów funkcjonalności nowymi aplikacjami i usługami.
  • Niezawodność
  • Optymalizacja kosztów
  • Doskonałość operacyjna
Ograniczanie przepływności Kontrolowanie zużycia zasobów używanych przez wystąpienie aplikacji, pojedynczą dzierżawę lub całą usługę.
  • Niezawodność
  • Bezpieczeństwo
  • Optymalizacja kosztów
  • Wydajność
Klucz portiera Używanie tokenu lub klucza, który zapewnia klientom ograniczony bezpośredni dostęp do określonego zasobu lub usługi.
  • Bezpieczeństwo
  • Optymalizacja kosztów
  • Wydajność

Następny krok

Przejrzyj wzorce projektowe z perspektywy filaru usługi Azure Well-Architected, z którego perspektywy wzorzec stara się optymalizować działanie.