November 25, 2021

Чеклист релиза

1. Убедитесь, что составляющие релиза подготовлены: все задачи проверены и подготовлены к релизу, слиты в релизную ветку, все необходимые артефакты (архивы с кодом готовы к доставке, докер-образы собраны и залиты в registry, helm-чарты подготовлены и соответствуют действительности) проверены и готовы

2. Убедитесь, что прописаны все Definitions of Done (я, честно говоря, не фанат всей этой Agile-истерии, но некоторыми принципами оттуда с удовольствием пользуюсь)

3. Тестирование
- код покрыт юнит-тестами и они были запущены в процессе CI или вручную
- выполнено регрессионное тестирование
- выполнены smoke-тесты
- выполнено нагрузочное тестирование
- очень важно: выполнено интеграционное тестирование, это отдельная большая тема для разговора
- Выполнен статический анализ кода, код прошел линтеры и security-инструменты
- Технический долг, выплаченный в рамках релиза, задокументирован
Все артефакты, полученные в ходе тестирования, помещены в хранилище, все отчеты по тестированию подготовлены и доступны

4. Проверяем технические детали
- Весь код размещен в системе контроля версий, все нужные теги установлены
- Все необходимые изменения в конфигурации production-сервисов сделаны (или готовы к этому)
- Все зависимости (базы данных, кеши, сторонние сервисы) задеплоены и готовы принимать трафик?
- Доступны ли все сетевые и инфраструктурные сервисы? (DNS, LB, VPC и прочие)

5. "Поведение" нашего релиза под трафиком
- Понимаем ли мы поведение системы под большим трафиком? Настроено и протестировано автомасштабирование?
- Готовы ли мы к изменению (ухудшению) пользовательского опыта? Готовы ли наши инструменты для измерения этого? Понимаем ли мы метрики UX?
- Если мы используем канареечный деплой, то наши метрики для принятия решения о распространении трафика протестированы и готовы?
- Если мы используем A/B-тестирование, то все Feature Toggles настроены и подготовлены?
- Проверены ли все необходимые доступы на всех уровнях? От SRE-инженеров до менеджеров, работающих с самым высоким уровнем приложения
- Готов ли наш мониторинг? Имеем ли мы всю необходимую информацию для observability? Понимаем ли мы собственные технические и продуктовые метрики, чтобы оценить поведение системы после релиза?
- Готовы ли мы к быстрому откату, если что-то пойдет не так? Можем ли мы исправить ситуацию без отката в случае ошибок? (выключить feature toggle, выкатить быстрый патч)

6. Люди, участвующие в релизе (важно уточнить, что пользователи, получающие новый UX, тоже так или иначе "участвуют" в релизе)
- Есть ли у нас контакты всех необходимых людей, которые имеют компетенции для исправления ошибок в ходе релиза? Они на связи? Они готовы реагировать?
- Понимаем ли мы как изменения повлияют на поведение пользователей? Протестировали ли мы это поведение перед релизом? (Ограниченная группа, A/B-тестирование на реальных пользователях)


Приходите ко мне в телеграм-канал @happy_devops, там еще много интересного :)