secon'2017, Кулагин Егор, Непрерывное развертывание....
TRANSCRIPT
![Page 1: SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового человека](https://reader036.vdocuments.net/reader036/viewer/2022062317/5a648bbc7f8b9a2c568b586b/html5/thumbnails/1.jpg)
Непрерывное развертывание. Конвейер здорового человека
Кулагин Егор
Компания «Тортуга»
![Page 2: SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового человека](https://reader036.vdocuments.net/reader036/viewer/2022062317/5a648bbc7f8b9a2c568b586b/html5/thumbnails/2.jpg)
Зачем?
![Page 3: SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового человека](https://reader036.vdocuments.net/reader036/viewer/2022062317/5a648bbc7f8b9a2c568b586b/html5/thumbnails/3.jpg)
Зачем?
• 4 проекта в активной разработки• 9 платформ(социальные сети, AppStore, Android
Store)• 10 языков
![Page 4: SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового человека](https://reader036.vdocuments.net/reader036/viewer/2022062317/5a648bbc7f8b9a2c568b586b/html5/thumbnails/4.jpg)
Особенности игровых приложений
• Клиент-серверная архитектура• Клиент и сервер написаны на разных языках• Мультиплатформенность• Нагрузка
![Page 5: SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового человека](https://reader036.vdocuments.net/reader036/viewer/2022062317/5a648bbc7f8b9a2c568b586b/html5/thumbnails/5.jpg)
Развертывание курильщика
• Проект собирается на машине разработчика• Сборка заливается на продакшн с помощью ssh или ftp• Настройка конфигурации вручную на боевом сервере• Ручная синхронизация базы данных и хранилища
![Page 6: SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового человека](https://reader036.vdocuments.net/reader036/viewer/2022062317/5a648bbc7f8b9a2c568b586b/html5/thumbnails/6.jpg)
Развертывание курильщика
![Page 7: SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового человека](https://reader036.vdocuments.net/reader036/viewer/2022062317/5a648bbc7f8b9a2c568b586b/html5/thumbnails/7.jpg)
Развертывание курильщика
![Page 8: SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового человека](https://reader036.vdocuments.net/reader036/viewer/2022062317/5a648bbc7f8b9a2c568b586b/html5/thumbnails/8.jpg)
Эволюция представления о развертываний
• Эпоха скриптов • Появление CI сервер• Инструмент развертывания
![Page 9: SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового человека](https://reader036.vdocuments.net/reader036/viewer/2022062317/5a648bbc7f8b9a2c568b586b/html5/thumbnails/9.jpg)
Появления отдела QA
![Page 10: SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового человека](https://reader036.vdocuments.net/reader036/viewer/2022062317/5a648bbc7f8b9a2c568b586b/html5/thumbnails/10.jpg)
QA
• Необходимость быстро развернуть любую сборку на любой машине• Частная смена конфигурационных параметров• Если людей можно как-то научить сложным процедурам установки, то
как быть с автоматическими тестами
![Page 11: SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового человека](https://reader036.vdocuments.net/reader036/viewer/2022062317/5a648bbc7f8b9a2c568b586b/html5/thumbnails/11.jpg)
Красивое слово идемпотентность.
• Идемпотентность — свойство объекта или операции при повторном применении операции к объекту давать тот же результат, что и при одинарном.
![Page 12: SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового человека](https://reader036.vdocuments.net/reader036/viewer/2022062317/5a648bbc7f8b9a2c568b586b/html5/thumbnails/12.jpg)
Конвейер здорового человека
• Mercurial• Jenkins• Мaven• Nexus• TestNG• Salt• Пакетный менеджер
![Page 13: SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового человека](https://reader036.vdocuments.net/reader036/viewer/2022062317/5a648bbc7f8b9a2c568b586b/html5/thumbnails/13.jpg)
Mercurial
• Строгая культура ведения репозитория• Hg – flow• Feature, release, hotfix, фиксация
![Page 14: SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового человека](https://reader036.vdocuments.net/reader036/viewer/2022062317/5a648bbc7f8b9a2c568b586b/html5/thumbnails/14.jpg)
Jenkins
• Бесплатно• Open source• Огромное количество plug-in• Внятное api• Механизм pipeline
![Page 15: SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового человека](https://reader036.vdocuments.net/reader036/viewer/2022062317/5a648bbc7f8b9a2c568b586b/html5/thumbnails/15.jpg)
Jenkins
![Page 16: SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового человека](https://reader036.vdocuments.net/reader036/viewer/2022062317/5a648bbc7f8b9a2c568b586b/html5/thumbnails/16.jpg)
Build
• Сборка делается с помощью maven• Все что мы должны сделать это набрать mvn package• Сборка приложения на Ci не должна отличаться от сборки человеком•Не все языки поддерживают maven в достаточном объеме•Успешный Build - это только начало работы, а не радостный финиш
![Page 17: SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового человека](https://reader036.vdocuments.net/reader036/viewer/2022062317/5a648bbc7f8b9a2c568b586b/html5/thumbnails/17.jpg)
Nexus
• Репозиторий это наше все.• Сборки, артефакты, отчеты, промежуточные результаты.• Все данные воссоздаваемые• Все внешние библиотеки и пакеты идут через наш репозиторий
![Page 18: SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового человека](https://reader036.vdocuments.net/reader036/viewer/2022062317/5a648bbc7f8b9a2c568b586b/html5/thumbnails/18.jpg)
Конфигурирование
• Декомпозиция сборки и конфигурации,• Конфигурация – это отдельный артефакт.• Установка приложения это композиция кода и конфигурации• Сервис доступа к конфигурации
![Page 19: SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового человека](https://reader036.vdocuments.net/reader036/viewer/2022062317/5a648bbc7f8b9a2c568b586b/html5/thumbnails/19.jpg)
Тестирование
• Модульное• Приемочное
![Page 20: SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового человека](https://reader036.vdocuments.net/reader036/viewer/2022062317/5a648bbc7f8b9a2c568b586b/html5/thumbnails/20.jpg)
Тестовое окружение
• Vagrant• Salt• Octopusik
![Page 21: SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового человека](https://reader036.vdocuments.net/reader036/viewer/2022062317/5a648bbc7f8b9a2c568b586b/html5/thumbnails/21.jpg)
Octotpusik - сервер окружения для тестирования.
![Page 22: SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового человека](https://reader036.vdocuments.net/reader036/viewer/2022062317/5a648bbc7f8b9a2c568b586b/html5/thumbnails/22.jpg)
Deploy – требования
• Унификация • Deploy приложение без знаний о его структуре.• Возможность быстрого отката• Модификация структуры БД
![Page 23: SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового человека](https://reader036.vdocuments.net/reader036/viewer/2022062317/5a648bbc7f8b9a2c568b586b/html5/thumbnails/23.jpg)
Deploy
• Пакетная система• Менеджер пакетов • Liquibase• Mvn плагин для хранилища
![Page 24: SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового человека](https://reader036.vdocuments.net/reader036/viewer/2022062317/5a648bbc7f8b9a2c568b586b/html5/thumbnails/24.jpg)
Планы на будущее
• Archetype для проектов• Установка dev-машин с помощью менеджера пакетов• Внедрения docker • Максимально распараллелить фазы конвеера