Zalecenia dotyczące określania priorytetów wydajności przepływów krytycznych

Dotyczy tego zalecenia listy kontrolnej wydajności platformy Azure Well-Architected Framework:

PE:09 Określanie priorytetów wydajności przepływów krytycznych. Alokacja zasobów obciążeń i działania optymalizacji wydajności powinny określać priorytety przepływów, które obsługują najważniejsze procesy biznesowe, użytkowników i operacje.

W tym przewodniku opisano zalecenia dotyczące określania priorytetów wydajności przepływów krytycznych w obciążeniu. Krytyczne przepływy reprezentują kluczowe procesy biznesowe generujące przychód lub generujące operacje o wysokim priorytcie. Podczas określania priorytetów wydajności przepływów krytycznych należy upewnić się, że przepływy, które mają największy wpływ na zasoby, których potrzebują przed przepływami o niższym priorycie. Brak tego priorytetyzacji może mieć nieproporcjonalny negatywny wpływ na priorytety obciążeń i środowisko użytkownika.

Definicje

Okres Definicja
Przepływ W obciążeniu sekwencja akcji wykonujących określoną funkcję. Przepływ obejmuje przenoszenie danych i uruchamianie procesów między składnikami obciążenia.
Przetwarzanie kolejki priorytetu Czynność przetwarzania zadań o wysokim priorytcie przed zadaniami o niskim priorytcie.
Rate limiting (Ograniczanie szybkości) Czynność ograniczania liczby żądań, które mogą uzyskać dostęp do zasobu.
Przepływ systemu Przepływ informacji i procesów w systemie. System automatycznie podąża za tym przepływem, aby umożliwić przepływy użytkownika lub funkcje obciążenia.
Przepływ użytkownika Sekwencja, którą użytkownik wykonuje w celu wykonania zadania.

Kluczowe strategie projektowania

Przepływy krytyczne odnoszą się do kluczowych przepływów użytkownika dla klientów lub systemu i przepływów danych dla operacji, które mają kluczowe znaczenie dla funkcjonalności obciążenia. Te przepływy mogą obejmować akcje, takie jak rejestracje użytkowników, logowania, zakupy produktów, uzyskiwanie dostępu do stron za paywall lub dowolną inną ścieżkę klucza lub proces w ramach obciążenia.

Krytyczne przepływy znacząco wpływają na środowisko użytkownika lub operacje biznesowe. Przepływy krytyczne mają wyższe cele wydajności i umowy dotyczące poziomu usług niż przepływy niekrytyczne. Jeśli zasoby są ograniczone, przepływy niekrytyczne powinny przynieść użycie zasobów do krytycznych przepływów. Przed izolacją i optymalizacją przepływów krytycznych należy zidentyfikować, monitorować i określać priorytety wszystkich przepływów.

Identyfikowanie wszystkich przepływów

Pierwszym krokiem określania priorytetów wydajności przepływów krytycznych jest zidentyfikowanie wszystkich przepływów w ramach obciążenia. Identyfikacja przepływu obejmuje systematyczne mapowanie i zrozumienie wszystkich ścieżek użytkownika i komunikacji składników. Koncentruje się on na zrozumieniu metryk wydajności i potencjalnego wpływu przepływów na wydajność obciążenia.

Dzięki rozdzieleniu obciążenia na dyskretne przepływy można znaleźć wąskie gardła wydajności, nieefektywne wykorzystanie zasobów i możliwości optymalizacji wydajności. Ta wiedza uwidacznia obszary potrzebnej poprawy i jest pierwszym krokiem do identyfikowania przepływów krytycznych. Aby uzyskać więcej informacji, zobacz Identyfikowanie i ocenianie przepływów użytkowników i systemów.

Monitorowanie metryk wydajności przepływu

Po zidentyfikowaniu wszystkich przepływów w obciążeniu należy zebrać metryki wydajności w każdym przepływie i monitorować te metryki. Metryki przepływu zapewniają wgląd w czasy odpowiedzi, współczynniki błędów i przepływność. Celem jest spójne obserwowanie i rejestrowanie metryk związanych z wydajnością w celu dalszego uściślinia zrozumienia wpływu każdego przepływu na wydajność obciążenia. Aby monitorować metryki przepływu, możesz użyć następujących narzędzi do zbierania danych:

  • Narzędzia do analizy i śledzenia: te narzędzia zapewniają wgląd w zachowanie użytkownika i interakcje w aplikacji. Analizując dane użytkownika, można zidentyfikować najbardziej typowe przepływy, wąskie gardła lub potencjalne problemy.

  • Narzędzia do monitorowania wydajności aplikacji (APM): użyj narzędzi APM do monitorowania wydajności aplikacji i śledzenia sposobu uruchamiania przepływów. Te narzędzia zapewniają wgląd w czasy odpowiedzi, błędy i inne metryki wydajności, co umożliwia identyfikowanie przepływów krytycznych i optymalizowanie ich wydajności.

  • Narzędzia do rejestrowania i debugowania: użyj tych narzędzi do przechwytywania i analizowania dzienników oraz debugowania informacji podczas działania aplikacji. Przejrzyj dzienniki i informacje o debugowaniu, aby śledzić sposób działania przepływów i identyfikować problemy lub błędy.

Identyfikowanie przepływów krytycznych

Dzięki dostępnym danym wydajności można rozpocząć klasyfikowanie wszystkich przepływów i identyfikowanie przepływów krytycznych. Identyfikacja przepływów krytycznych obejmuje ocenę wpływu na wydajność i krytycznego znaczenia każdego przepływu. Efektywna priorytetyzacja przepływu zapewnia, że najważniejsze przepływy otrzymają zasoby potrzebne przed mniej krytycznymi przepływami. Aby określić priorytety przepływów w aplikacji, należy wziąć pod uwagę następujące kroki:

  • Identyfikowanie wpływu na działalność biznesową: zacznij od oceny znaczenia każdego przepływu w ramach operacji. Skup się na tym, jak każdy przepływ jest zgodny z celami biznesowymi, jego wpływem na użytkowników i potencjalnymi negatywnymi skutkami niskiej wydajności. Na przykład warstwa bezpłatna usługi może przyciągnąć większej liczby użytkowników, warstwa płatna może być ważniejsza dla celów biznesowych.

    Ponadto należy wziąć pod uwagę wpływ wydajności przepływu między co najmniej jednym procesem biznesowym. Wiele przepływów może obsługiwać pojedynczy proces biznesowy, ale często jeden przepływ ma znaczący wpływ na wydajność tego procesu. Chcesz zidentyfikować przepływy, które mają największy wpływ na wydajność. Z drugiej strony pojedynczy przepływ może stanowić podstawę kilku procesów. W takich przypadkach wydajność tego przepływu bezpośrednio wpływa na skuteczność wszystkich powiązanych procesów i prawdopodobnie jest to przepływ krytyczny.

  • Analizowanie danych wydajności: analizowanie metryk wydajności skojarzonych z każdym przepływem. Poszukaj wzorców, anomalii lub metryk wyróżniających, które mogą zapewnić wgląd w wydajność i znaczenie przepływu. Na przykład przepływy systemowe ze znacznym użyciem są prawdopodobnie ważnymi przepływami.

  • Przypisz ocenę krytycznej: na podstawie wpływu na działalność biznesową i wskaźników wydajności należy określić priorytety przepływów. Użyj ocen krytycznych wartości Wysoki, Średni i Niski. Przepływy o znaczącym wpływie na działalność biznesową lub wysokim zapotrzebowaniu na wydajność powinny otrzymać ocenę "Wysoka" krytyczność. Te przepływy są przepływami krytycznymi. Skup się na przepływach z dużym ruchem użytkowników lub mają bezpośredni wpływ na generowanie przychodów. Poniższa tabela zawiera charakterystykę przepływów krytycznych (wysokich) i niekrytycznych (średni-niski).

Przepływy krytyczne Przepływy niekrytyczne
Wysokie użycie Niskie użycie
Krytyczne dla działania firmy Nie krytyczne dla działania firmy
Kosztowne operacje Małe operacje
Wrażliwe na czas Nie jest uwzględniana czasowo
Produkcja Przedprodukcyjnych
Przetwarzanie w czasie rzeczywistym Przetwarzanie wsadowe
Wrażliwe na opóźnienie Nie jest uwzględniana opóźnienie
Opłacanie użytkownika Użytkownik niepłatny
Warstwa Premium Warstwa Podstawowa
Ważne zadania Zadania nieomyślne
Konta o wysokich przychodach Konta o niskich przychodach

Izolowanie przepływów krytycznych

Proces izolowania krytycznych przepływów polega na zapewnieniu dedykowanych zasobów lub pojemności do obsługi przepływów krytycznych. Chcesz przydzielić zasoby i zwrócić uwagę na te przepływy, które są niezbędne dla optymalnego środowiska użytkownika lub znaczących wyników biznesowych. Celem jest zapewnienie, że krytyczne przepływy otrzymują wystarczającą moc obliczeniową, przepustowość sieci i zasoby, aby efektywnie i efektywnie działać. Izolując krytyczne przepływy, można łatwiej zarządzać zasobami obsługującymi krytyczne przepływy. Poniżej przedstawiono zalecenia dotyczące izolowania przepływów krytycznych:

  • Segmentacja zasobów: utwórz oddzielne zasoby dla przepływów krytycznych, co pozwala im działać niezależnie bez zakłócania działania z innych procesów. Można na przykład odizolować krytyczne przepływy w dedykowanych segmentach sieci lub przy użyciu dedykowanych serwerów w celu obsługi potrzeb związanych z przetwarzaniem tych przepływów. Takie podejście pomaga zminimalizować negatywny wpływ przepływów niekrytycznych na krytyczne przepływy.

  • Segmentacja logiczna: użyj narzędzi wirtualizacji i konteneryzacji, takich jak Docker lub Kubernetes, aby odizolować przepływy na poziomie oprogramowania. Przepływy krytyczne można rozdzielić na maszyny wirtualne. W ten sposób tworzysz izolowane środowisko, zmniejszając zależności i potencjalne zakłócenia innych przepływów.

  • Alokacja pojemności: w przypadku przepływów krytycznych jawnie przydziel zestaw stałych pojemności, takich jak procesor CPU, pamięć i we/wy dysku. Dzięki tej alokacji przepływy krytyczne zawsze mają wystarczającą ilość zasobów do wydajnego działania. Ustawianie limitów przydziału zasobów lub limitów przy użyciu platform orkiestracji. Jawnie przydzielając zasoby do krytycznych przepływów, zapobiegasz rywalizacji o zasoby i ustalasz priorytety ich działania.

Kompromis: Segmentacja zasobów wpływa na koszty. W przypadku dedykowania zasobów do przepływu często zwiększasz koszt i pozostawiasz niektóre zasoby w niewystarczającym stopniu wykorzystywane. Aby uzasadnić ulepszenia wydajności przepływów krytycznych, wzrost wpływu na działalność biznesową musi przewyższać wzrost kosztów.

Optymalizowanie alokacji pojemności

Jeśli nie można odizolować przepływów krytycznych, najlepszą opcją jest nadanie priorytetów krytycznym przepływom w uzyskiwaniu dostępu do dostępnej pojemności. Optymalizacja alokacji pojemności polega na strategicznej dystrybucji dostępnej pojemności do różnych przepływów w oparciu o ich krytyczność. Pojemność obejmuje procesor CPU, pamięć, magazyn i przepustowość sieci. Celem jest zapewnienie, że najbardziej krytyczne przepływy (najwyższy priorytet) otrzymają niezbędną pojemność do efektywnego działania. Aby zdecydować, jak przydzielić pojemność, rozważ następujące strategie:

  • Ocena pojemności zasobów: oceń, ile pojemności zasobów można przydzielić do przepływów. Pojemność może obejmować zasoby, takie jak procesor CPU, pamięć, magazyn i przepustowość sieci. Zapoznaj się z ograniczeniami i ograniczeniami infrastruktury lub środowiska.

  • Analizowanie wymagań dotyczących przepływu: analizowanie wymagań dotyczących zasobów każdego przepływu. Poznaj zasoby, których przepływ potrzebuje do wydajnego działania. Dla każdego przepływu zidentyfikuj wymagania dotyczące zasobów, takie jak użycie procesora CPU, wymagania dotyczące pamięci i przepustowość sieci.

  • Określanie priorytetów alokacji: dopasuj dostępną pojemność zasobów do wymagań dotyczących zasobów przepływów. Przydzielanie zasobów na podstawie priorytetów przepływu, zapewniając, że przepływy o wyższym priorycie otrzymują zasoby niezbędne do spełnienia ich wymagań. Dowiedz się, gdzie znajdują się najostrzejsze ograniczenia, i zoptymalizuj alokacje pojemności tam, gdzie są potrzebne. Na przykład kolejki mogą przetwarzać tylko niektóre komunikaty na minutę, ale niektóre limity magazynu są trudne do osiągnięcia.

  • Użyj ograniczania szybkości: aby zapewnić, że krytyczne przepływy mogą korzystać z zasobów potrzebnych do spełnienia celów wydajności, zastosuj limity szybkości do niekrytycznych przepływów i zadań. Limity szybkości ograniczają liczbę żądań o niższym priorytcie, a użytkownicy mogą ograniczać zasoby. Możesz na przykład ograniczyć liczbę żądań innych niżpriority do interfejsu API. Aby uzyskać więcej informacji, zobacz Wzorzec ograniczania szybkości i Ograniczanie szybkości obsługi HTTP na platformie .NET.

  • Użyj przetwarzania kolejek priorytetowych: Przetwarzanie kolejki priorytetu daje wysoki priorytet określonym żądaniom. Kolejki zwykle mają strukturę pierwszy na początku (FIFO), ale można zaktualizować aplikację, aby przypisać priorytet komunikatom dodawanym do kolejki. Ta funkcja umożliwia określanie priorytetów przepływów krytycznych i użytkowników. Aby uzyskać więcej informacji, zobacz Wzorzec kolejki priorytetowej.

Ryzyko: Może to stanowić wyzwanie, aby zrównoważyć potrzeby przepływów krytycznych z ogólną wydajnością obciążenia. Chociaż należy określić priorytety przepływów krytycznych, nie należy zaniedbywać przepływów niekrytycznych. Ogólna wydajność obciążenia zależy od wszystkich przepływów. Zaniedbane niekrytyczne przepływy mogą powodować problemy wpływające na wszystkich użytkowników. Zbyt duży hałas z przedmiotów bezgłośnych kradnie uwagę od krytycznych elementów. Jednak zbyt mały szum może zaszkodzić całemu obciążeniu. Ilość danych i liczba alertów powinny odzwierciedlać te zrównoważone priorytety.

Ułatwienia dla platformy Azure

Identyfikowanie i monitorowanie przepływów: platforma Azure udostępnia różne rozwiązania ułatwiające monitorowanie wydajności przepływów krytycznych w obciążeniu. Usługa Azure Monitor, dzienniki usługi Azure Monitor i aplikacja systemu Azure Insights to niektóre usługi, które oferują kompleksowe funkcje monitorowania dla kilku typów aplikacji i obciążeń.

Optymalizacja alokacji pojemności: niektóre usługi platformy Azure obsługują segmentację zasobów, segmentację logiczną i techniki alokacji pojemności w celu przydzielenia pojemności i zasobów do przepływów krytycznych. Możesz odizolować krytyczne przepływy za pomocą technik, takich jak tworzenie oddzielnych zasobów, zwiększanie gęstości, używanie wirtualizacji i konteneryzacji oraz jawne przydzielanie zasobów do przepływów krytycznych.

Niektóre usługi platformy Azure, takie jak azure API Management, udostępniają wbudowane zasady ograniczania szybkości. Platforma Azure zawiera szczegółowe wskazówki i przykładową implementację wzorca projektu Ograniczanie szybkości.

Platforma Azure obsługuje przetwarzanie kolejek priorytetowych. Azure Functions udostępnia funkcje sterowane zdarzeniami, które można wyzwalać na różne sposoby, w tym przez nowy komunikat w kolejce lub temacie. Połącz Azure Functions z usługą Azure Queue Storage lub Azure Service Bus, aby przetwarzać komunikaty na podstawie ich priorytetu.

Lista kontrolna dotycząca wydajności

Zapoznaj się z pełnym zestawem zaleceń.