38
Яковлев Денис 2gis.ru @rnd2gis Continuous Delivery или волшебная кнопка для релизов по запросу

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

  • Upload
    2-

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

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

Яковлев Денис

2gis.ru @rnd2gis

Continuous Delivery или

волшебная кнопка для релизов

по запросу

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

API 2GIS

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

api.2gis.ru

250

городов

21

млнMail.ru

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

Инфраструктура API

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

Россия

НовосибирскМосква

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

Нидерланды

Дронтен

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

КОМАНДА

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

7 Dev 3 QA

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

ЗАКАЗЧИКИ

Партнёры • Flamp • Online • PM

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

ФИЧИ

От 1 до 5 в день

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

Задача

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

Сделать кнопку для релиза

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

Ограничения

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

1. Не доверяем тестам

2. Ручной процесс деплоя

3. Проблемы производительности

4. Нет текущего статуса релиза

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

1. Тесты

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

Баги в тестах и коде

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

• Время ~6 часов

• Зависимость от данных

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

• Используем paratest

• Рефакторинг тестов

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

Запускаем – фиксим – снова запускаем

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

• Зеленая сборка

• Стабильность тестов

• 6 часов => 50 минут

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

2. Деплой

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

1. Доставка кода (git pull)

2. Обновление данных (yiic migrate)

3. Новые версии компонент (apt-get upgrade)

4. Перезапуск сервисов

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

Упрощаем

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

1 сервер = 1 команда ( chef-client )

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

Сценарии релиза

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

Репетируем

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

1. Запуск нагрузки (yandex-tank)

2. Деплой серверов (chef-client)

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

Кнопка релиза

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

3. Нагрузка

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

• «Плохие релизы»

• Увеличивается время ответа

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

• Формируем лог

• Нагружаем Staging

• Сравниваем результаты

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

4. Статус

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

• Много участников

• Устное выяснение статуса

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

Dashboard

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

Выводы

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

Релизы по требованию

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

• Задача решаема

• Комплексный подход

• Внешняя команда

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

Яковлев Денис

[email protected]