Zwiększanie wydajności dzięki optymalizacji

Ukończone
Zwiększ wydajność systemu w ramach zdefiniowanych celów wydajności, aby zwiększyć wartość obciążenia.

Cele ustawione w fazie początkowej są oparte na rozsądnym poziomie środowiska użytkownika, biorąc pod uwagę różne ograniczenia. Należy ponownie ocenić i dostosować cele, aby jeszcze bardziej ulepszyć środowisko. Aby jeszcze bardziej ulepszyć środowisko, wymaga jasnego zrozumienia sposobu, w jaki system jest używany, jak ewoluował i jak platforma lub technologia zmieniła się wraz z upływem czasu. Cykl monitorowania, optymalizowania, testowania i wdrażania jest procesem ciągłym.

Działania optymalizacji wydajności umożliwiają pracę obciążenia z niższym zużyciem zasobów. Mogą one spowodować, że obciążenie jest w stanie nadmiernie aprowizowanej z wolnej pojemności. Użyj tej pojemności, aby zwiększyć niezawodność systemu. Eliminowanie pojemności w celu zwiększenia kosztów systemu. Ewentualnie zmień przeznaczenie pojemności, aby obsługiwać nowe funkcje produktów w istniejących zasobach.

Gdy system zyskuje wydajność, skorzystaj z okazji, aby ustawić i utrzymać nowe cele wydajności.

Przykładowy scenariusz

Zespół inżynierów działu kadr firmy Contoso obsługuje niestandardowe integracje z systemem informacji o zasobach ludzkich organizacji (HRIS). Integracje te obejmują integracje finansowe dla płac, zatrudnianie statystyk dotyczących raportowania prawa pracy przez rząd i innych. Większość integracji to usługa Azure Functions napisana w języku C#, która jest hostowana w klastrze Kubernetes z obsługą usługi Azure Arc w centrum danych organizacji. Większość zadań działa dobrze, ale ze względu na opóźnienie przetwarzania, kilka sprawi, że zespół będzie niespokojny, ponieważ czasami krytyczne dane nie są dostępne, gdy dyrektor kadr go potrzebuje.

Określanie priorytetów optymalizacji wydajności

Przydzielanie dedykowanych cykli na potrzeby optymalizacji wydajności w celu spełnienia niefunkcjonalnych wymagań i optymalizacji w obszarach funkcjonalnych. Cele tej optymalizacji to zasoby, kod, przechowywanie danych, zapytania bazy danych i inne.

Stosując to podejście, można utworzyć kulturę optymalizacji opartej na wydajności. Zespół jest odpowiedzialny za aktywne monitorowanie wzorców wydajności, a także dostosowywanie aplikacji.

Wyzwanie firmy Contoso

  • Zespół jest raczej złomowany, a ich zaległości są długie. Przez większość czasu pracują w "ogniu i zapomnieniu" myślenia podczas pisania i wdrażania integracji; integracje są zapisywane, wdrażane, a następnie zespół przechodzi do następnego zadania.
  • Zespół został często wzywany do problemów z obsługą zdarzeń krytycznych ze względu na to, że kierownictwo wyższego szczebla nie ma dostępu do danych w odpowiednim czasie.
  • Zespół chętnie zdaje sobie sprawę, że należy wprowadzić ulepszenia, ale nie nadaj priorytetowi wprowadzania niezbędnych zmian.

Stosowanie podejścia i wyników

  • Zespół przydziela teraz 20% każdego przebiegu dla długu technicznego i innych działań optymalizacji. Jest to zakup czasu zespołu inżynierów, aby ustalić priorytety i uwzględnić krytyczne obszary i inne obszary, w których wpływ może być najbardziej znaczący.
  • Biorąc to podejście, zespół może poświęcić niezbędny czas, aby rozwiązać problemy z wydajnością powodujące opóźnienia przetwarzania danych.

Poszukaj ulepszeń projektu

Ulepsz architekturę przy użyciu nowych wzorców projektowych i składników, które mogą zwiększyć wydajność, w sposób, który wcześniej nie został uwzględniny z powodu ograniczonego czasu lub budżetu.

Nowy projekt i składniki mogą zoptymalizować system, co prowadzi do lepszego środowiska użytkownika i długoterminowej wydajności kosztów. Można na przykład użyć buforowania lub dodania składnika sieci dostarczania zawartości.

Wyzwanie firmy Contoso

  • Zespół od kilku lat używa usługi Azure Functions i przepływów opartych na wyzwalaczach i nie poświęcał czasu na ocenę alternatyw dla tego podejścia.

Stosowanie podejścia i wyników

  • Zespół analizuje inne sposoby korzystania z usługi Azure Functions i stwierdza, że funkcje trwałe obsługują model fan-out, który może pomóc im zrównać określone zadanie płacowe.
  • Zespół dołącza ten wzorzec do katalogu projektów na potrzeby przyszłego projektowania. Dobrym przypomnieniem było również przyjrzenie się innym sposobom reagowania na nieefektywność wydajności niż tylko optymalizacje kodu i czyszczenie danych.

Użyj narzędzi do monitorowania, aby analizować trendy historyczne i identyfikować przepływy i ścieżki implementacji kodu, które byłyby najbardziej korzystne dla nakładu pracy optymalizacji wydajności. W tym celu zalecamy narzędzia i profileery monitorowania wydajności aplikacji (APM). Ponadto zidentyfikuj ścieżki aktywne operacji i inne potencjalne wąskie gardła w systemie.

Po zidentyfikowaniu powtarzających się problematycznych obszarów zespół może skupić się na tym, gdzie zyski są najwyższe.

Wyzwanie firmy Contoso

  • Zespół instrumentował wszystkie funkcje za pomocą usługi aplikacja systemu Azure Insights.
  • W większości przypadków używają usługi Application Insights do rozwiązywania problemów z przerywaniami i ujścia rejestrowania.
  • Historycznie ich podejście do obszarów docelowych pod kątem ulepszeń opiera się na opiniach pochodzących z wyższego zespołu kierowniczego.

Stosowanie podejścia i wyników

  • Chociaż opinie są ważne, zespół zdaje sobie sprawę, że usługa Application Insights wykonuje dość dobrą robotę wykrywania hotspotów w aplikacjach, które monitoruje.
  • Zespół zaczyna korzystać z tej funkcji i w połączeniu z wiedzą, które przepływy są ważne, przekształca się w cenne narzędzie dla 20% wysiłków zespołu w zakresie ulepszeń technicznych i wydajności.
  • Korzystając z usługi Application Insights, zespół może aktywnie identyfikować ryzykowną integrację i obsługiwać ją, zanim członek zespołu kierowniczego napotkał problem.

Sprawdź swoją wiedzę

1.

Jak zespół firmy Contoso zmienił swój proces programowania, aby rozwiązać bieżące problemy z wydajnością?

2.

Które z poniższych jest dobrą strategią poprawy wydajności obciążenia?

3.

Jakiego typu narzędzie może pomóc w analizie trendów wydajności i zidentyfikowaniu wąskich gardeł wykonywania?