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