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

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

  • Upload
    ontico

  • View
    369

  • Download
    8

Embed Size (px)

DESCRIPTION

Доклад Дениса Яковлева на HighLoad++ 2014.

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]