Как доставить быстро и без боли. Автоматизируем релизы

Проблемы в ЦИАН:

Оптимизация Code Review

Интеграция с системой контроля версий и трекером задач

Для этого делаем несколько операций по автоматизации после перевода задачи в статус: поиск затронутых репозиторий, блокировние ветки от изменений, мёрдж мастер-ветки в фича-ветку, разворачивание на тестовое-окружение и прогон тестов.

Ревьюеры

Выбрали схему с 1 обязательным ревьюером, 1 ревьюером по выбору, а также 1 апрув от CI c проверками и тестами

Оптимизация тестирования

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

Оптимизация тестовых (бета) стендов

Было принято решение разбить один бета-стенд на несколько бета-стендов для каждой из команд, каждый из которых обновляется вместе с веткой master, сохраняя таким образом синхронизацию.

Оптимизация деплоя

С помощью интеграции с трекером задач ищем блокирующие задачи, и закидываем задачу на деплой в специальную очередь, чтобы разные деплои не конкурировали друг с другом.

Мониторинг

В ЦИАН сложная архитектура роутинга запросов, поэтому запрос от пользователя идёт по одной схеме, а запросы между микросервисами по другой схеме. Поэтому прямой health check сложен и был выбран путь мониторинга: собираются системные метрики из prometheus, метрики приложения, пользовательские метрики из ELK. Для деплоя основной метрикой является количество 500 ошибок.

Канареечное тестирование

Разворачиваем небольшую часть и смотрим на метрики — если с метриками всё хорошо, то подтверждаем релиз и раскатываем весь релиз.

Что вышло: