Zalecenia dotyczące implementowania automatyzacji
Dotyczy tego zalecenia 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ą bardzo 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 dobrze zaprojektowanej struktury 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ż zapewnia 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 wzmocnienia możliwości organizacji.
Kluczowe strategie projektowania
Podczas opracowywania obciążenia poszukaj możliwości wykorzystania automatyzacji, aby zmniejszyć obciążenie związane z zarządzaniem i zminimalizować błędy ludzkie. Oceń te możliwości i zastanów się nad wartością, którą przynoszą twojej organizacji. Aby zmaksymalizować wartość inwestycji w automatyzację, określ priorytety zadań, które są proste, proceduralne i mają długi okres ważności. Zastosowanie automatyzacji nie jest taktyką typu wszystko lub nic. 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ń.
Ocenianie zadań w celu zautomatyzowania
Weź pod uwagę następujące zalecenia, aby upewnić się, że priorytet zadań, które korzystają z automatyzacji, są najbardziej korzystne:
Dążyć do łatwych zwycięstw. Skoncentruj się na zadaniach, które są bardzo 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 do uwzględnienia zjawisk zmiennych lub zadań, które rzadko występują.
Przykłady zadań o wysokiej automatyzacji obejmują ponowne uruchamianie serwerów, tworzenie kont i przesyłanie dzienników do magazynu danych. Te zadania mogą występować zgodnie z harmonogramem, jako odpowiedź na zdarzenie lub alert monitorowania albo zgodnie z potrzebami na podstawie czynników zewnętrznych.
Poszukaj sposobów zwiększania możliwości operatorów i zwalniania MŚP. Być może masz ekspertów w organizacji, którzy polegają na eskalacjach, które mogą być niepotrzebne. Na przykład administratorzy baz danych mogą rutynowo otrzymywać żądania tworzenia nowych baz danych podczas dołączania nowych klientów do rozwiązania wielodostępnych. Jeśli utworzysz portal samoobsługowy 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ązanego z zarządzaniem i zwiększa czytelny stopień wydajności. Jeśli możesz zapisać zespół operacyjny co godzinę każdego dnia, automatyzując na przykład wpisy bazy danych, możesz dać 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żesz 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ć automatyzację 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 za pomocą 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. Te narzędzia 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ę w przypadku wzrostu lub spadku obciążenia.
Monitorowanie i alerty: użyj narzędzi dostępnych w rozwiązaniu do monitorowania, aby automatycznie rejestrować nowo wdrożone zasoby i konfigurować akcje wyzwalane przez alerty, aby ułatwić korygowanie w przypadku wystąpienia problemów.
Samonaprawianie: użyj alertów generowanych przez system monitorowania, aby zautomatyzować działania i odzyskać nieprawidłowe składniki lub zadania. Aby uzyskać więcej informacji, zobacz Zalecenia dotyczące samonaprawiania i samonaprawiania.
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: użyj skryptów, aby zautomatyzować powtarzające się zadania, takie 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 są zdefiniowane w celu udzielenia zatwierdzenia.
Dołączanie nowego użytkownika i nowego pracownika: możesz zautomatyzować wiele zadań związanych 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ę do 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. Firma musi utrzymywać wewnętrzne narzędzie do automatyzacji, takie jak inne oprogramowanie wewnętrzne. Zaleca się korzystanie z gotowych narzędzi, gdy tylko będą one spełniać Twoje potrzeby. Między narzędziami udostępnianymi przez komercyjną, open source i platformą w chmurze dostępnych jest wiele opcji. Prawdopodobnie będziesz używać różnych narzędzi do tworzenia potrzebnej automatyzacji. Polegaj na własnej wiedzy, aby ułatwić podejmowanie decyzji podczas oceniania narzędzi. Twój zespół może być bardziej zaznajomiony z niektórymi językami i strukturami programistycznymi. Początkowo można skupić się na gotowych narzędziach, których mogą używać bez wysokiej krzywej uczenia. Odzwierciedlij 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 nabywaj ogólnie preferowanych narzędzi, a następnie zastanów się nad zadaniami.
Należy pamiętać o czynnikach, które mogą komplikować operacje podczas tworzenia automatyzacji, takich jak blokada wersji i nadmierne wykorzystanie wtyczki. Wtyczki, takie jak jenkins lub wtyczki usługi Azure DevOps, to doskonały sposób dodawania funkcji. W przypadku osiągnięcia celów automatyzacji należy wdrożyć wtyczki. 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 korzystaniu z wtyczek. Należy również unikać rozwiązań, które mają zależności wersji struktury, ponieważ są one obciążeniem do utrzymania w czasie. Aby zminimalizować ryzyko tych typów problemów, należy znormalizować wybór narzędzi automatyzacji i wtyczek oraz użyć 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żna łatwo uzyskać dostęp do operatorów i zarządzać nimi. Zapewnij czytelne i łatwe w użyciu interfejsy dla zespołu ds. obciążeń. 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ę, musisz 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.
Kwestie wymagające rozważenia
Czasami wydajność uzyskana z automatyzacji przewyższa obciążenie związane z zarządzaniem tworzeniem własnego rozwiązania, jeśli nie spełnia wymagań. W takich przypadkach należy podjąć działania programistyczne. Wąsko skoncentruj się na opracowywaniu tylko tych, których potrzebujesz, aby pokryć luki, których nie można rozwiązać przy użyciu 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. Zachowaj ścisłe skupienie się na automatycznych zadaniach tylko na wykonywaniu zadań dyskretnych. Spróbuj zminimalizować zależności od innych narzędzi lub składników.
Pomyśl o używaniu 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 sprzeciwia się człowiekowi dla określonej części lub decyzji, ważne jest, aby dać osobie niezbędny kontekst i informacje do podjęcia świadomej decyzji.
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 na potrzeby wdrożeń i zarządzania zasobami.
Azure Functions: Usługa Azure Functions to narzędzie bezserwerowe, którego można użyć do automatyzacji zadań przy użyciu preferowanego języka programowania. Usługa Functions udostępnia kompleksowy zestaw wyzwalaczy opartych na zdarzeniach i powiązań łączących funkcje z innymi usługami. Nie musisz pisać dodatkowego kodu.
Funkcja GitHub Actions dla platformy Azure: za pomocą funkcji GitHub Actions dla platformy Azure można zautomatyzować procesy ciągłej integracji/ciągłego wdrażania. Funkcja 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 do środowiska produkcyjnego.
Funkcja GitHub Actions wykracza poza usługę DevOps i umożliwia uruchamianie przepływów pracy w przypadku wystąpienia innych zdarzeń w repozytorium. Możesz na przykład 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. Użyj tych języków, aby wykonywać operacje, takie jak ponowne uruchamianie usług, przesyłanie 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. Samodzielnie 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 oparte na monitorowaniu. 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 na platformie Azure. Program PowerShell i kod języka Python są przechowywane w elemecie Runbook usługi Automation. Usługa Automation pełni następujące funkcje:
Wyzwalaj elementy Runbook na żądanie, zgodnie z harmonogramem lub za pośrednictwem elementu webhook.
Historia uruchamiania i rejestrowanie.
Integrowanie magazynu wpisów tajnych.
Integracja kontroli źródła.
Azure Update Manager: Update Manager to ujednolicona usługa ułatwiając zarządzanie aktualizacjami maszyn wirtualnych i zarządzanie nimi. Zgodność aktualizacji systemu Windows i Linux można monitorować w całym obciążeniu. Za pomocą menedżera aktualizacji platformy Azure można wprowadzać aktualizacje w czasie rzeczywistym lub planować je w ramach zdefiniowanego okna obsługi. Użyj programu Update Manager, aby:
- Nadzorowanie zgodności z całą flotą 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 wydajność kosztów. Ś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 wykazu. 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żesz 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 na podstawie czasu.
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
Przykład użycia usługi Automation w połączeniu z innymi usługami platformy Azure można znaleźć w temacie Ops automation by using Azure Event Grid (Automatyzacja operacji przy użyciu usługi Azure Event Grid). W tym przykładzie użyto usług Logic Apps i Event Grid do automatyzowania zadań operacyjnych.
Pokrewne łącza
- Automatyzacja
- Azure Update Manager
- Azure Functions
- Grupy akcji usługi Azure Monitor
- Środowiska wdrażania
- Funkcja GitHub Actions dla platformy Azure
- Logic Apps
- Automatyzacja operacji przy użyciu usługi Event Grid
- Power Automate
- Zalecenia dotyczące projektowania strategii testowania niezawodności
- Zalecenia dotyczące projektowania niezawodnej strategii skalowania
- Zalecenia dotyczące samonaprawiania i samonaprawiania
Lista kontrolna doskonałości operacyjnej
Zapoznaj się z pełnym zestawem zaleceń.