Udostępnij za pośrednictwem


Wzorce projektowe oparte na chmurze

Architekci projektują obciążenia, integrując usługi platformy, funkcje i kod w celu spełnienia wymagań funkcjonalnych i niefunkcjonalnych. Aby zaprojektować efektywne obciążenia, musisz zrozumieć te wymagania i wybrać topologie i metodologie, które odpowiadają wyzwaniom związanym z ograniczeniami obciążenia. Wzorce projektowe chmury zapewniają rozwiązania wielu typowych wyzwań.

Projekt systemu w dużym stopniu opiera się na ustalonych wzorcach projektowych. Infrastrukturę, kod i systemy rozproszone można zaprojektować przy użyciu kombinacji tych wzorców. Te wzorce mają kluczowe znaczenie dla tworzenia niezawodnych, wysoce bezpiecznych, zoptymalizowanych pod kątem kosztów, wydajnych operacyjnie i wysoko wydajnych aplikacji w chmurze.

Poniższe wzorce projektowe chmury są niezależne od technologii, co sprawia, że są odpowiednie dla dowolnego systemu rozproszonego. Te wzorce można zastosować na platformie Azure, innych platformach w chmurze, konfiguracjach lokalnych i środowiskach hybrydowych.

Jak wzorce projektowania chmury zwiększają proces projektowania

Obciążenia w chmurze są podatne na błędy przetwarzania rozproszonego, które są typowymi, ale niepoprawnymi założeniami dotyczącymi sposobu działania systemów rozproszonych. Przykłady tych fallacies obejmują:

  • Sieć jest niezawodna.
  • Opóźnienie wynosi zero.
  • Przepustowość jest nieskończona.
  • Sieć jest bezpieczna.
  • Topologia nie zmienia się.
  • Jest jeden administrator.
  • Wersjonowanie składników jest proste.
  • Implementacja możliwości obserwacji może być opóźniona.

Te błędne przekonania mogą spowodować wadliwe projekty obciążeń. Wzorce projektowe nie eliminują tych nieporozumień, ale pomagają podnieść świadomość, zapewnić strategie wynagrodzeń i zapewnić środki zaradcze. Każdy wzorzec projektu chmury ma kompromisy. Skoncentruj się na tym, dlaczego należy wybrać konkretny wzorzec, zamiast tego, jak go zaimplementować.

Zastanów się, jak używać tych standardowych wzorców projektowych jako podstawowych bloków konstrukcyjnych dla dobrze zaprojektowanego projektu obciążenia. Każdy wzorzec projektu w strukturze Azure Well-Architected Framework reprezentuje co najmniej jeden z jego filarów. Niektóre wzorce mogą wprowadzać kompromisy wpływające na cele innych filarów.

Wykaz wzorców

Każdy wzorzec w tym wykazie opisuje problem, który rozwiązuje, zagadnienia dotyczące stosowania wzorca oraz przykład na podstawie usług i narzędzi 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 struktury Well-Architected
Ambasador Tworzenie usług pomocnika, które wysyłają żądania sieci w imieniu usługi lub aplikacji klienta. -Niezawodność

-Bezpieczeństwo
Warstwa antykorupcyjna Implementowanie warstwy fasady lub adaptera między nowoczesną aplikacją a starszym systemem. - Doskonałość operacyjna
Asynchroniczne żądanie-odpowiedź Rozdziel przetwarzanie zaplecza od interfejsu użytkownika. Ten wzorzec jest przydatny, gdy procesy po stronie serwera muszą być asynchroniczne, ale interfejs użytkownika wymaga jasnej i terminowej odpowiedzi. - Wydajność
Zaplecza dla interfejsów użytkownika Utwórz oddzielne usługi zaplecza dla określonych aplikacji frontonu lub interfejsów. -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 poszczególnym usługom decydować o tym, kiedy i w jaki sposób jest przetwarzana operacja biznesowa, a nie w zależności od centralnego koordynatora. - Doskonałość operacyjna

- Wydajność
Wyłącznik obwodu Obsługa błędów, których naprawa może zająć różną ilość czasu, kiedy aplikacja łączy się z usługą zdalną lub zasobem. -Niezawodność

- Wydajność
Sprawdzanie oświadczenia Podziel duży komunikat na kontrolkę dostępu i ładunek, aby uniknąć przeciążania magistrali wiadomości. -Niezawodność

-Bezpieczeństwo

- Optymalizacja kosztów

- Wydajność
Transakcja kompensacyjna Cofnij pracę wykonywaną przez sekwencję kroków, które wspólnie tworzą ostatecznie spójną operację. -Niezawodność
Konkurujący odbiorcy Umożliwianie wielu współbieżnych odbiorców przetwarzania komunikatów odbieranych 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 Oddzielaj operacje odczytujące dane od tych, które aktualizują dane przy użyciu odrębnych interfejsów. - Wydajność
Znaczniki wdrożenia Wdróż wiele niezależnych kopii składników aplikacji, w tym magazynów danych. - Doskonałość operacyjna

- Wydajność
Śledzenie zdarzeń Użyj magazynu z możliwością tylko dopisywania, aby zarejestrować pełną serię zdarzeń opisujących działania wykonywane na danych w domenie. -Niezawodność

- Wydajność
Zewnętrzny magazyn konfiguracji Przenoszenie informacji o konfiguracji z pakietu wdrożeniowego aplikacji do scentralizowanej lokalizacji. - Doskonałość operacyjna
Tożsamość federacyjna Powierzenie uwierzytelniania zewnętrznemu dostawcy tożsamości. -Niezawodność

-Bezpieczeństwo

- Wydajność
Agregacja za pomocą bramy Użyj bramy do agregowania wielu pojedynczych żądań w jedno żądanie. -Niezawodność

-Bezpieczeństwo

- Doskonałość operacyjna

- Wydajność
Odciążanie bramy Odciążenie funkcji współdzielonych lub specjalistycznych usług na serwerze proxy bramy. -Niezawodność

-Bezpieczeństwo

- Optymalizacja kosztów

- Doskonałość operacyjna

- Wydajność
Trasowanie bramy Kierowanie żądań do wielu usług przy użyciu jednego punktu końcowego. -Niezawodność

- Doskonałość operacyjna

- Wydajność
geode Wdrażanie usług zaplecza w węzłach rozproszonych geograficznie. Każdy węzeł może obsługiwać żądania klientów z dowolnego regionu. -Niezawodność

- Wydajność
Monitorowanie stanu punktu końcowego 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ść
Tablica indeksów Utwórz indeksy dla pól w magazynach danych, na które zapytania często się powołują. -Niezawodność

- Wydajność
Wybór lidera Koordynuj akcje w aplikacji rozproszonej, wybierając jedno wystąpienie jako lider. Lider zarządza kolekcją współpracujących instancji zadań. -Niezawodność
Zmaterializowany widok Generowanie wstępnie wypełnionych widoków na danych w co najmniej jednym magazynie danych, gdy dane są słabo sformatowane na potrzeby wymaganych operacji zapytań. - Wydajność
Messaging Bridge Utwórz pośrednika, aby umożliwić komunikację między systemami obsługi komunikatów, które w przeciwnym razie są niezgodne. - 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 Określanie priorytetów żądań wysyłanych do usług w celu szybszego przetwarzania żądań o wyższym prioryfikcie. -Niezawodność

- Wydajność
Wydawca/subskrybent Umożliwia aplikacji ogłaszanie zdarzeń wielu odbiorców asynchronicznie bez sprzęgania nadawców z odbiornikami. -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 obciążenie z nich zużyje. -Bezpieczeństwo

- Doskonałość operacyjna
Wyrównywanie obciążeń przy użyciu kolejki Użyj kolejki, która tworzy bufor między zadaniem a usługą, aby wyrównać okresowe, duże obciążenia. -Niezawodność

- Optymalizacja kosztów

- Wydajność
Ograniczanie szybkości Unikaj lub minimalizuj błędy ograniczania przepustowości, kontrolując zużycie zasobów. -Niezawodność
Spróbuj ponownie Umożliwia aplikacjom obsługę przewidywanych tymczasowych niepowodzeń przez ponowienie próby operacji, które zakończyły się niepowodzeniem. -Niezawodność
Saga Zarządzanie spójnością danych między mikrousługami w scenariuszach transakcji rozproszonych. -Niezawodność
Agent harmonogramu — nadzorca Koordynowanie zestawu akcji między rozproszonymi usługami i zasobami. -Niezawodność

- Wydajność
Sekwencyjny konwój Przetwarzanie zestawu powiązanych komunikatów w zdefiniowanej kolejności bez blokowania innych grup komunikatów. -Niezawodność
Dzielenie na fragmenty Dzielenie magazynu danych na zestaw poziomych partycji lub fragmentów. -Niezawodność

- Optymalizacja kosztów
Wózek boczny Wdróż składniki w osobnym procesie lub kontenerze, aby zapewnić izolację i hermetyzację. -Bezpieczeństwo

- Doskonałość operacyjna
Hosting zawartości statycznej Rozmieść zawartość statyczną do usługi magazynowania opartej na chmurze dla bezpośredniego dostarczania do klienta. - Optymalizacja kosztów
Drzewo figowe Przyrostowe migrowanie starszego systemu przez stopniowe zastępowanie elementów funkcjonalności nowymi aplikacjami i usługami. -Niezawodność

- Optymalizacja kosztów

- Doskonałość operacyjna
Ograniczanie Kontrolowanie zużycia zasobów z aplikacji, dzierżaw lub usług. -Niezawodność

-Bezpieczeństwo

- Optymalizacja kosztów

- Wydajność
Klucz parkingowy Użyj tokenu lub klucza, aby zapewnić klientom ograniczony, bezpośredni dostęp do określonego zasobu lub usługi. -Bezpieczeństwo

- Optymalizacja kosztów

- Wydajność

Wzorce orkiestracji agenta sztucznej inteligencji

Powyższe wzorce projektowe chmury dotyczą typowych wyzwań związanych z systemami rozproszonymi, ale obciążenia sztucznej inteligencji korzystające z wielu agentów autonomicznych wymagają wyspecjalizowanych metod koordynacji. Tradycyjne wzorce, takie jak Scheduler Agent Supervisor lub Choreografia, zapewniają podstawowe pojęcia. Jednak agenci sztucznej inteligencji wprowadzają unikatowe wyzwania, takie jak nieokreślone dane wyjściowe, dynamiczne możliwości rozumowania i potrzebę inteligentnego przekazywania między wyspecjalizowanymi składnikami.

W przypadku obciążeń sztucznej inteligencji, które obejmują wielu agentów autonomicznych, zobacz Wzorce aranżacji agentów sztucznej inteligencji. Te wzorce uzupełniają wzorce projektowe chmury w tym wykazie, spełniając określone wymagania dotyczące koordynacji inteligentnych, autonomicznych składników, które współpracują ze sobą w celu osiągnięcia złożonych wyników.

Dalsze kroki

Przejrzyj wzorce projektowe z perspektywy filaru Well-Architected Framework, który wzorzec ma na celu zoptymalizować.