Wdrażanie bezpiecznych rozwiązań dotyczących wdrażania
Zaimplementuj zabezpieczenia w procesie wdrażania, aby zminimalizować wpływ błędów lub nieoczekiwanych warunków. |
---|
Podczas cyklu programowania artefakty obciążeń przechodzą przez wiele zmian, ponieważ są implementowane i testowane, a w miarę naprawiania usterek.
Proces wdrażania musi być zgodny ze standardową procedurą operacyjną. Każda zmiana musi zostać wdrożona z tym samym poziomem rygoru. Ta zasada ma również zastosowanie do kodu, konfiguracji i wszystkich powiązanych artefaktów. Kluczem jest stosowanie bezpiecznych praktyk tak szybko, jak to możliwe, aby zapewnić przewidywalność w środowisku produkcyjnym. Nawet jeśli błędy docierają do klientów, powinno być możliwe jak najszybsze wdrożenie zmian odzyskiwania.
Przykładowy scenariusz
Firma Contoso Air opracowała aplikację internetową, która umożliwia klientowi rezerwację lotów bezpośrednio za pośrednictwem aplikacji. Aplikacja działa w środowisku produkcyjnym od ponad roku.
Aplikacja jest w pełni wdrożona na platformie Azure i jest oparta na usługach aplikacja systemu Azure, Azure Cosmos DB, Azure Functions, Azure Logic Apps i Azure Service Bus.
Kodyfikowanie standardów wdrażania automatycznego
Standaryzacja procesu wdrażania wszelkich zmian przy użyciu zautomatyzowanych procesów wdrażania, takich jak potoki. Wszystkie środowiska muszą używać potoków. Klasyfikowanie zasobów i wersji na środowisko w celu łatwego śledzenia i identyfikacji.
Spójne metody wdrażania zmniejszają problemy spowodowane błędami procesów i wariancją oraz umożliwiają skoncentrowanie wysiłku na problemach związanych z obciążeniem.
Standaryzacja gwarantuje, że wdrożenie zostanie ukończone bezpiecznie, niezawodnie i z powtarzalnością.
Klasyfikacja ułatwia wyświetlanie dzienników poprzednich wdrożeń i problemów, które wystąpiły. Możesz użyć tych informacji, aby przyspieszyć operacje wycofywania i wycofywania.
Wyzwanie firmy Contoso
- Zespół ds. obciążeń Contoso Air używa zautomatyzowanych potoków kompilacji i wdrażania, ale wdrożenia zwykle wymagają ręcznej interwencji w całej operacji w celu zmiany i zweryfikowania różnych ustawień konfiguracji.
- Ze względu na ręczną interwencję występują częste błędy we wdrożeniu, co sprawia, że każde wydanie jest bardzo stresujące i destrukcyjne zdarzenie dla całego zespołu. Interwencja ręczna utrudnia również wycofywanie, gdy wdrożenie zakończy się niepowodzeniem.
Stosowanie podejścia i wyników
- Zespół przydziela czas na automatyzację zmian konfiguracji w ramach wdrożenia i integrowanie dodanych funkcji z istniejącymi potokami wdrażania.
- Ustawienia konfiguracji skojarzone z każdym środowiskiem są zewnętrznie powiązane z odpowiednimi plikami JSON, które są zapisywane w kontroli źródła w celu zapewnienia dodatkowej możliwości śledzenia. Ustawienia, które są uznawane za wpisy tajne, są zapisywane w magazynach magazynu wpisów tajnych, które są również przydzielane do każdego środowiska.
- Wszystkie zmiany są teraz rejestrowane podczas wdrażania, osiągając pełną możliwość śledzenia, aby pomóc w rozwiązywaniu problemów i inspekcji. Zespół dodaje również testy automatyczne, aby zweryfikować zmiany konfiguracji w potoku.
- Następnie zespół będzie pracować nad w pełni automatyzowaniem wycofywania w celu dalszej optymalizacji procesów.
- W wyniku nowej automatyzacji wdrożenia były bardziej niezawodne i przewidywalne, a morale zespołu również wzrosły.
Wdrażanie często
Wdrażanie małych aktualizacji przyrostowych w regularnym tempie.
Użycie tego podejścia pomoże zachować możliwości zarządzania scenariuszami użytkowników i elementami roboczymi z punktu widzenia zarządzania projektem oraz zmniejszyć ryzyko problemów na dużą skalę, gdy wdrożenia kończą się niepowodzeniem.
Wyzwanie firmy Contoso
- Procesy wdrażania zespołu były historycznie wykonywane co trzy do czterech miesięcy w głównych wersjach. Ta praktyka utrudnia zweryfikowanie wydania. Zespół miał również trudności z rozwiązywaniem problemów z tak wieloma ruchomymi częściami.
- Problematyczne wersje, które wymagają poprawek w wersji środkowej lub muszą zostać wycofane i porzucone, wystąpiły kilka razy.
- Wydania są bardzo stresujące i są traktowane jako "wszystkie ręce na pokład" sytuacje, które negatywnie wpływają na morale zespołu.
Stosowanie podejścia i wyników
- Po najnowszej problematycznej wersji uczestnicy projektu poprosili zespół o lepsze podejście do wdrożeń. Zespół postanowił zmienić swoje praktyki, aby faworyzować częste, małe zmiany. Ograniczą one zakres każdego wydania do jednej lub (co najwyżej) kilku powiązanych zmian, które są dokładnie testowane, gdy kompilacja jest promowana w niższych środowiskach.
- W rezultacie wydania stały się znacznie bardziej wydajne, a jakość wzrosła. Wersje są łatwiejsze do zweryfikowania i problemy są prostsze do rozwiązania.
- Regularne cykle przewidywalnych wydań pomogły przywrócić pewność siebie i morale zespołu. Użytkownicy korzystają również z korzyści. Dzięki wyższej jakości wydania widzą mniej zakłóceń i znacznie szybciej uzyskują dostęp do nowych funkcji.
Stosowanie podejścia do progresywnego narażenia
Stopniowe wdrażanie aktualizacji z należytą starannością. Używaj modeli wdrażania, które zapewniają kontrolę, aby stopniowo zwiększać liczbę wystąpień i klientów do momentu bezpiecznego przyjęcia aktualizacji przez wszystkich.
Przetestuj każdą aktualizację w kontrolowany sposób, aby problemy zostały rozwiązane na wczesnym etapie produkcji. Unikaj wdrażania wadliwej aktualizacji, która ma wpływ na całą bazę klientów.
Sprawdź, czy aktualizacja jest zgodna z poprzednimi wersjami i do przodu.
Wyzwanie firmy Contoso
- Zespół widzi ogromne korzyści z zmiany podejścia do tworzenia mniejszych wersji. Poświęcają teraz mniej czasu na wydania i czują się pobudzone, aby kontynuować ścieżkę wprowadzania dodatkowych ulepszeń doskonałości operacyjnej.
- W miarę eksperymentowania z nowymi funkcjami niektóre zmiany nie zostały dobrze odebrane przez użytkowników lub spowodowały wzrost liczby zgłoszeń do pomocy technicznej ze względu na stromą krzywą nauki, którą przynoszą.
- Zastanawiają się, jak mogą nadal wprowadzać innowacje swoich aplikacji, aby zmaksymalizować produktywność użytkownika, jednocześnie minimalizując wpływ wydawania funkcji, które mogą nie być tak popularne, jak i łatwe w użyciu.
Stosowanie podejścia i wyników
- Postanowili zaimplementować model wydania funkcji, który uwidacznia nowe funkcje użytkownikom przyrostowo przy użyciu flag funkcji.
- Na etapach planowania nowych funkcji definiowane jest kryterium wybierania, którzy użytkownicy będą najpierw uwidaczniani funkcji. W pierwszej kolejności zostanie wybrana niewielka grupa użytkowników, która będzie otrzymywać nową funkcję. W zależności od opinii użytkowników funkcja jest wdrażana w kolejnych większych grupach do momentu uruchomienia nowej wersji przez całą populację użytkowników. W miarę uwidocznienia nowych funkcji zespół pomocy technicznej dokumentuje wyniki spraw pomocy technicznej w celu udostępnienia wewnętrznie i potencjalnie wypełnienia zewnętrznych często zadawanych pytań.