Osiągnięcie i utrzymanie wydajności

Ukończone
Ochrona przed obniżeniem wydajności, gdy system jest w użyciu i w miarę rozwoju.

Programowanie nie jest jednorazowym nakładem pracy. Jest to ciągły proces. Spodziewaj się zmian wydajności w miarę zmiany funkcji. Istnieje wariancja w wzorcach i profilach użytkowników, a nawet zmiany z optymalizacji w innych filarach dobrze zaprojektowanych na platformie Azure. Każda zmiana może przeciążyć zasoby obciążenia.

Sejf ochronić system przed zmianami, aby nie przesuwał się z powrotem na cele wydajności. Integrowanie testowania i monitorowania w procesie programowania. Przetestuj wydajność systemu w środowisku produkcyjnym przy użyciu rzeczywistego obciążenia i zasymuluj to obciążenie przy użyciu testów automatycznych przed rozpoczęciem produkcji. W obu przypadkach należy stosować praktyki monitorowania do celów weryfikacji.

W całym cyklu projektowania przeprowadzaj różne typy testów na różnych etapach. Na początkowych etapach przetestuj weryfikację koncepcji, aby upewnić się, że wyniki wydajności nie są całkowicie nieoczekiwane. W miarę postępu rozwoju przeprowadzaj testy ręczne, niskowydajne w celu ustanowienia testów porównawczych. Na etapie kompilacji rozpocznij opracowywanie zautomatyzowanych rutynowych testów wydajnościowych, które oceniają opóźnienia, poziomy obciążenia, pojemność obciążenia i inne cechy zdefiniowane w planach testów.

Monitorowanie musi być integralną częścią tego wysiłku, zamiast być izolowanym ćwiczeniem. Zobaczysz, jak system i jego zasoby działają w czasie. Następnie można je dostosować, aby zmaksymalizować ich wartość i upewnić się, że nadal spełniają standardy wydajności.

Należy pamiętać, że cele wydajności różnią się w czasie, w odpowiedzi na zmiany. Zaktualizuj model wydajności na podstawie przetestowanych i monitorowanych metryk. Wyraźnie wskazuje wzrost, zmniejszenie lub brak wpływu na wydajność przepływów.

Zawsze bądź gotowy do renegocjacji i resetowania oczekiwań z uczestnikami projektu biznesowego.

Przykładowy scenariusz

Firma Contoso Event Solutions oferuje produkt, którego pracownicy wejścia do zdarzeń mogą używać do skanowania biletów na urządzeniu przenośnym i szybko zezwalać na wejście do miejsca z biletami dla osób autoryzowanych. System jest dostępny zarówno w trybie offline, jak i jako wersja połączona z chmurą dla miejsc zaniepokojonych duplikacją biletów. Tryb offline jest wysoce wydajny, ale w trybie online brakuje celów wydajności. Zespół programistyczny zainwestował niedawno kilka cykli programistycznych, aby nad nim pracować, a teraz wydajność jest znacznie lepsza i osiąga cele. Osoby biorące udział w projekcie biznesowym chcą wkrótce rozszerzyć swoją bazę klientów, aby obsługiwać większe miejsca.

Testowanie wydajności w środowisku projektowym

Sformalizuj testy wydajności jako bramy jakości, które mogą zatwierdzać lub odrzucać podwyższenie poziomu wydania oraz ostateczne wdrożenie w środowisku produkcyjnym.

Te punkty kontrolne zapewniają, że każdy etap wdrażania spełnia wymagane standardy wydajności przed przejściem do następnego. Punkty kontrolne pomagają zapobiegać niezamierzonej regresji wydajności. Jeśli na przykład wydajność jest znacznie niższa od oczekiwań, możesz zablokować wydanie do momentu wprowadzenia ulepszeń.

Wyzwanie firmy Contoso

  • Zespół zainwestował dużo czasu i wysiłku, aby osiągnąć akceptowalną wydajność dla wersji online aplikacji, ale nie mają obecnie żadnego systemu, aby zapobiec regresji.
  • Kolejną funkcją, którą planują dodać, jest możliwość wybrania miejsca, aby wybrać obraz uczestnika wraz ze skanowaniem w celu uzyskania dodatkowej weryfikacji. Istnieje ryzyko, że dodatkowe wyszukiwanie zdjęć i pobieranie spowolni proces.
  • Bez formalnego procesu istnieje ryzyko, że wydajność zarówno wersji online, jak i offline może mieć negatywny wpływ na dodatkowe funkcje i mogą spaść poniżej ich celów.

Stosowanie podejścia i wyników

  • Zespół integruje zautomatyzowane testy wydajnościowe z potokiem kompilacji. Implementując ścisłe kryteria "go/no-go" oparte na wydajności w potoku kompilacji, zespół jest bardziej pewny, że nowa funkcja nie zostanie wydana z regresją wydajności.
  • Zespół był mądry do zaimplementowania tego testowania, ponieważ złapał usterkę w najnowszej wersji kompilacji. Usterka zmusiła aplikację do próby nawiązania połączenia z Internetem w celu pobrania obrazu, gdy skaner został ustawiony na tryb offline, powodując przekroczenie limitu czasu podczas każdego skanowania biletów. Przechwycenie tej usterki za pomocą zautomatyzowanego testowania pozwoliło zespołowi naprawić usterkę przed wydaniem nowej wersji.

Optymalizowanie za pomocą możliwości obserwowania

Skonfiguruj powtarzalny proces monitorowania rzeczywistych transakcji w środowisku produkcyjnym i odchyleń względem celów wydajności. Ponadto użyj syntetycznych transakcji w środowisku produkcyjnym i skonfiguruj alerty monitorowania dotyczące regresji wydajności.

Chcesz uzyskać wgląd w rzeczywistą wydajność systemu pod rzeczywistym obciążeniem, których nie można symulować za pomocą testów. Następnie można aktywnie identyfikować problemy i obszary poprawy, takie jak potencjalne wąskie gardła, niedostatecznie wykorzystywane zasoby i inne problemy.

Wyzwanie firmy Contoso

  • Podczas zdarzenia, w którym korzystają z weryfikacji biletów online, system zaplecza jest intensywnie używany.
  • Istnieje system monitorowania wydajności aplikacji (APM), ale nie został on użyty do monitorowania kondycji transakcji produkcyjnych.

Stosowanie podejścia i wyników

  • Zespół zdecydował się na wdrożenie zaktualizowanych procesów w celu lepszego przechwytywania metryk kondycji:
    • Konfigurują alerty na podstawie percentyli wydajności i wartości odstających wydajności. Żadne alerty nie wskazują, że system działa w akceptowalnych zakresach dla większości skanowań biletów.
    • Po zakończeniu zdarzenia w trybie offline dane telemetryczne dotyczące skanowania biletów są przekazywane wsadowe, a te metryki również przechodzą przez proces w celu wyszukania odchyleń od akceptowalnej wydajności.
    • Zespół implementuje również syntetyczne testowanie transakcji w celu zwiększenia monitorowania wydajności. Ponieważ prawie wszystkie wydarzenia odbywają się w weekendy i wieczorem, zespół używa syntetycznych testów transakcji przez cały tydzień w celu wygenerowania bardziej spójnej linii bazowej wydajności.

Inteligentne obsługa zmian obciążeń

Rozwiązanie problemu erozji wydajności w miarę zwiększania się użycia, zmiany funkcji i gromadzenia się danych w czasie w celu utrzymania wydajności. Zresetuj oczekiwania i ustanów nowe cele, jeśli dostrajanie przynosi tylko krótkoterminowe korzyści.

Stosując to podejście, można zachować stan wydajności, zanim degradacja rozwinie się w problemy, które negatywnie wpływają na środowisko użytkownika poza dopuszczalnym zakresem.

Zmiana celów resetuje model wydajności i nie tracisz czasu na optymalizację systemu, który osiągnął już jego pojemność.

Wyzwanie firmy Contoso

  • Zespół ds. sprzedaży agresywnie dołącza nowe miejsca wydarzeń do systemu. Biznes jest dobry.
  • System monitorowania obciążenia zaczął zauważać, że budżet na wydajność jest coraz bardziej zjedzony w czasie, nawet bez wprowadzenia nowych funkcji.
  • Bez zmiany ta trajektoria może prowadzić do niedopuszczalnej regresji wydajności, co naraża obciążenie na ryzyko wystąpienia awarii w przypadku wystąpienia zdarzenia.

Stosowanie podejścia i wyników

  • Zespół zdaje sobie sprawę, że w miarę dołączania większej liczby klientów mechanizm wyszukiwania danych dla zdarzeń online wykonuje bardzo duże skanowanie danych pod kątem wielu zapytań.
  • Niektóre optymalizacje zapytań pomogły utrzymać zwiększone użycie przed spowodowaniem dodatkowych szkód. W najbliższych miesiącach zespół planuje podzielić różne zdarzenia na różne partycje danych, aby zmniejszyć potrzebę skanowania zapytań. Będzie to obsługiwać dalsze skalowanie poza obciążenie.
  • Zdają sobie również sprawę, że mogą jeszcze bardziej zoptymalizować system, usuwając dane biletów ze starych zdarzeń. Wyszukiwanie starych zdarzeń nie jest czymś, czego powinien wymagać system weryfikacji biletów, dzięki czemu dane można przenieść do magazynu dedykowanego do raportowania i wyszukiwania historycznego.

Sprawdź swoją wiedzę

1.

Prawda czy fałsz: testowanie wydajności podczas produkcji nie jest zalecane.

2.

Które z następujących aspektów obciążenia należy monitorować, aby zapewnić spełnienie celów dotyczących wydajności?

3.

Dlaczego zespół firmy Contoso planuje zmianę struktury bazy danych?