ЯковлевДенис 
2gis.ru@rnd2gis 
Continuous Delivery или 
волшебная кнопка для релизов 
по запросу
API 2GIS
api.2gis.ru 
250 
городов 
21 
млн 
Mail.ru
Инфраструктура API
Россия 
Новосибирск 
Москва
Нидерланды 
Дронтен
КОМАНДА
7 Dev 
3 QA
ЗАКАЗЧИКИ 
Партнёры • Flamp • Online • PM
ФИЧИ 
От 1 до 5 в день
Задача
Сделать кнопку для релиза
Ограничения
1.Не доверяем тестам 
2.Ручной процесс деплоя 
3.Проблемы производительности 
4.Нет текущего статуса релиза
1. Тесты
Баги в тестах и коде
•Время ~6 часов 
•Зависимость от данных
•Используем paratest 
•Рефакторингтестов
Запускаем –фиксим–снова запускаем
•Зеленая сборка 
•Стабильность тестов 
•6 часов => 50 минут
2. Деплой
1.Доставка кода (gitpull) 
2.Обновление данных (yiicmigrate) 
3.Новые версии компонент (apt-get upgrade) 
4.Перезапуск сервисов
Упрощаем
1 сервер = 1 команда ( chef-client )
Сценарии релиза
Репетируем
1.Запуск нагрузки (yandex-tank) 
2.Деплойсерверов (chef-client)
Кнопка релиза
3. Нагрузка
•«Плохие релизы» 
•Увеличивается время ответа
•Формируем лог 
•Нагружаем Staging 
•Сравниваем результаты
4. Статус
•Много участников 
•Устное выяснение статуса
Dashboard
Выводы
Релизы по требованию
•Задача решаема 
•Комплексный подход 
•Внешняя команда
ЯковлевДенис 
d.yakovlev@2gis.ru

Continuous Delivery, или волшебная кнопка для релизов по запросу, Денис Яковлев (2ГИС)