9 шагов по безопасному развертыванию функций с помощью флагов функций

RedDeveloper
30.12.2022 03:38
9 шагов по безопасному развертыванию функций с помощью флагов функций

В этой статье мы рассмотрим шаги по безопасному развертыванию обновления.

Что вам понадобится

  • Контроллер функций
  • Конфигурация для функции
  • Инфраструктура для развертывания выпусков canary (необязательно; если вы любите играть с огнем без перчаток)

Безопасное развертывание изменений

A summary of steps to rollout features safely
  1. Создайте функцию в контроллере функций для новой функции со значением по умолчанию disabled. Напишите код для новой функции, но за этим новым условием, используя контроллер функций. Теперь код присутствует, но отключен.
  2. Выпустите новый двоичный файл с новым кодом. На этом этапе код присутствует, но находится за флагом и в настоящее время отключен. Неудача на этом этапе потребует возврата к старым двоичным файлам
  3. Теперь обновите конфигурационные файлы, добавьте конфигурацию для функции, но сохраните ее отключенной. Функция все еще должна быть неактивной, и любой сбой на этом этапе потребует возврата к старому файлу конфигурации.
  4. Обновите конфигурацию, чтобы включить функцию для нескольких развертываний canary. Неудачное развертывание потребует прекращения работы канареек.
  5. Обновите оставшиеся развертывания и активируйте эту функцию. Вероятность неудачи на этом этапе минимальна, поскольку функция уже протестирована на пользователях canary.
  6. Теперь измените код так, чтобы значение по умолчанию для функции в контроллере функций было включено. Это не должно иметь никакого значения, поскольку в любом случае конфигурация была включена для этой функции. Неудачное развертывание на этом этапе потребует возврата к предыдущему двоичному файлу.
  7. Обновите файлы конфигурации и удалите ссылки на функцию. Код в любом случае не использует эту конфигурацию в соответствии с шагом 6.
  8. Обновите весь код и удалите условное поведение вокруг этой функции. Неудачное развертывание потребует возврата к предыдущей версии бинарного файла.
  9. Удалите код из контроллера функции.

Эти девять шагов могут быть излишеством, но они обеспечивают плавный выпуск кода. Эти шаги могут растянуться на несколько недель или месяцев, а также параллельно для многих функций.

Первоначально опубликовано на s9a.me.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?

20.08.2023 18:21

Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией

20.08.2023 17:46

В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox

19.08.2023 18:39

Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest

19.08.2023 17:22

В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️

18.08.2023 20:33

Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL

14.08.2023 14:49

Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.