Automatyzacja
W infrastrukturze chmury zdefiniowanej programowo zespoły używają różnych narzędzi i technik do aprowizowania, konfigurowania i zarządzania infrastrukturą. W miarę ewolucji i wzrostu zespołów mogą przejść od korzystania z portali i ręcznych działań do używania kodu i automatyzacji w celu aprowizowania, konfigurowania i zarządzania infrastrukturą i usługami.
Zagadnienia dotyczące automatyzacji platformy
- Zaimplementowanie metodologii Wszystko jako kod (EaC) umożliwia zespołom odblokowywanie kluczowych korzyści, tworzenie silnej kultury programowania i umożliwienie wszystkim wszystkim w każdym zespole sprawdzenia, jak i które zasoby są wdrażane. Usługa EaC pomaga również zespołom platformy wdrażać kluczowe rozwiązania programistyczne, które zwiększają ich elastyczność i wydajność. Zespoły mogą śledzić zmiany i kontrolować, które przechodzą do środowiska produkcyjnego, przechowując kod w repozytoriach i używając systemów kontroli wersji do zarządzania nim.
- Zespoły mogą postępować zgodnie z zasadą 4-oczy i używać programowania równorzędnego lub przeglądu równorzędnego, aby zapewnić, że zmiany kodu nigdy nie zostaną wprowadzone samodzielnie. Programowanie równorzędne i przegląd równorzędny zwiększają jakość kodu, pozwalają zespołom dzielić się odpowiedzialnością za zmiany i zwiększać wiedzę zespołu na temat tego, co zostało uzgodnione i wdrożone. Przegląd kodu to fantastyczny sposób, aby członkowie zespołu nauczyli się nowych technik i metod kodowania i automatyzacji.
- Zespoły powinny używać systemów kontroli wersji, takich jak Git, wraz z repozytoriami git , aby wymusić przegląd równorzędny. Repozytoria Git umożliwiają zespołom definiowanie ważnych gałęzi i ochronę ich za pomocą zasad gałęzi . Zasady umożliwiają wymaganie zmian kodu w tych gałęziach w celu spełnienia określonych kryteriów, takich jak minimalna liczba zatwierdzeń członków zespołu, zanim będą mogły zostać scalone z gałęzią chronioną.
- Zespoły powinny połączyć metodologię EaC i proces przeglądu zmian wraz z procesem ciągłej integracji i ciągłego wdrażania (CI/CD). Każda zmiana kodu powinna automatycznie wyzwalać proces ciągłej integracji, który wykonuje statyczną analizę kodu, walidację i wdrożenia testowe. Ciągła integracja zapewnia, że deweloperzy wcześnie sprawdzają swój kod (często określane jako szybkie wykrywanie błędów lub testowanie z wyprzedzeniem) pod kątem błędów, które mogą powodować przyszłe problemy. W zależności od strategii rozgałęziania używanej przez zespół, zmiany dla każdej ważnej gałęzi powinny wyzwalać wdrażanie w różnorodnych środowiskach . Po zatwierdzeniu i scaleniu zmian w
main
, proces ciągłego wdrażania wdraża je do środowiska produkcyjnego. Ten system zarządzania kodem zapewnia zespołowi jedno wiarygodne źródło informacji o tym, co działa w każdym środowisku. - pl-PL: Aby zapewnić, że platforma jest w pełni samonaprawiająca się i zapewnia samoobsługę dla zespołów odpowiedzialnych za obciążenia, zespół platformy musi pracować nad automatyzacją wszystkich procesów (często nazywanych Extreme Automation), od dostarczania, konfiguracji i zarządzania platformą po udostępnianie subskrypcji w strefie docelowej dla zespołów obciążeń. Ekstremalna automatyzacja pozwala zespołowi platformy skupić się na dostarczaniu wartości, a nie wdrażaniu, konfigurowaniu i zarządzaniu platformą. Ekstremalna automatyzacja tworzy również cykl samodzielnego ulepszania, który zapewnia zespołowi więcej czasu na tworzenie większej automatyzacji.
- Gdy zespoły platformy automatyzują działania operacyjne i zmniejszają interwencję człowieka, powinni skupić się na ważnych zadaniach, które umożliwiają i przyspieszają innowacje zespołu ds. obciążeń na platformie Azure. Aby to osiągnąć, zespół ds. platformy musi iterować przez wiele cykli tworzenia i programowania w miarę umieszczenia narzędzi, skryptów i ulepszeń możliwości platformy.
- Dostępnych jest wiele opcji ułatwiania zespołowi rozpoczęcia wdrażania strefy docelowej platformy Azure. Te opcje zależą od bieżących możliwości twojego zespołu i mogą rosnąć wraz z rozwojem zespołu. W szczególności dla wdrażania platformymożesz wybrać między doświadczeniami opartymi na Portal, Bicep lub Terraform, w zależności od stopnia znajomości infrastruktury jako kodu (IaC) i preferencji narzędzi zespołów.
- Nowe i pojawiające się zespoły platformy, które wciąż poznają IaC i znają korzystanie z portalu do wdrażania zasobów i zarządzania nimi, mogą używać akceleratora strefy docelowej platformy Azure . Ten akcelerator obsługuje zespoły, które obecnie używają podejścia ClickOps. ClickOps to proces aprowizacji, konfigurowania i zarządzania zasobami poprzez klikanie w portale, konsole zarządzania i kreatory. Ten akcelerator umożliwia zespołowi korzystanie z portalu jako początkowego narzędzia wdrażania. Wraz ze wzrostem dojrzałości inżynieryjnej platformy zespół może stopniowo uwzględniać interfejs wiersza polecenia platformy Azure, program PowerShell lub IaC.
- Rozwiązanie AzOps umożliwia zespołom przekształcenie praktyk automatyzacji i zarządzania platformą z podejścia opartego na ClickOps do możliwości DevOps. Twój zespół może przejść z korzystania z osobistych kont do korzystania z zasadami DevOps, opierając się wyłącznie na CI/CD z użyciem AzOps i IaC. AzOps umożliwia zespołowi korzystanie z własnej architektury, używanie architektury wdrożonej przez akcelerator portalu Azure Landing Zone (po początkowym wdrożeniu opartym na portalu, ponieważ integracja z AzOps nie jest częścią portalu Azure Landing Zone), zintegrować się z wdrożeniem brownfield lub używać szablonów niestandardowych (Bicep lub ARM) do tworzenia i operacyjnego wdrażania platformy.
- Zespoły platform z ustalonymi umiejętnościami i możliwościami mogą przyjąć skodyfikowane podejście, które jest zgodne z zasadami i praktykami DevOps. Twój zespół powinien w dużym stopniu opierać się na technologii IaC i nowoczesnych praktykach programistycznych, rezygnując z korzystania z dostępu do platformy Azure na kontach osobistych i przechodząc na uruchamianie wszystkich operacji za pośrednictwem potoku CI/CD. Twój zespół powinien używać akceleratorów opartych na IaC, takich jak ALZ-Bicep lub moduł Terraform dla stref docelowych platformy Azure, aby przyspieszyć to przejście.
- Akceleratory oparte na protokole IaC mają ograniczony zakres zarządzania. Nowe wersje zapewniają więcej możliwości i zwiększoną możliwość zarządzania zasobami. Jeśli korzystasz z akceleratora, zespół powinien rozważyć podejście warstwowe, które zaczyna się od akceleratora, a następnie dodaje warstwę automatyzacji. Warstwa automatyzacji zapewnia możliwości potrzebne zespołowi, aby w pełni obsługiwać zespoły obciążeń za pomocą funkcji platformy, takich jak wdrażanie kontrolera domeny dla starszych aplikacji.
- Gdy zespół platformy przechodzi do podejścia DevOps, musi ustanowić proces obsługi poprawek awaryjnych. Mogą oni użyć Privileged Identity Management (PIM) uprawnień kwalifikujących, aby zażądać dostępu do wykonania poprawek, a później przywrócić to do kodu w celu ograniczenia dryfu konfiguracji lub mogą użyć kodu do szybkiego wprowadzenia poprawki. Twój zespół powinien zawsze rejestrować szybkie poprawki na liście prac, aby mogli przerobić każdą poprawkę w późniejszym momencie i ograniczyć swój dług techniczny. Zbyt dużo długu technicznego prowadzi do przyszłego spowolnienia, ponieważ niektóre kody platformy nie są w pełni sprawdzane i nie spełniają wytycznych i zasad kodowania zespołu.
- Aby dodać automatyzację do platformy, możesz użyć Azure Policies. Rozważ użycie usługi IaC do wdrażania zasad platformy Azure i zarządzania nimi, często nazywanych zasadami jako kodem (PaC). Te zasady umożliwiają automatyzowanie działań, takich jak zbieranie dzienników. Wiele ram PaC implementuje również proces zwolnień, dlatego zaplanuj dla swoich zespołów zadaniowych możliwość występowania o wyjątki od zasad.
- Użyj podejścia "Zarządzanie oparte na zasadach", aby zasygnalizować zespołom zajmującym się obciążeniem, że próbują wdrożyć zasoby, które nie spełniają kontroli zabezpieczeń. Rozważ wdrożenie zasad z efektem
deny
w takich sytuacjach, co umożliwia zespołom ds. obciążeń traktowanie wszystkiego jako kod i uniknięcie dryfu konfiguracji, w którym kod deklaruje jedno, a zasady zmieniają ustawienie w czasie wdrażania. Unikaj używania efektówmodify
, w przypadku gdy zespół zajmujący się obciążeniami wdraża konto magazynowe zsupportOnlyHttpsTraffic = false
zdefiniowanym w kodzie, a politykamodify
zmienia to natrue
w momencie wdrażania, aby zachować zgodność. Prowadzi to do odchylenia kodu od zainstalowanej wersji.
Zalecenie dotyczące projektowania automatyzacji platformy
- Postępuj zgodnie z podejściem Wszystko jako kod, aby uzyskać pełną przejrzystość i kontrolę konfiguracji nad platformą Azure, dokumentacją, wdrażaniem i testowaniem.
- Użyj kontroli wersji, aby zarządzać wszystkimi repozytoriami kodu, w tym:
- Infrastruktura jako kod
- Zasady jako kod
- Konfiguracja w postaci kodu
- Wdrażanie jako kod
- Dokumentacja jako kod
- Zaimplementuj 4-oczy zasady i proces programowania równorzędnego lub przeglądu równorzędnego, aby upewnić się, że wszystkie zmiany kodu są przeglądane przez zespół przed wdrożeniem w środowisku produkcyjnym.
- Zastosuj strategię rozgałęziania dla zespołu i ustaw zasady dla gałęzi, które chcesz chronić. W przypadku zasad gałęzi zespoły muszą używać żądań ściągnięcia w celu scalania zmian.
- Użyj ciągłej integracji i ciągłego dostarczania (CI/CD), aby zautomatyzować testowanie kodu oraz wdrażanie w różnych środowiskach.
- Pracuj, aby zautomatyzować wszystko, takie jak aprowizowanie, konfigurowanie i zarządzanie platformą oraz aprowizowanie subskrypcji stref lądowania dla zespołów zadaniowych.
- Użyj jednego z dostępnych akceleratorów pasujących do możliwości zespołu, aby rozpocząć wdrażanie stref docelowych platformy Azure.
- Zaplanuj użycie podejścia do wdrażania warstwowego, aby dodać możliwości, które nie są objęte akceleratorem, ale są potrzebne do pełnej obsługi zespołów obciążeń.
- Ustanów proces używania kodu do implementowania szybkich poprawek. Zawsze rejestruj szybkie poprawki na liście prac zespołu, aby każda poprawka mogła zostać przerobiona w późniejszym momencie i można ograniczyć dług techniczny.
- Użyj infrastruktury jako kodu, aby wdrożyć azure policies (często określane jako zasady jako kod) i zarządzać nimi
- Wdroż proces zwolnienia z zasad. Zaplanuj działania zespołów obciążeniowych związane z wnioskowaniem o odstępstwa od zasad i bądź gotowy do ich odblokowania w razie potrzeby.
- Użyj opcji "Zarządzanie oparte na zasadach", aby zablokować zespoły zadaniowe, gdy próbują wdrożyć zasoby, które nie spełniają kontroli zabezpieczeń. Zmniejsza to dryf konfiguracji, gdzie kod deklaruje inny stan niż ten, który jest ostatecznie wdrażany.
Przeczytaj więcej
- Przyjmowanie politycznie sterowanych barier zabezpieczających
- Biceps - podstawy
- Średniozaawansowany biceps
- Zaawansowany Biceps
- Użyj Bicep i GitHub Actions do wdrażania zasobów platformy Azure
- Wdrażanie zasobów platformy Azure przy użyciu platformy Bicep i usługi Azure Pipelines
- Kontroluj i zarządzaj swoim środowiskiem Azure poprzez wdrożenie infrastruktury jako kodu