Zalecenia dotyczące optymalizacji zadań operacyjnych

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

PE:10 Optymalizowanie zadań operacyjnych. Monitorowanie i minimalizowanie wpływu cyklu życia tworzenia oprogramowania i innych rutynowych operacji na wydajność obciążenia. Te operacje obejmują skanowanie wirusów, rotacje wpisów tajnych, kopie zapasowe, ponowne indeksowanie baz danych i wdrożenia.

W tym przewodniku opisano zalecenia dotyczące optymalizacji zadań operacyjnych. Optymalizowanie zadań operacyjnych to proces minimalizowania skutków zadań wykonywanych w ramach operacji routingu obciążeń. Działania operacyjne używają tych samych zasobów obliczeniowych co samo obciążenie. Nie można rozważyć skutków zadań operacyjnych, co może spowodować, że obciążenie przegapi cele dotyczące wydajności. Może również negatywnie wpłynąć na wydajność obciążenia dla klientów.

Definicje

Okres Definicja
Wdrożenie niebiesko-zielone Strategia wdrażania, która używa dwóch identycznych środowisk i kontroluje kierunek ruchu do nowych wdrożeń (wdrożenia zielone).
Ponowne kompilowanie indeksu bazy danych Działanie konserwacji, które usuwa i odtwarza indeks.
Reorganizacja indeksu bazy danych Działanie konserwacji, które optymalizuje bieżący indeks bazy danych.
Schemat bazy danych Ogólna struktura bazy danych i jej relacji z innymi danymi.
Miejsce wdrożenia Funkcja Azure App Service, która umożliwia wdrażanie aplikacji na żywo z własnymi nazwami hostów.
Uaktualnienia w miejscu Proces uaktualniania składnika lub aplikacji bez jego zastępowania lub migrowania do nowego środowiska.
Infrastruktura jako kod (IaC) Opisowy model definiowania i wdrażania infrastruktury, w tym sieci, maszyn wirtualnych, modułów równoważenia obciążenia i topologii połączeń.

Kluczowe strategie projektowania

Należy podjąć działania w celu zmniejszenia wpływu cyklu życia tworzenia oprogramowania i innych rutynowych operacji na wydajność obciążenia. Celem jest zapewnienie, że rutynowe operacje, takie jak skanowania wirusów, rotacje wpisów tajnych, kopie zapasowe, optymalizacja indeksu (reorganizacja lub ponowne kompilowanie) i wdrożenia, nie obniżają znacząco wydajności obciążenia.

Konto zadań operacyjnych

Ważne jest, aby wziąć pod uwagę zadania operacyjne podczas ustawiania celów wydajności. Dzięki włączeniu rutynowych, regularnych i ad hoc zadań do celów wydajności, można zapewnić, że obciążenie działa wydajnie. Aby uwzględnić zadania operacyjne w celach wydajności, poniżej przedstawiono kilka kluczowych kwestii, które należy wziąć pod uwagę:

  • Identyfikowanie zadań operacyjnych. Identyfikowanie i uwzględnianie odpowiednich zadań operacyjnych w celach wydajności. Przykłady rutynowych zadań mogą obejmować skanowanie wirusów, reorganizację indeksu bazy danych, odbudowywanie indeksu bazy danych, tworzenie kopii zapasowych dysku lub bazy danych, rotację certyfikatów, stosowanie poprawek systemu operacyjnego, rotację haseł, rotację kluczy interfejsu API, testowanie penetracyjne i przeglądy inspekcji w środowisku produkcyjnym.

  • Ocena celów wydajności. Oceń bieżące cele wydajności i dostosuj je, aby uwzględnić zadania operacyjne specyficzne dla obciążenia. Dzięki temu cele wydajności są zgodne z wymaganiami operacyjnymi obciążenia.

Optymalizowanie wdrożeń

Optymalizacja wdrożeń odnosi się do uściślinia procesu wydawania zasobów i kodu w celu zagwarantowania bezproblemowej wydajności i minimalnych przerw. Obejmuje to planowanie, efektywną dystrybucję zasobów i dokładne testowanie zarówno infrastruktury jako kodu (IaC), jak i kodu aplikacji przed wprowadzeniem ich do środowiska na żywo. Nieadekwatność wdrożenia może prowadzić do zmniejszenia szybkości i wydajności obciążenia, potencjalnych ograniczeń zasobów i naruszonego środowiska użytkownika w ustawieniu operacyjnym. Aby zoptymalizować wdrożenia, rozważ następujące strategie:

Oceń akceptowalny przestój. Jeśli przestój jest akceptowalny, możesz zaimplementować strategie wdrażania, które priorytetują szybkość i wydajność. Należy jednak dokładnie ocenić wpływ przestoju na wymagania biznesowe przed podjęciem tej decyzji. Z drugiej strony, jeśli przestój nie jest akceptowalny, należy zaimplementować strategie wdrażania, które zapewniają ciągłą dostępność obciążenia. Rozważ użycie technik, takich jak wdrożenia blue-green lub wdrożenia kanarkowe, w których stopniowo wdrażasz nowe wersje obciążenia podczas monitorowania problemów. Strategie te pomagają zminimalizować efekt przestoju i zapewnić bezproblemowe środowisko użytkownika.

Wdróż przy bieżącej liczbie wystąpień. Należy również unikać wdrożeń, które powodują natychmiastowe operacje skalowania. Nie należy wdrażać zasobów w systemie na żywo z liczbą wystąpień tak małą, że wymusza natychmiastowe wykonanie operacji skalowania przez system. Na przykład szablon infrastruktury jako kodu (IaC) może nie odpowiadać liczbie wystąpień potrzebnych w czasie wdrażania. Może to mieć liczbę wystąpień równą dwóm, mimo że bieżące wdrożone środowisko jest uruchomione osiem wystąpień. Wdrożenie usunie sześć wystąpień i negatywnie wpłynie na wydajność.

Użyj strategii wdrażania niebieski-zielony. Wdrożenia mogą powodować przerwy w działaniu usług i przestoje. Aby rozwiązać te problemy, wybierz strategię wdrażania, która minimalizuje wpływ na wydajność, na przykład wdrożenie niebiesko-zielone. Te podejścia umożliwiają bezproblemowe przechodzenie między środowiskami i zmniejszają ryzyko zakłóceń w działaniu usługi. W przypadku korzystania z podejścia do wdrażania niebiesko-zielonym masz dwa oddzielne środowiska: niebieskie i zielone środowiska. Jeśli w środowisku zielonym wykryto jakiekolwiek problemy lub spadek wydajności, można łatwo przywrócić stabilne środowisko niebieskie. Ta strategia pomaga zapewnić minimalny przestój i umożliwia utrzymanie wysokiego poziomu wydajności obciążenia. Aby wdrożyć przy użyciu podejścia blue-green, wykonaj następujące ogólne kroki:

  • Wdróż nowe środowisko. Skonfiguruj nowe środowisko (zielone) obok istniejącego środowiska (niebieski) przy użyciu zaktualizowanej wersji aplikacji.

  • Zweryfikuj nowe środowisko. Wdrożenia mogą wprowadzać opóźnienia i zwiększać czasy odpowiedzi. Przed rozpoczęciem migracji jednorazowej rozważ wstępne wystąpienia. Wstępne przygotowanie nowego środowiska polega na symulowaniu ruchu i obciążenia przypominającego środowisko produkcyjne w celu zapewnienia gotowości środowiska do obsługi oczekiwanego obciążenia. Pomaga zminimalizować wpływ na opóźnienia i czasy odpowiedzi. Dokładnie przetestuj i zweryfikuj nowe środowisko, aby upewnić się, że działa prawidłowo i spełnia oczekiwania dotyczące wydajności. Testowanie pomaga rozgrzać pamięci podręczne, ustanowić Połączenia z bazą danych i upewnić się, że środowisko jest gotowe do obsługi oczekiwanego obciążenia.

  • Stopniowo przesuwaj ruch. Po wstępnym i zweryfikowaniu nowego środowiska stopniowo przesuwaj ruch produkcyjny ze starego środowiska (niebieski) do nowego środowiska (zielony). Początkowo należy skierować niewielki procent ruchu do środowiska zielonego i stopniowo zwiększać go po zweryfikowaniu stabilności i oczekiwanej kondycji aplikacji. Można użyć globalnego modułu równoważenia obciążenia lub mechanizmu zarządzania ruchem. Kontrolowany ruch przesuwający umożliwia wczesne identyfikowanie problemów z wydajnością i podejmowanie działań naprawczych przed pełnym przeniesieniem obciążenia do nowego środowiska.

  • Monitorowanie i optymalizowanie. Wdrożenia mogą korzystać z udostępnionych zasobów obliczeniowych. Stale monitoruj wydajność i kondycję nowego środowiska po przesunięciu ruchu. Dokonaj wszelkich niezbędnych optymalizacji lub korekt, aby zapewnić odpowiednią wydajność i środowisko użytkownika.

  • Usuń stare środowisko. Po pomyślnym przeniesieniu całego ruchu do środowiska zielonego usuń niebieskie środowisko z istniejących połączeń. Ten krok pomaga zoptymalizować koszt utrzymania starego środowiska i zapewnia, że nowe środowiska są wolne od dryfu konfiguracji.

  • Powtórz ten proces. W przypadku przyszłych wdrożeń należy odwrócić role środowisk niebieskich i zielonych. Wdróż zmiany w nowym niebieskim środowisku, zweryfikuj je, organizuj przejście ruchu i likwiduj stare zielone środowisko.

Użyj wielu kompilacji. Różne typy kompilacji mogą pomóc zoptymalizować czasy kompilacji i zapewnić jakość wdrożeń. Na przykład możesz mieć kompilacje ciągłej integracji wyzwalające każde zatwierdzenie kodu. Możesz mieć nocne kompilacje, które regularnie uruchamiają testy automatyczne, i wydawać kompilacje, które są używane do wdrażania w środowisku produkcyjnym. Każdy typ kompilacji powinien mieć określony cel, taki jak ciągła integracja, testowanie automatyczne lub wdrożenie produkcyjne. Testowanie i walidacja obciążenia przed wdrożeniem pomaga zidentyfikować i rozwiązać problemy lub usterki na wczesnym etapie procesu programowania.

Rozważ flagi funkcji. Flagi funkcji są używane w programach programistycznych do kontrolowania widoczności i zachowania niektórych funkcji w aplikacji. Za pomocą flag funkcji deweloperzy mogą włączać lub wyłączać określone funkcje bez konieczności ponownego wdrażania aplikacji. Flagi funkcji działają, wprowadzając logikę warunkową w kodzie, która określa, czy funkcja powinna być włączona, czy wyłączona. Ta logika może być oparta na różnych czynnikach, takich jak role użytkownika, preferencje użytkownika lub określone warunki zdefiniowane przez zespół deweloperów. Korzystając z flag funkcji, deweloperzy mogą stopniowo wdrażać nowe funkcje w podzestawie użytkowników lub włączać funkcje dla określonych grup na potrzeby testowania (testowanie kanary).

Optymalizowanie uaktualnień

Uaktualnienie w miejscu to uaktualnienie do istniejącego zasobu lub aplikacji. Uaktualnienia w miejscu mogą tymczasowo spowalniać lub przerywać obciążenie. Ważne jest, aby upewnić się, że uaktualnienia są zgodne z obciążeniem. Przed zastosowaniem uaktualnienia zalecamy przetestowanie go w osobnym środowisku w celu zidentyfikowania potencjalnych problemów. Podaj plan wycofania w przypadku wystąpienia wszelkich problemów podczas procesu uaktualniania. Przed zastosowaniem uaktualnienia należy wykonać pełną kopię zapasową krytycznych danych i konfiguracji. Uważnie monitoruj uaktualniony system po uaktualnieniu, aby upewnić się, że wszystko działa zgodnie z oczekiwaniami. Kopia zapasowa umożliwia przywracanie do dobrego stanu, jeśli jest to konieczne. Należy określić priorytety planowania uaktualnienia poza godzinami szczytu, aby zminimalizować wpływ na wydajność użytkowników i obciążeń. Powiadom użytkowników z wyprzedzeniem o zaplanowanym uaktualnieniu, w tym o oczekiwanym przestoju i wszelkich niezbędnych działaniach, które muszą podjąć.

Kompromis: Oczekiwanie na wykonywanie działań operacyjnych poza godzinami szczytu może mieć wpływ na wydajność operacyjną. Może to być mniej wygodne, aby personel miał odpowiednią pracę zestawu umiejętności poza godzinami szczytu.

Optymalizowanie narzędzi

Podstawowe narzędzia do monitorowania integralności plików, skanowania wirusów, wykrywania nieautoryzowanego dostępu i innych zadań operacyjnych mogą mieć wpływ na wydajność obciążenia. Używają zasobów obliczeniowych i mogą zwiększyć opóźnienie i obciążenie wydajności. Musisz przetestować i zrozumieć wpływ narzędzi na wydajność obciążenia. Na podstawie wyników testu należy dostosować konfiguracje narzędzi, dostosować częstotliwość skanowania i przydzielić zasoby obliczeniowe. W przypadku skanowania antywirusowego można utworzyć odpowiednią listę wykluczeń, aby zminimalizować czas trwania skanowania.

Optymalizowanie operacji bazy danych

Optymalizacja operacji bazy danych odnosi się do procesu udoskonalania i dostrajania zadań bazy danych w celu zapewnienia maksymalnej wydajności i minimalnego wykorzystania zasobów. Te operacje obejmują zadania, takie jak kopie zapasowe, zmiany schematu, dostrajanie wydajności i monitorowanie. Wydajne operacje bazy danych prowadzą do szybszego reagowania na zapytania, mniejszego obciążenia systemu i ogólnego sprawniejszego środowiska użytkownika.

Zmiany schematu obejmują modyfikowanie struktury bazy danych, takie jak dodawanie lub zmienianie tabel, kolumn lub indeksów. Te zmiany mogą wymagać dodatkowego przetwarzania i wykorzystania zasobów podczas procesu wdrażania, co może mieć wpływ na ogólną wydajność obciążenia. Zmiany schematu mogą zakłócać wydajność aktywnych zapytań, indeksów lub transakcji lub powodować niedostępności danych.

Aby zminimalizować te efekty, należy zaplanować i przetestować zmiany schematu w środowisku nieprodukcyjnym. Do implementowania aktualizacji schematu można użyć różnych technik wdrażania. Aby zoptymalizować proces, należy również użyć dostępnych narzędzi do zmiany schematu. Archiwizowanie danych i partycjonowanie może pomóc zmniejszyć skutki zmian schematu.

Optymalizowanie kopii zapasowych

Kopie zapasowe zużywają zasoby obciążenia, takie jak moc obliczeniowa, przepustowość sieci i operacje we/wy dysku. Należy przetestować i wybrać strategię tworzenia kopii zapasowych, która minimalizuje te efekty. Kopie zapasowe należy wykonywać poza godzinami szczytu, kiedy to możliwe. Strategia powinna uwzględniać przyrostowe kopie zapasowe zamiast pełnych kopii zapasowych za każdym razem. Migawki mogą być mniej obciążane zasobami niż kopie zapasowe. Należy rozważyć wbudowane funkcje tworzenia kopii zapasowych i przywracania platformy zamiast tworzenia niestandardowego rozwiązania. Należy przetestować te opcje i użyć kombinacji zapewniającej najlepszą wydajność obciążenia.

Optymalizowanie monitorowania i debugowania

Nadmierne lub słabo zaimplementowane rejestrowanie, telemetria, instrumentacja i rozproszone przechwytywanie i zbieranie śledzenia mogą mieć wpływ na wydajność. Podobnie funkcje wygody, takie jak debugowanie zdalne, mogą również mieć wpływ na wydajność. Należy zmierzyć i poznać ich wpływ na wydajność środowiska. Nie chcesz, aby te procesy obniżały wydajność. Należy skonfigurować lub wyłączyć wszystkie procesy, których efekty wydajności przewyższają ich korzyści.

Ułatwienia dla platformy Azure

Ewidencjonowanie zadań operacyjnych: Usługa Azure DevOps to zestaw narzędzi programistycznych i usług, które umożliwiają zespołom planowanie, opracowywanie, testowanie i wydajne dostarczanie oprogramowania. Obejmuje ona funkcje, takie jak kontrola wersji, ciągła integracja i dostarczanie, zarządzanie projektami i nie tylko.

Platforma Azure zapewnia integrację z usługą, która minimalizuje skutki wielu zadań operacyjnych. Na przykład usługi zintegrowane z usługą Azure Key Vault często obsługują bezproblemową rotację certyfikatów lub rotację wpisów tajnych, które minimalizują wpływ na wydajność.

Optymalizowanie wdrożeń: App Service zapewnia miejsca wdrożenia. Za pomocą miejsc wdrożenia można wdrożyć kod w środowisku nieprodukcyjnym. Zawartość aplikacji i elementy konfiguracji można zamienić między dwoma miejscami wdrożenia. Możesz na przykład przełączyć zawartość aplikacji z miejsca nieprodukcyjnego na miejsce produkcyjne.

Usługi Azure Front Door i Azure Traffic Manager umożliwiają wdrożenie strategii wdrażania niebiesko-zielonej. Niektóre usługi obliczeniowe platformy Azure obsługują również zaawansowane strategie wdrażania, takie jak wdrożenia niebiesko-zielone. Możesz połączyć te usługi ze strategią zmiany ruchu lub ocieplenia wystąpienia, aby ograniczyć wpływ wdrożenia na wydajność.

Optymalizacja operacji bazy danych: usługa Azure SQL Database automatycznie wykonuje pełne kopie zapasowe, różnicowe kopie zapasowe i kopie zapasowe dziennika transakcji. Usługa Azure Cosmos DB automatycznie wykonuje kopie zapasowe danych w regularnych odstępach czasu. Automatyczne kopie zapasowe są wykonywane bez wpływu na wydajność lub dostępność operacji bazy danych. Usługa Azure Cosmos DB przechowuje kopie zapasowe w oddzielnej usłudze magazynu.

Optymalizacja kopii zapasowych: niektóre usługi danych platformy Azure obsługują niski do żadnego wpływu na wydajność odzyskiwania i indeksowania do punktu w czasie. Azure Backup to niezawodne i skalowalne rozwiązanie do tworzenia kopii zapasowych oparte na chmurze, które umożliwia ochronę danych i aplikacji. Udostępnia funkcje, takie jak przyrostowe kopie zapasowe, kompresja i szyfrowanie, aby zminimalizować wpływ na wydajność podczas operacji tworzenia kopii zapasowych. Usługa Azure Site Recovery pomaga chronić aplikacje, replikując je do lokalizacji pomocniczej. Zapewnia ciągłą replikację i automatyczne możliwości trybu failover, aby zminimalizować przestoje i wpływ na wydajność podczas operacji tworzenia kopii zapasowych i odzyskiwania po awarii.

Lista kontrolna dotycząca wydajności

Zapoznaj się z pełnym zestawem zaleceń.