Lista kontrolna gotowości produkcyjnej

Tłumaczenie artykułu zostało przygotowane specjalnie dla studentów kursu „Praktyki i narzędzia DevOps”, który zaczyna się już dziś!

Lista kontrolna gotowości produkcyjnej

Czy kiedykolwiek wypuściliście nową usługę do środowiska produkcyjnego? A może byłeś zaangażowany we wspieranie takich służb? Jeśli tak, co Cię motywowało? Co jest dobre dla produkcji, a co złe? Jak szkolić nowych członków zespołu w zakresie wydań lub konserwacji istniejących usług.

Większość firm ostatecznie przyjmuje podejście „Dzikiego Zachodu”, jeśli chodzi o praktyki operacyjne w przemyśle. Każdy zespół decyduje o własnych narzędziach i najlepszych praktykach metodą prób i błędów. Ale często ma to wpływ nie tylko na powodzenie projektów, ale także na inżynierów.

Metoda prób i błędów tworzy środowisko, w którym wytykanie palcami i zrzucanie winy na innych jest powszechne. Przy takim zachowaniu coraz trudniej jest uczyć się na błędach i nie powtarzać ich ponownie.

Organizacje odnoszące sukcesy:

  • uświadomić sobie potrzebę wytycznych do produkcji,
  • przestudiować najlepsze praktyki,
  • rozpoczynać dyskusje na temat kwestii gotowości produkcyjnej przy opracowywaniu nowych systemów lub komponentów,
  • zapewnić przestrzeganie zasad przygotowania do produkcji.

Przygotowanie do produkcji obejmuje proces „przeglądu”. Przegląd może mieć formę listy kontrolnej lub zestawu pytań. Recenzje można przeprowadzać ręcznie, automatycznie lub na oba sposoby. Zamiast statycznych list wymagań można tworzyć szablony list kontrolnych, które można dostosować do konkretnych potrzeb. W ten sposób inżynierowie mogą uzyskać możliwość dziedziczenia wiedzy i wystarczającej elastyczności, jeśli jest to wymagane.

Kiedy sprawdzić usługę pod kątem gotowości do produkcji?

Sprawdzenie gotowości produkcyjnej warto przeprowadzić nie tylko bezpośrednio przed wydaniem, ale także w momencie przekazania jej innemu zespołowi operacyjnemu lub nowemu pracownikowi.

Sprawdź kiedy:

  • Wprowadzasz nową usługę do środowiska produkcyjnego.
  • Przekazujesz obsługę usługi produkcyjnej innemu zespołowi, np. SRE.
  • Przekazujesz prowadzenie usługi produkcyjnej nowym pracownikom.
  • Zorganizuj wsparcie techniczne.

Lista kontrolna gotowości produkcyjnej

Jakiś czas temu, jako przykład, I опубликовала lista kontrolna do badania gotowości do produkcji. Chociaż ta lista pochodzi od klientów Google Cloud, będzie przydatna i będzie miała zastosowanie poza Google Cloud.

Projektowanie i rozwój

  • Opracuj powtarzalny proces kompilacji, który nie wymaga dostępu do usług zewnętrznych i nie jest zależny od awarii systemów zewnętrznych.
  • W okresie projektowania i rozwoju zdefiniuj i ustaw SLO dla swoich usług.
  • Dokumentuj oczekiwania co do dostępności usług zewnętrznych, od których jesteś zależny.
  • Unikaj pojedynczego punktu awarii, usuwając zależności od jednego zasobu globalnego. Replikuj zasób lub użyj rezerwy, gdy zasób jest niedostępny (na przykład wartość zakodowana na stałe).

Zarządzanie konfiguracją

  • Konfiguracja statyczna, mała i nietajna może być przekazywana poprzez parametry wiersza poleceń. W pozostałych przypadkach użyj usług przechowywania konfiguracji.
  • Konfiguracja dynamiczna musi mieć ustawienia awaryjne na wypadek, gdyby usługa konfiguracji była niedostępna.
  • Konfiguracja środowiska programistycznego nie powinna być powiązana z konfiguracją produkcyjną. W przeciwnym razie może to prowadzić do dostępu ze środowiska programistycznego do usług produkcyjnych, co może powodować problemy prywatności i wyciek danych.
  • Udokumentuj, co można skonfigurować dynamicznie i opisz zachowanie awaryjne, jeśli system dostarczania konfiguracji jest niedostępny.

Zarządzanie wydaniami

  • Dokumentuj szczegółowo proces wydania. Opisz, jak wydania wpływają na docelowe poziomy usług (na przykład tymczasowy wzrost opóźnień z powodu braków w pamięci podręcznej).
  • Dokumentuj wypuszczenia kanarków.
  • Opracuj plan przeglądu wydań dla kanarków i, jeśli to możliwe, automatyczne mechanizmy wycofywania zmian.
  • Upewnij się, że w przypadku wycofywania zmian można używać tych samych procesów, co w przypadku wdrożeń.

Obserwowalność

  • Upewnij się, że zebrano zestaw metryk wymaganych dla docelowego poziomu usług.
  • Upewnij się, że potrafisz rozróżnić dane klienta i serwera. Jest to ważne w celu znalezienia przyczyn nieprawidłowego działania.
  • Konfiguruj alerty, aby obniżyć koszty pracy. Na przykład usuń alerty spowodowane rutynowymi operacjami.
  • Jeśli korzystasz ze Stackdrivera, uwzględnij wskaźniki platformy GCP w swoich panelach kontrolnych. Skonfiguruj alerty dotyczące zależności GCP.
  • Zawsze propaguj przychodzące ślady. Nawet jeśli nie jesteś zaangażowany w śledzenie, umożliwi to usługom niższego poziomu debugowanie problemów w środowisku produkcyjnym.

Ochrona i bezpieczeństwo

  • Upewnij się, że wszystkie połączenia zewnętrzne są szyfrowane.
  • Upewnij się, że Twoje projekty produkcyjne mają poprawną konfigurację uprawnień.
  • Użyj sieci, aby odizolować grupy instancji maszyn wirtualnych.
  • Użyj VPN, aby bezpiecznie łączyć się z sieciami zdalnymi.
  • Dokumentuj i monitoruj dostęp użytkowników do danych. Upewnij się, że dostęp wszystkich użytkowników do danych jest kontrolowany i rejestrowany.
  • Upewnij się, że punkty końcowe debugowania są ograniczone przez listy ACL.
  • Oczyść dane wejściowe użytkownika. Skonfiguruj limity rozmiaru ładunku dla danych wejściowych użytkownika.
  • Upewnij się, że Twoja usługa może selektywnie blokować ruch przychodzący dla poszczególnych użytkowników. Spowoduje to zablokowanie naruszeń bez wpływu na innych użytkowników.
  • Unikaj zewnętrznych punktów końcowych, które inicjują wiele operacji wewnętrznych.

Planowanie wydajności

  • Dokumentuj skalowanie swojej usługi. Na przykład: liczba użytkowników, wielkość przychodzącego ładunku, liczba przychodzących wiadomości.
  • Udokumentuj wymagania dotyczące zasobów dla Twojej usługi. Na przykład: liczba dedykowanych instancji maszyn wirtualnych, liczba instancji Spanner, specjalistyczny sprzęt taki jak GPU czy TPU.
  • Ograniczenia zasobów dokumentu: typ zasobu, region itp.
  • Ograniczenia przydziału dokumentów dotyczące tworzenia nowych zasobów. Na przykład ograniczenie liczby żądań API GCE w przypadku korzystania z API do tworzenia nowych instancji.
  • Rozważ uruchomienie testów obciążenia, aby przeanalizować spadek wydajności.

To wszystko. Do zobaczenia w klasie!

Źródło: www.habr.com

Dodaj komentarz