Принимайте решение о релизе на основе подтверждений
ЗавершеноПроверьте версию, целевую среду, остаточный риск и способ восстановления. Разделяйте merge, развёртывание и предоставление функции пользователям, когда этого требует система.
Издатель TaigaКак мы пишем
Проверьте пониманиеРецензент одобрил коммит A, но развёртывание собирает коммит B с дополнительным изменением авторизации. Что нужно сделать?Выполните упражнение
Чему вы научитесь
- Определить, на что должно ссылаться решение о релизе.
- Отличить merge, развёртывание и предоставление функции пользователям.
- Определить условия остановки или отмены релиза.
Точно сформулируйте решение
Зелёный pipeline подтверждает результаты определённого набора проверок. Он не описывает решение о релизе полностью. Владельцу нужно знать, что изменится, где это произойдёт и какие последствия остаются.
Для вымышленного экспорта клиентов укажите принятый коммит и созданный из него артефакт. Назовите целевую среду. Добавьте ссылки на значимые тесты, review и одобренные исключения. Укажите изменения данных или инфраструктуры, которые сопровождают приложение.
SSDF от NIST описывает практики безопасной разработки, а SLSA provenance помогает описать происхождение артефакта. Ни один из них не отменяет необходимости решить, подходит ли этот релиз данному сервису. NIST SSDF, SLSA provenance.
Разделяйте три события
Merge переносит изменение исходного кода в ветку. Развёртывание помещает артефакт в среду. Предоставление функции открывает её поведение пользователям. Эти события могут совпадать, но не обязательно являются одним событием.
Сервис может развернуть неактивную функцию и открыть её позже. Миграция базы данных может повлиять на production до появления видимой функции. Определите фактическую последовательность, а не считайте, что merge PR описывает все последствия.
Для экспорта feature flag может ограничить первоначальный доступ к функции. Он не защищает автоматически новый endpoint и не отменяет миграцию схемы. Проверьте меру контроля там, где возникает последствие.
Изучите краткую запись подтверждений
Используйте запись, которую может проверить другой ответственный человек:
- Цель и затронутые пользователи.
- Идентификаторы коммита и артефакта.
- Значимые проверки поведения, безопасности и совместимости.
- Целевая среда и учётная запись выполнения.
- Оставшиеся исключения с владельцами и условиями окончания действия.
- Мониторинг, способ восстановления и ответственный за реагирование.
Формулируйте утверждения точно. «Тесты пройдены» слабее, чем ссылка на результаты для коммита релиза с понятным описанием покрытия. «Откат доступен» слабее, чем проверенная процедура с указанными ограничениями.
Решите, как остановиться
Определите условия релиза до выполнения. В вымышленном экспорте остановите релиз, если доступ к данным другой организации разрешён, артефакт отличается от принятого digest или восстановление недоступно. Это примеры условий, а не универсальный checklist.
После развёртывания изучите сигналы, важные для пользователей. Сравните ошибки и время ответа с принятыми целями сервиса. Исправный процесс не доказывает, что рабочий сценарий пользователя выполняется.
Если условие не выполнено, примените согласованную реакцию. Например, отключите доступ к функции, откатите совместимый код или восстановите данные. Выберите действие, которое устраняет сбой, не создавая более крупного.
Сохраните решение после релиза
Зафиксируйте фактически развёрнутый артефакт и результат. Если выполнение отличается от плана, явно отразите различие. Учитывайте инциденты и непредвиденную работу при подготовке следующего релиза.
Автоматизированная система поставки должна облегчать проверку этой записи. Рецензенту не должно требоваться восстанавливать ход релиза по несвязанным чатам, журналам и снимкам экрана. Понятные подтверждения позволяют автоматизировать типовую работу и сохранять ответственность за решения.
Выполните упражнение
Подготовьте вымышленную заметку о релизе экспорта клиентов. Укажите коммит, digest артефакта, среду, проверку авторизации, влияние миграции, ответственного за мониторинг и условие запуска восстановления. Назовите одно условие, которое остановит релиз даже при успешных unit-тестах.
Скачать рабочий лист (Markdown)Если снять этот флажок, весь прогресс, сохранённый в этом браузере, будет удалён.
Прогресс остаётся в этом браузере. Без аккаунта и отслеживания.