Zalecenia dotyczące implementowania automatyzacji

Dotyczy tego zalecenia dotyczącego listy kontrolnej Well-Architected Framework Operational Excellence:

OE:09 Automatyzowanie wszystkich zadań, które nie korzystają z szczegółowych informacji i dostosowywania interwencji człowieka, są wysoce proceduralne i mają okres ważności, który daje zwrot z inwestycji automatyzacji. Jeśli to możliwe, wybierz gotowe oprogramowanie do automatyzacji i implementacji niestandardowych. Traktuj całą automatyzację tak samo jak składniki obciążenia i zastosuj filary Well-Architected Framework do ich projektowania i implementacji.

W tym przewodniku opisano zalecenia dotyczące wdrażania automatyzacji w obciążeniu. Możesz zautomatyzować zadania powtarzające się i podatne na błędy ludzkie, aby pomóc zespołom w uzyskaniu wydajności i przestrzeganiu standardów. Automatyzowanie zadań w celu usprawnienia i spójności obciążenia. Automatyzacja umożliwia zespołom ds. operacji i inżynierów wydajniejsze działanie, ponieważ daje im więcej czasu na pracę nad innymi ulepszeniami. Automatyzacja to zaawansowane narzędzie we wszystkich aspektach zarządzania obciążeniami. Przemyślane implementowanie automatyzacji w celu umożliwienia organizacji.

Kluczowe strategie projektowania

Podczas opracowywania obciążenia poszukaj możliwości wykorzystania automatyzacji w celu zmniejszenia obciążenia związanego z zarządzaniem i zminimalizowania błędu ludzkiego. Oceń te możliwości i zastanów się nad wartością, którą przynoszą do organizacji. Aby zmaksymalizować wartość inwestycji w automatyzację, należy określić priorytety zadań, które są proste, proceduralne i mają długi okres ważności. Stosowanie automatyzacji nie jest taktyką typu all-or-nothing. Istnieją strumienie robocze, które mogą mieć operacje wymagające interwencji człowieka, takie jak punkty decyzyjne. Te strumienie robocze mogą nadal korzystać z automatyzacji w celu wykonywania innych zadań.

Zadania docelowe do automatyzacji

Rozważ następujące zalecenia, aby upewnić się, że priorytet zadań, które najbardziej korzystają z automatyzacji:

  • Dążyć do łatwych zwycięstw. Skoncentruj się na zadaniach, które są wysoce proceduralne i podatne na błędy ludzkie. Te zadania są wysoce automatyzowalne. Są one jasno zdefiniowane, są wolne od zmiennych, które dodają złożoność i są wykonywane w ramach normalnych operacji. Z drugiej strony nie należy określać priorytetów automatyzacji zadań, które wymagają pisania złożonych skryptów w celu uwzględnienia zjawisk zmiennych lub zadań, które rzadko występują.

    Przykłady wysoce automatyzowalnych zadań obejmują ponowne uruchamianie serwerów, tworzenie kont i przesyłanie dzienników do magazynu danych. Te zadania mogą wystąpić zgodnie z harmonogramem, jako odpowiedź na alert zdarzenia lub monitorowanie albo zgodnie z potrzebami na podstawie czynników zewnętrznych.

  • Poszukaj sposobów zwiększania możliwości operatorów i zwalniania Twoich MŚP. Być może masz ekspertów w organizacji, którzy polegają na eskalacjach, które mogą być niepotrzebne. Na przykład administratorzy bazy danych mogą rutynowo otrzymywać żądania tworzenia nowych baz danych podczas dołączania nowych klientów do rozwiązania wielodostępne. Jeśli utworzysz samoobsługowy portal dla zespołu pomocy technicznej, możesz umożliwić im bezpieczne tworzenie pustej bazy danych. Możesz też zautomatyzować żądania i kroki wykonywane przez eksperta, tworząc skrypty do uruchomienia.

  • Skoncentruj się na zwrotach z inwestycji. Automatyzacja o wysokiej wartości wymaga minimalnego nakładu pracy związane z zarządzaniem i zwiększa czytelny stopień wydajności. Jeśli zespół operacyjny może zapisywać godzinę każdego dnia, automatyzując wpisy bazy danych, na przykład dajesz im czas na znalezienie innych obszarów poprawy.

Obszary do implementowania automatyzacji

Wdrażanie automatyzacji w całym cyklu życia obciążenia— od programowania do codziennego zarządzania. Skorzystaj z poniższej listy przykładów, aby ułatwić rozważenie szerokiego zakresu cyklu życia obciążenia, które mogą korzystać z automatyzacji. Można zautomatyzować:

  • Definicja potoku, wykonywanie i zarządzanie: użyj narzędzi ciągłej integracji i ciągłego dostarczania (CI/CD), takich jak Usługa Azure DevOps i inne narzędzia DevOps, aby automatycznie zdefiniować potok i sposób jego działania. Te narzędzia mogą ułatwić automatyzowanie zadań ciągłej integracji/ciągłego wdrażania lub innych zadań, takich jak tworzenie raportów.

  • Wdrożenia: użyj narzędzi, takich jak szablony usługi Azure Resource Manager, Bicep, Terraform i Ansible, aby zautomatyzować procesy tworzenia i wydawania obciążeń. Wdrażanie i aktualizowanie infrastruktury przy użyciu tych samych platform automatyzacji przy użyciu podejścia infrastruktury jako kodu (IaC).

  • Testowanie: wiele narzędzi jest dostępnych do automatyzacji procesów testowania. Narzędzia te mogą zmniejszyć znaczne obciążenie zespołu ds. zapewniania jakości i zapewnić, że testy są ustandaryzowane i niezawodne.

  • Skalowanie: użyj funkcji udostępnianych przez platformę i innych narzędzi, takich jak narzędzia orkiestracji, aby automatycznie skalować infrastrukturę po wzroście lub zmniejszeniu obciążenia.

  • Monitorowanie i alerty: użyj narzędzi dostępnych w rozwiązaniu do monitorowania, aby automatycznie zarejestrować nowo wdrożone zasoby i skonfigurować akcje wyzwalane alertami, aby ułatwić korygowanie w przypadku wystąpienia problemów.

  • Samonaprawianie: użyj alertów generowanych przez system monitorowania, aby zautomatyzować akcje i odzyskać nieprawidłowe składniki lub zadania. Aby uzyskać więcej informacji, zobacz Zalecenia dotyczące samonaprawiania i samozachowawczego.

  • Zarządzanie konfiguracją: użyj narzędzi orkiestracji i zasad, aby upewnić się, że wszystkie zasoby działają w tej samej konfiguracji i że wymagania dotyczące zgodności są wymuszane w całym obciążeniu.

  • Inne zadania administracyjne: skrypty służą do automatyzowania powtarzających się zadań, takich jak aktualizowanie rekordów bazy danych lub rekordów DNS.

  • Zatwierdzenia: umożliwia systemom automatyczne podejmowanie decyzji dotyczących zatwierdzania na podstawie wstępnie zdefiniowanych reguł w celu zwiększenia wydajności przepływów pracy z bramami zatwierdzania. Ta metoda zachęca do korzystania ze standardowych formularzy i szablonów, co zwiększa wydajność procesów. Automatyczne zatwierdzanie w środowiskach o wysokim poziomie może być ryzykowne. Ściśle skoncentruj się i przetestuj automatyczne zatwierdzenia, aby upewnić się, że określone kryteria zostały zdefiniowane w celu udzielenia zatwierdzenia.

  • Dołączanie nowego użytkownika i nowego pracownika: możesz zautomatyzować wiele zadań skojarzonych z dołączaniem nowych użytkowników aplikacji lub nowych pracowników, takich jak aktualizacje bazy danych i tworzenie poświadczeń.

  • Monitorowanie i alerty: korzystaj z funkcji automatyzacji zapewnianych przez platformę obserwacji. Automatyczne rejestrowanie nowych urządzeń w celu monitorowania i zgłaszania alertów dotyczących anomalii.

Wybieranie odpowiedniego narzędzia automatyzacji

Opracowywanie własnej automatyzacji jest czasochłonne i może powodować obciążenie związane z zarządzaniem zespołem deweloperów. Muszą utrzymywać wewnętrzne narzędzie automatyzacji, takie jak inne oprogramowanie wewnętrzne. Zaleca się korzystanie z gotowych narzędzi, gdy tylko będą mogły spełniać Twoje potrzeby. Między komercyjnymi, open source i platformami w chmurze dostępnych jest wiele opcji. Prawdopodobnie będziesz używać różnych narzędzi do tworzenia potrzebnej automatyzacji. Polegaj na posiadanej wiedzy specjalistycznej, aby pomóc w podejmowaniu decyzji podczas oceniania narzędzi. Twój zespół może być bardziej zaznajomiony z niektórymi językami programowania i strukturami. Początkowo możesz skupić się na gotowych narzędziach, których mogą używać bez wysokiej krzywej uczenia. Zastanów się nad zadaniami, które planujesz rozwiązać za pomocą automatyzacji, i zainwestuj w narzędzia, które mogą w szczególności rozwiązać te zadania. Nie pozyskuj ogólnie preferowanych narzędzi, a następnie rozważ zadania później.

Należy pamiętać o czynnikach, które mogą komplikować operacje podczas tworzenia automatyzacji, takich jak blokada wersji i nadmierne wykorzystanie wtyczek. Wtyczki, takie jak jenkins lub wtyczki usługi Azure DevOps, to doskonały sposób dodawania funkcji. Należy zastosować wtyczki, gdy przynosi korzyści z celów automatyzacji. Jednak jeśli używasz wielu wtyczek do wykonywania jednego zadania, może to utrudnić aktualizacje automatyzacji i rozwiązywanie problemów. Bądź rozsądny w użyciu wtyczek. Należy również unikać rozwiązań, które mają zależności wersji platformy, ponieważ są one obciążeniem do utrzymania w czasie. Aby zminimalizować ryzyko tych typów problemów, ustandaryzuj wybór narzędzi automatyzacji i wtyczek oraz użyj kontroli źródła dla wszystkich projektów automatyzacji.

Integrowanie automatyzacji z obciążeniem

W przypadku dowolnego narzędzia używanego do tworzenia automatyzacji możesz łatwo uzyskać dostęp do operatorów i zarządzać nimi. Zapewnij czytelne i łatwe w użyciu interfejsy dla zespołu roboczego. Możesz zapewnić dostęp do potoków ciągłej integracji/ciągłego wdrażania, interfejsów API i bibliotek. Podobnie jak w przypadku obciążenia obsługiwanego przez automatyzację, należy całościowo zarządzać automatyzacją. Zabezpieczanie automatyzacji w tym samym stopniu co inne składniki obciążenia. Monitoruj automatyzację i poddaj ją tym samym protokołom testowania co inne składniki obciążenia.

Zagadnienia do rozważenia

  • Czasami korzyści wynikające z automatyzacji przewyższają obciążenie związane z zarządzaniem tworzeniem własnego rozwiązania, jeśli nie są zgodne z wymaganiami rozwiązania gotowe do użycia. W takich przypadkach bądź rozsądny w swoich wysiłkach programistycznych. Wąsko skoncentruj się na opracowywaniu tylko tego, czego potrzebujesz, aby pokryć luki, których nie można rozwiązać za pomocą gotowych rozwiązań, i zminimalizować złożoność, takie jak zależności.

  • Złożona automatyzacja, która wymaga wysokiego stopnia konserwacji, może być trudna dla zespołów operacyjnych do zarządzania i rozwiązywania problemów. Ściśle skupiaj się na wykonywaniu zadań dyskretnych tylko w zautomatyzowanych zadaniach. Spróbuj zminimalizować zależności od innych narzędzi lub składników.

  • Bądź przemyślany przy użyciu procesów ręcznych. Jeśli zdecydujesz się nie zautomatyzować operacji, dokładnie udokumentowaj proces ręczny, tworząc listę kontrolną krok po kroku dla operatorów. Ta praktyka zmniejsza prawdopodobieństwo błędu ludzkiego, na przykład operator błędnie uruchamia niewłaściwy proces. Ta dokumentacja ułatwia również projektowanie automatyzacji dla tego procesu w przyszłości.

  • W przypadku korzystania z hybrydowego podejścia ręcznego i zautomatyzowanego należy zachować szczególną ostrożność. Jeśli skrypt uruchamia większość procesu, ale następnie odchyli się od człowieka na określoną część lub decyzję, ważne jest, aby dać osobie niezbędny kontekst i informacje, aby podjąć świadomą decyzję.

Ułatwienia platformy Azure

Platforma Azure oferuje wiele narzędzi, które ułatwiają automatyzowanie zadań dla obciążenia.

Narzędzia IaC: można używać narzędzi Terraform, Bicep i Azure Resource Manager na potrzeby wdrożeń IaC. W zależności od wymagań i znajomości narzędzi przez zespół można użyć co najmniej jednego z tych narzędzi do wdrażania zasobów i zarządzania nimi.

Azure Functions: Azure Functions to narzędzie bezserwerowe, którego można użyć do automatyzowania zadań przy użyciu preferowanego języka programowania. Usługa Functions udostępnia kompleksowy zestaw wyzwalaczy i powiązań opartych na zdarzeniach, które łączą funkcje z innymi usługami. Nie musisz pisać dodatkowego kodu.

GitHub Actions dla platformy Azure: do automatyzowania procesów ciągłej integracji/ciągłego wdrażania można użyć GitHub Actions dla platformy Azure. GitHub Actions integruje się z platformą Azure, aby uprościć wdrożenia. Możesz tworzyć przepływy pracy, które kompilują i testują każde żądanie ściągnięcia w repozytorium lub wdrażają scalone żądania ściągnięcia w środowisku produkcyjnym.

GitHub Actions wykracza poza usługę DevOps i umożliwia uruchamianie przepływów pracy w przypadku wystąpienia innych zdarzeń w repozytorium. Na przykład możesz uruchomić przepływ pracy, aby automatycznie dodać odpowiednie etykiety, gdy ktoś utworzy nowy problem w repozytorium.

Azure Automation: Programy PowerShell i Python to popularne języki programowania służące do automatyzowania zadań operacyjnych. Te języki umożliwiają wykonywanie operacji, takich jak ponowne uruchamianie usług, transferowanie dzienników między magazynami danych i skalowanie infrastruktury w celu spełnienia wymagań. Możesz wyrazić te operacje w kodzie i uruchomić je na żądanie. Same te języki nie oferują platformy do scentralizowanego zarządzania, kontroli wersji ani historii uruchamiania. Języki nie mają również natywnego mechanizmu reagowania na zdarzenia, takie jak alerty sterowane monitorowaniem. Aby zapewnić te możliwości, potrzebujesz platformy automatyzacji.

Usługa Automation udostępnia platformę hostowaną na platformie Azure do hostowania i uruchamiania programu PowerShell oraz kodu w języku Python w środowiskach chmurowych i lokalnych, zarówno na platformie Azure, jak i poza platformą Azure. Program PowerShell i kod języka Python są przechowywane w elemecie Runbook usługi Automation. Użyj automatyzacji, aby:

  • Wyzwalanie elementów Runbook na żądanie, zgodnie z harmonogramem lub za pomocą elementu webhook.

  • Historia uruchamiania i rejestrowanie.

  • Integrowanie magazynu wpisów tajnych.

  • Integrowanie kontroli źródła.

Menedżer aktualizacji platformy Azure: Update Manager to ujednolicona usługa ułatwiając zarządzanie aktualizacjami maszyn wirtualnych i zarządzanie nimi. Możesz monitorować zgodność aktualizacji systemu Windows i Linux w obciążeniu. Za pomocą programu Update Manager można również tworzyć aktualizacje w czasie rzeczywistym lub planować je w ramach zdefiniowanego okna obsługi. Użyj menedżera aktualizacji, aby:

  • Nadzorowanie zgodności na całej flocie maszyn.
  • Zaplanuj cykliczne aktualizacje
  • Wdrażanie aktualizacji krytycznych

Środowiska wdrażania platformy Azure: środowiska wdrażania umożliwiają zespołom deweloperów szybkie tworzenie spójnej infrastruktury aplikacji przy użyciu szablonów opartych na projekcie. Te szablony minimalizują czas instalacji i maksymalizują bezpieczeństwo, zgodność i efektywność kosztową. Środowisko wdrażania to kolekcja zasobów platformy Azure wdrożonych w wstępnie zdefiniowanych subskrypcjach. Administratorzy infrastruktury programistycznej mogą wymuszać zasady zabezpieczeń przedsiębiorstwa i udostępniać wyselekcjonowany zestaw wstępnie zdefiniowanych szablonów IaC.

Administratorzy infrastruktury programistycznej definiują środowiska wdrażania jako elementy katalogu. Elementy wykazu są hostowane w repozytorium GitHub lub Azure DevOps nazywanym wykazem. Element wykazu składa się z szablonu IaC i pliku manifest.yaml.

Można utworzyć skrypty środowisk wdrażania i programowo zarządzać środowiskami.

Azure Logic Apps i Microsoft Power Automate: podczas tworzenia niestandardowej automatyzacji procesów cyfrowych (DPA) do obsługi zadań obciążeń, takich jak przepływy zatwierdzania lub tworzenie integracji ChatOps, rozważ użycie usługi Logic Apps lub Power Automate. Przepływy pracy można tworzyć na podstawie wbudowanych łączników i szablonów. Usługi Logic Apps i Power Automate są oparte na tej samej technologii bazowej i są odpowiednie dla zadań opartych na wyzwalaczach lub opartych na czasie.

Automatyczne skalowanie: wiele technologii platformy Azure ma wbudowane funkcje automatycznego skalowania. Możesz również programować inne usługi do automatycznego skalowania przy użyciu interfejsów API. Aby uzyskać więcej informacji, zobacz Zalecenia dotyczące projektowania niezawodnej strategii skalowania.

Grupy akcji usługi Azure Monitor: aby automatycznie uruchamiać operacje samonaprawiania po wyzwoleniu alertu, użyj grup akcji usługi Azure Monitor. Te operacje można zdefiniować przy użyciu elementu Runbook, funkcji platformy Azure lub elementu webhook.

Przykład

Aby zapoznać się z przykładem korzystania z usługi Automation w połączeniu z innymi usługami platformy Azure, zobacz Ops automation by using Azure Event Grid (Automatyzacja operacji przy użyciu Azure Event Grid). W tym przykładzie użyto usług Logic Apps i Event Grid do automatyzowania zadań operacyjnych.

Lista kontrolna doskonałości operacyjnej

Zapoznaj się z pełnym zestawem zaleceń.