Как доставить быстро и без боли. Автоматизируем релизы
Проблемы в ЦИАН:
- долгое и некачественное ревью
- 1 релиз в день, но хотелось ускориться
- конфликты между задачами
- длительное ожиданиие релиза
- полный откат всего релиза при наличии проблем
- в среднем задачи доставляются за 10 дней
Оптимизация Code Review
Интеграция с системой контроля версий и трекером задач
Для этого делаем несколько операций по автоматизации после перевода задачи в статус: поиск затронутых репозиторий, блокировние ветки от изменений, мёрдж мастер-ветки в фича-ветку, разворачивание на тестовое-окружение и прогон тестов.
Ревьюеры
Выбрали схему с 1 обязательным ревьюером, 1 ревьюером по выбору, а также 1 апрув от CI c проверками и тестами
Оптимизация тестирования
Для задач, которые не требуют ручного тестирования, задача сразу переходит к статусу на деплой. Для прочих задач был добавлен дополнительный статус в флоу задач, который автоматически назначал свободного и подходящего тестировщика для этой задачи.
Оптимизация тестовых (бета) стендов
Было принято решение разбить один бета-стенд на несколько бета-стендов для каждой из команд, каждый из которых обновляется вместе с веткой master, сохраняя таким образом синхронизацию.
Оптимизация деплоя
С помощью интеграции с трекером задач ищем блокирующие задачи, и закидываем задачу на деплой в специальную очередь, чтобы разные деплои не конкурировали друг с другом.
Мониторинг
В ЦИАН сложная архитектура роутинга запросов, поэтому запрос от пользователя идёт по одной схеме, а запросы между микросервисами по другой схеме. Поэтому прямой health check сложен и был выбран путь мониторинга: собираются системные метрики из prometheus, метрики приложения, пользовательские метрики из ELK. Для деплоя основной метрикой является количество 500 ошибок.
Канареечное тестирование
Разворачиваем небольшую часть и смотрим на метрики — если с метриками всё хорошо, то подтверждаем релиз и раскатываем весь релиз.
Что вышло:
- от 1 к 70 релизов в день
- задача приходит в прод за два дня