Zalecenia w zakresie rozwiązań dotyczących bezpiecznego wdrażania
Dotyczy tego Power Platform zalecenia dotyczącego listy kontrolnej doskonałości operacyjnej Well-Architected:
OE:10 | Jasno zdefiniuj wskazówki dotyczące bezpiecznego wdrażania w tym zakresie. Podkreślaj ideały małych, niedużych, wysokiej jakości metod wydania. Użyj nowoczesnych wzorców wdrażania w celu kontroli ryzyka. Konto na temat procedur wdrożeń i aktualizacji lub poprawek. |
---|
W tym przewodniku opisano zalecenia dotyczące korzystania z bezpiecznych rozwiązań wdrażania. Procesy i procedury bezpiecznego wdrażania określają sposób bezpiecznego wdrażania zmian w obciążeniach. Ich wdrożenie wymaga myślenia o wdrożeniach przez pryzmat zarządzania ryzykiem. Implementując te rozwiązania, można zminimalizować ryzyko błędu ludzkiego we wdrożeniach i ograniczyć skutki problematycznych wdrożeń dla użytkowników.
Kluczowe strategie projektowania
Należy pamiętać o ważnych wskazówek dotyczących implementowania zasad bezpiecznego wdrażania:
- Bezpieczeństwo i spójność: Wszystkie zmiany w obciążeniu produkcyjnym są z natury ryzykowne i muszą być wprowadzane z naciskiem na bezpieczeństwo i spójność.
- Modele kondycji: wdrożenia muszą przejść kontrole kondycji przed rozpoczęciem każdej fazy progresywnego narażenia.
- Wykrywanie problemów: po wykryciu problemów wdrożenie powinno zostać natychmiast wstrzymane, a odzyskiwanie zainicjowane.
W poniższych sekcjach przedstawiono szczegółowe zalecenia dotyczące każdego z tych punktów.
Bezpieczeństwo i spójność
Niezależnie od tego, czy wdrażasz aktualizację kodu aplikacji, infrastruktury jako kodu (IaC), flagi funkcji czy konfiguracji, wprowadzasz ryzyko dla obciążenia. Nie ma wdrożeń o niskim ryzyku w środowisku produkcyjnym. Każde wdrożenie musi być zgodne ze standardowym wzorcem i powinno być zautomatyzowane, aby zapewnić spójność i zminimalizować ryzyko wystąpienia błędu przez ludzi. Najważniejsze jest, aby usługi obsługi obciążenia i potoki wdrażania były wiarygodne, bezpieczne i że mają dobrze zdefiniowane standardy wdrażania. Ocena każdego wdrożenia jako możliwego ryzyka i tematu każdego wdrożenia na jednakowym poziomie zarządzania ryzykiem.
Mimo że pracowicie nad programem należy nadal wdrażać regularne zmiany w obciążeniach. Niepowodzenie wdrażania zwykłych aktualizacji wprowadza inne zależności, takie jak luk w zabezpieczeniach, które należy rozwiązać za pośrednictwem wdrożeń. Dowiedz się więcej w temacie Zalecenia dotyczące projektowania łańcucha dostaw programowania obciążeń.
Często małe wdrożenia są preferowane w przypadku dużych wdrożeń. Małe zmiany są łatwiejsze do rozwiązania w przypadku pojawiania się problemów i częste wdrożenia ułatwiają zespołowi budowanie zaufania w procesie wdrażania. Istotne jest również to, aby informacje na temat procesu produkcyjnego można poznać przez przejrzenie procesów obciążenia, kiedy podczas wdrażania wystąpi anomalia. Można znaleźć słabe strony w projektowaniu infrastruktury lub jej wydaniu. W przypadku wystąpienia problemów podczas wdrożeń upewnij się, że analizy post-mortem bez obwiniania są częścią procesu w celu zebrania wniosków na temat incydentu.
Modele kondycji
Należy opracować niezawodny model kondycji w ramach strategii monitorowania skalowalności i niezawodności. Model kondycji powinien zapewnić szczegółowe wgląd w składniki i ogólny stan prac. Uważnie monitoruj metryki kondycji po wdrożeniu. Jeśli otrzymasz alert o zmianie kondycji podczas wdrażania, natychmiast zbadaj problem i określ następny sposób działania, taki jak wycofanie zmiany. Jeśli użytkownicy nie zgłaszają problemów, a wszystkie wskaźniki kondycji pozostają zielone, wdrażanie powinno być kontynuowane. Pamiętaj, aby uwzględnić metryki użycia w modelu kondycji, aby upewnić się, że brak problemów zgłaszanych przez użytkowników i negatywnych sygnałów dotyczących kondycji nie ukrywa problemu. Więcej informacji można znaleźć w temacie Zalecenia dotyczące przeprowadzania analizy trybu awarii.
Wykrywanie problemu
Jeśli wdrożenie powoduje problem w jednej z grup wdrożenia, musi natychmiast zakończyć się wdrożenie. Sprawdź przyczynę problemu i przyczynę błędu po otrzymaniu alertu. Odzyskiwania po problemach mogą obejmować:
- Wycofywanie przez cofnięcie zmian wprowadzonych we wdrożeniu i przywrócenie do ostatniej znanej konfiguracji roboczej.
- Rozwijanie się przez rozwiązanie problemu podczas wdrażania. Można rozwiązać problemy związane ze średnią rolą, stosując poprawkę lub minimalizując ją.
- Wdrażanie nowej infrastruktury przy użyciu ostatniej znanej konfiguracji roboczej.
Wycofywanie zmian, w szczególności bazy danych, schematu lub innych zmian składników stanowych, może być złożone. Wytyczne dotyczące bezpiecznych praktyk wdrażania powinny zawierać jasne instrukcje dotyczące sposobu postępowania ze zmianami danych zgodnie z projektem majątku danych dla obciążenia. Podobnie należy ostrożnie postępować z wycofywaniem, aby upewnić się, że bezpieczne procesy wdrażania nie są zaniedbywane i że poprawka lub inne działania minimalizujące są wykonywane bezpiecznie.
Zalecenia ogólne
Implementacja implementacji artefaktów tworzenia w celu zapewnienia, że w razie potrzeby będzie można wycofać się i wycofać.
Użycie przepływu wydań lub odgałęzień opartych na odgałęzieniach, które wymuszają ścisłe zsynchronizowanie współpracy w zespole projektowym zamiast struktury przepływu oprogramowania lub odgałęzień opartych na środowisku.
Zautomatyzuj w jak największym stopniu swoje praktyki bezpiecznego wdrażania. Dowiedz się więcej w temacie Zalecenia dotyczące wdrażania automatyzacji.
Korzystanie z funkcji integracji ciągłych (CI) w celu regularnego integrowania zmian kodu z repozytoriami. Metody postępowania w zakresie integracji mogą pomóc w identyfikowaniu konfliktów integracji i zmniejszaniu prawdopodobieństwa dużych, ryzykownych scaleń. Dowiedz się więcej w temacie Zalecenia dotyczące ciągłej integracji.
Użyj funkcji do wybiórczo włączania i wyłączania nowych funkcji i zmian w środowisku produkcyjnym. Funkcje mogą pomóc w kontrolowaniu narażenia nowego kodu oraz szybkiego wycofywania wdrożenia w razie pojawiającego się problemów.
Wdrożyć zmiany w środowiskach przemieszczania dublujące środowisko produkcyjne. Środowiska praktyk umożliwiają przetestowanie zmian w środowisku kontrolowanego przed wdrożeniem w środowisku aktywnym.
Aby upewnić się, że zmiany są bezpieczne, należy ustanowić sprawdzanie wstępnie wdrożone, w tym przejrzenie kodu, skanowanie zabezpieczeń i sprawdzenie zgodności.
Zaimplementuj wyłączniki, aby automatycznie zatrzymać ruch do usługi, w której występują problemy, i zapobiec dalszej degradacji systemu.
Protokoły awaryjne
Ustanów normatywne protokoły, które określają, w jaki sposób można dostosować procesy bezpiecznego wdrażania do poprawki lub problemów awaryjnych, takich jak naruszenie zabezpieczeń lub ujawnienie luk w zabezpieczeniach. Na przykład protokoły awaryjne mogą obejmować:
- Przyspieszenie etapu promocji i akceptacji
- Akceleracja testów dymnych i testów integracyjnych
- Skrócenie czasu pieczenia
W niektórych przypadkach jakość i testowanie mogą ograniczać jakość i testowanie, ale nadal należy uruchamiać je tak szybko, jak to możliwe, jako ćwiczeń bez użycia systemu. Upewnij się, że zdefiniowano, kto może zatwierdzić bezpieczne przyspieszanie wdrożenia w sytuacji awaryjnej oraz kryteria, które muszą być spełnione, aby przyspieszyć przyspieszenie. Dostosuj swoje protokoły awaryjne do planu odpowiedzi w sytuacjach awaryjnych, aby zapewnić, że wszystkie sytuacje awaryjne są obsługiwane zgodnie z tymi samymi protokołami.
Kwestie wymagające rozważenia
Tworzenie i konserwacja rozwiązań bezpiecznego wdrażania jest złożone. Powodzenie w pełnej implementacji niezawodnych standardów zależy od tego, czy w wielu obszarach projektowania oprogramowania praktyk nie sposób ich wdrożyć. Korzystanie z automatyzacji, IaC tylko dla zmian w infrastrukturze, spójność strategii rozgałęziania, flagi funkcji i inne praktyki mogą pomóc w zapewnieniu bezpiecznego wdrażania. Ten przewodnik może zoptymalizować pracą i poinformować o planach ulepszeń w przypadku rozwoju rozwiązań.
Ułatwienia Power Platform
Potoki mają Power Platform na celu demokratyzację zarządzania cyklem życia aplikacji (ALM) dla Power Platform klientów i klientów Dynamics 365 poprzez wprowadzenie do usługi funkcji automatyzacji ALM oraz ciągłej integracji i ciągłego dostarczania (CI/CD).
Microsoft Power Platform Narzędzia do kompilacji mogą Azure DevOps służyć do automatyzowania typowych zadań kompilacji i wdrażania związanych z aplikacjami opartymi na Power Platform bazie.
Akcje GitHub umożliwiają Power Platform deweloperom tworzenie zautomatyzowanych przepływów pracy cyklu życia tworzenia oprogramowania. Za pomocą akcji GitHub dla platformy Microsoft Power Platform można tworzyć przepływy pracy w swoim repozytorium, aby tworzyć, testować, pakowania, wydawać i wdrażać aplikacje; wykonywać automatyzację; oraz zarządzać botami i innymi składnikami zbudowanymi na platformie Power Platform.
Akcelerator ALM to narzędzie typu open source, które składa się z zestawu aplikacji, skryptów i potoków zaprojektowanych w celu zautomatyzowania procesu ciągłej integracji/ciągłego dostarczania.
Automatyzowanie testów za pomocą usługi Azure Pipelines.
Zmienne środowiskowe w rozwiązaniach przechowują klucze parametrów i wartości, które następnie służą jako dane wejściowe dla innych obiektów aplikacji. Dzielenie parametrów od obiektów zużywających dane pozwala na zmianę wartości w tym samym środowisku lub migrowanie rozwiązań do innych środowisk.
Power Platform Środowiska udostępniają funkcję przywracania do określonego punktu w czasie, która może pomóc w wycofaniu.