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ę rozwoju i rozwoju zespołów mogą przejść z portali i ręcznych wysiłków związanych z używaniem kodu i automatyzacji w celu aprowizowania, konfigurowania infrastruktury i usług oraz zarządzania nimi.
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, tworząc kod mieszkaniowy w repozytoriach i używając systemów kontroli wersji do zarządzania nimi.
- Zespoły mogą postępować zgodnie z zasadą 4-oczy i używać programowania równorzędnego lub przeglądu równorzędnego, aby upewnić się, ż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, w celu wymuszania przeglądu równorzędnego. 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 dostarczania (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ślany jako szybkie lub testowe w lewo po awarii) 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 w każdej ważnej gałęzi powinny wyzwalać wdrożenie w różnych środowiskach. Po zatwierdzeniu i scaleniu zmian z
main
usługą proces ciągłego wdrażania wdraża te zmiany w środowisku produkcyjnym. Ten system zarządzania kodem zapewnia zespołowi pojedyncze źródło prawdy dla tego, co działa w każdym środowisku. - Aby zapewnić, że platforma jest w pełni samonaprawiająca i zapewnia samoobsługę dla zespołów obciążeń, zespół platformy musi pracować nad automatyzacją wszystkich elementów (często nazywanych ekstremalną automatyzacją) od aprowizowania, konfigurowania i zarządzania platformą do aprowizacji subskrypcji strefy 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.
- Istnieje wiele opcji, które ułatwiają zespołowi rozpoczęcie wdrażania strefy docelowej platformy Azure. Te opcje zależą od bieżących możliwości zespołu i mogą rosnąć wraz z rozwojem zespołu. W szczególności w przypadku wdrażania platformy można wybrać między środowiskami portal, Bicep lub Terraform, w zależności od odpowiednich preferencji IaC i narzędzi usługi Teams.
- Nowe i pojawiające się zespoły platform, które wciąż znają infrastrukturę jako kod (IaC) i są bardziej zaznajomione z wdrażaniem zasobów i zarządzaniem nimi, mogą rozpocząć korzystanie z akceleratora strefy docelowej platformy Azure, który obsługuje zespoły nadal korzystające z podejścia ClickOps . ClickOps to proces aprowizacji, konfigurowania i zarządzania zasobami, klikając portale, konsole zarządzania i kreatory. Ten akcelerator umożliwia zespołowi korzystanie z portalu jako początkowego narzędzia wdrażania, a wraz ze wzrostem dojrzałości inżynieryjnej platformy do dalszego używania interfejsu wiersza polecenia platformy Azure, programu PowerShell lub IaC.
- Rozwiązanie AzOps umożliwia zespołom rozwijanie praktyk automatyzacji platformy i zarządzania dzięki technologii ClickOps opartej na metodyce DevOps. Twój zespół może przejść z korzystania z osobistego dostępu do konta, aby korzystać z zasad i praktyk DevOps opartych tylko na ciągłej integracji/ciągłego wdrażania za pomocą modułów AzOps i IaC. Moduł AzOps umożliwia zespołowi korzystanie z własnej architektury, używanie architektury wdrożonej przez akcelerator portalu strefy docelowej platformy Azure (po początkowym wdrożeniu opartym na portalu, ponieważ integracja z usługą AzOps nie jest częścią środowiska portalu ALZ), integracja z wdrożeniem brownfield lub używanie szablonów niestandardowych (Bicep lub ARM) w celu kompilowania i operacjonalizacji 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 metodyki DevOps. Twój zespół powinien w dużym stopniu opierać się na technologii IaC i nowoczesnych praktykach programistycznych, przechodząc od korzystania z dostępu do platformy Azure na kontach osobistych i w kierunku uruchamiania wszystkich operacji za pośrednictwem potoku ciągłej integracji/ciągłego wdrażania. Twój zespół powinien używać akceleratorów opartych na protokole IaC, takich jak ALZ-Bicep lub moduł Terraform 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ć kwalifikujących się uprawnień usługi Privileged Identity Management (PIM), aby zażądać dostępu do wykonania poprawek, a później przywrócić go do kodu w celu ograniczenia dryfu konfiguracji lub mogą użyć kodu do zaimplementowania szybkiej 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.
- Możesz użyć zasad platformy Azure , aby dodać automatyzację do platformy. 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 platform PaC implementuje również proces wykluczania, dlatego zaplanuj zespoły obciążeń, aby zażądać wykluczeń z zasad.
- Użyj opcji "Zarządzanie oparte na zasadach", aby zasygnalizować zespoły obciążeń podczas próby wdrożenia zasobów, które nie spełniają kontroli zabezpieczeń. Rozważ wdrożenie zasad z
deny
efektem tych sytuacji, co umożliwia zespołom obciążeń traktowanie wszystkiego jako kodu i uniknięcie dryfu konfiguracji, w którym kod deklaruje jedną rzecz i zasady zmieniły ustawienie w czasie wdrażania. Unikaj używaniamodify
efektów, takich jak jeśli zespół obciążeń wdraża konto magazynu zdefiniowanesupportOnlyHttpsTraffic = false
w kodzie, w którymmodify
zasady zmieniajątrue
się w czasie wdrażania, aby zachować zgodność. Prowadzi to do dryfu kodu z wdrożonych danych.
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 procesem testowania.
- Użyj kontroli wersji, aby zarządzać wszystkimi repozytoriami kodu, w tym:
- Infrastruktura jako kod
- Zasady jako kod
- Konfiguracja jako kod
- Wdrażanie jako kod
- Dokumentacja jako kod
- Zaimplementuj zasadę 4-oczy i proces programowania równorzędnego lub przeglądu równorzędnego , aby upewnić się, że wszystkie zmiany kodu są sprawdzane przez zespół przed wdrożeniem w środowisku produkcyjnym.
- Zastosuj strategię rozgałęziania dla zespołu i ustaw zasady gałęzi dla gałęzi, które chcesz chronić. W przypadku zasad gałęzi zespoły muszą używać żądań ściągnięcia do wprowadzania zmian scalania.
- Użyj ciągłej integracji i ciągłego dostarczania (CI/CD), aby zautomatyzować testowanie i wdrażanie kodu w różnych środowiskach.
- Automatyzacja wszystkich elementów, takich jak aprowizowanie, konfigurowanie i zarządzanie platformą oraz aprowizowanie subskrypcji strefy docelowej dla zespołów obciążeń.
- 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żywanie infrastruktury jako kodu do wdrażania zasad platformy Azure i zarządzania nimi (często nazywanych zasadami jako kodem)
- Zaimplementuj proces wykluczania dla zasad. Zaplanuj zespoły obciążeń, aby zażądały wykluczeń z zasad i będą gotowe do odblokowania zespołów w razie potrzeby.
- Użyj opcji "Zarządzanie oparte na zasadach", aby zablokować zespoły obciążeń podczas próby wdrożenia zasobów, które nie spełniają kontroli zabezpieczeń. Pomaga to zmniejszyć dryf konfiguracji, w którym kod deklaruje inny stan niż to, co kończy się wdrażanie.
Dowiedz się więcej
- Wdrażanie barier zabezpieczających opartych na zasadach
- Podstawy Bicep
- Średni Bicep
- Zaawansowany Bicep
- Wdrażanie zasobów platformy Azure przy użyciu bicep i funkcji GitHub Actions
- Wdrażanie zasobów platformy Azure przy użyciu rozwiązań Bicep i Azure Pipelines
- Kontrolowanie środowiska platformy Azure i zarządzanie nim przez wdrożenie infrastruktury jako kodu