SlideShare a Scribd company logo
Как мы
делали
continuous
delivery
Курдюков «Алик» Александр
United Traders
• Брокер
• Своя платформа
• Uptime 24/5
Архитектура
• Микросервисы
• Java on Linux/.NET on Windows
• Один сервис – одна база
Организация
• 2 команды
• 2 разных цикла поставки
Мы не вебчик, мы энтерпрайз
• SLA половины компонентов - 5 мин в день в определенное
время
• Полный регресс невозможен без настоящей торговли
Задачи
 Соблюдать SLA
 Устанавливать быстро
 Если что – быстро откатываться
 Не терять зависимости
 Помнить где, что и когда стояло
 Каждый может разобраться
Прототип
• Нужно больше фич!
• Кодим и собираем на машинах разработчиков
• Минимальное ручное тестирование
• Поставляем все компоненты сразу
Прототип
✖ Соблюдать SLA
 Устанавливать быстро
✖ Если что – быстро откатываться
 Не терять зависимости
✖ Помнить где, что и когда стояло
 Каждый может разобраться
Результат?
• От команды требуется собранность
• Постоянные серьезные баги на проде
• Команда работает почти круглосуточно
И что?
• Никакого масштабирования
• Команда выгорает
• Только супер-лояльные пользователи
• … но взлететь так можно
• … а жить нельзя
Continuous Integration
• Unit tests
• Integration tests
• Migrations
• Bamboo CI + artifacts
• Custom deploy script x2
• Только полное обновление
• Zabbix
Грабли
• Рефакторинг без тестов - хуже, чем просто переписывание
• Внедрение миграций на уже работающем проекте – совсем
не так просто
• Интеграционные тесты так и не взлетели
Результат?
 Соблюдать SLA
 Устанавливать быстро
 Если что – быстро откатываться
 Не терять зависимости
✖ Помнить где, что и когда стояло
 Каждый может разобраться
И что?
• Все работает для Windows и Linux
• Потратили примерно 2 недели на всю автоматизацию
• 80% задач выполнено
• … успех?
Не совсем
• Полуручное обновление
• Сторонний софт
• Развертывание хоста + безопасность
• Надо поддерживать скрипты
• Сложные зависимости не поддерживаются
Continuous Delivery
• NuGet + Maven + Nexus
• Ansible
• Semaphore
Результат?
 Соблюдать SLA
 Устанавливать быстро
 Если что – быстро откатываться
 Не терять зависимости
 Помнить где, что и когда стояло
 Каждый может разобраться
Все?
• Continuous Deployment vs User-Visible Releases
• Сложные зависимости – обратная совместимости и feature
toggle
• End-to-end тесты
Итого
• TDD может быть очень полезен даже для прототипа. Есть
риск не успеть с масштабированием потом.
• Сразу думайте как будете доставлять, особенно если у
вашей платформы нет готовых средств. И не забудьте про
безопасность.
• Использовать DevOps подходы для Windows можно и
нужно.
• Надежное хранение артефактов – это важно.
• Минимальный мониторинг лучше делать сразу.
Спасибо! Вопросы?
Материалы: http://bit.ly/ut-cont-delivery
Skype: kurdjukov
alik@kurdyukov.com

More Related Content

What's hot

О фреймворках / Роман Ивлиев (Банки.ру)
О фреймворках / Роман Ивлиев (Банки.ру)О фреймворках / Роман Ивлиев (Банки.ру)
О фреймворках / Роман Ивлиев (Банки.ру)
Ontico
 
Continuous deployment Smartling event
Continuous deployment Smartling eventContinuous deployment Smartling event
Continuous deployment Smartling eventViktoriya Pridatko
 
TechLeads meetup: Евгений Потапов, ITSumma
TechLeads meetup: Евгений Потапов, ITSumma TechLeads meetup: Евгений Потапов, ITSumma
TechLeads meetup: Евгений Потапов, ITSumma
Badoo Development
 
Как автотесты ускоряют релизы в OK.ru
Как автотесты ускоряют релизы в OK.ruКак автотесты ускоряют релизы в OK.ru
Как автотесты ускоряют релизы в OK.ru
Badoo Development
 
Experience report: внедрение Scrum на чужбине
Experience report: внедрение Scrum на чужбинеExperience report: внедрение Scrum на чужбине
Experience report: внедрение Scrum на чужбинеReturn on Intelligence
 
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
WrikeTechClub
 
Continuous integration для java script проектов
Continuous integration для java script проектовContinuous integration для java script проектов
Continuous integration для java script проектов
Andrey Kucherenko
 
Практики масштабирования гибкой разработки
Практики масштабирования гибкой разработкиПрактики масштабирования гибкой разработки
Практики масштабирования гибкой разработки
Askhat Urazbaev
 
TechLeads meetup: Алексей Рыбак, Badoo
TechLeads meetup: Алексей Рыбак, BadooTechLeads meetup: Алексей Рыбак, Badoo
TechLeads meetup: Алексей Рыбак, Badoo
Badoo Development
 
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ruTechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
Badoo Development
 
Асхат Уразбаев, Руководство по организации тестирования в Agile
Асхат Уразбаев, Руководство по организации тестирования в AgileАсхат Уразбаев, Руководство по организации тестирования в Agile
Асхат Уразбаев, Руководство по организации тестирования в Agile
SQADays_2009_Piter
 
Управление качеством в Agile. Как опередить баги
Управление качеством в Agile. Как опередить багиУправление качеством в Agile. Как опередить баги
Управление качеством в Agile. Как опередить баги
SQALab
 
Anton Stoliar SQADays2012 Управление качеством в Agile. Как опередить баги.
Anton Stoliar SQADays2012 Управление качеством в Agile. Как опередить баги.Anton Stoliar SQADays2012 Управление качеством в Agile. Как опередить баги.
Anton Stoliar SQADays2012 Управление качеством в Agile. Как опередить баги.
Anton Stoliar
 
как убить поставку скрамом
как убить поставку скрамомкак убить поставку скрамом
как убить поставку скрамом
Alexey Ilyichev
 
как инженерные практики помогают экономить бизнесу
как инженерные практики помогают экономить бизнесукак инженерные практики помогают экономить бизнесу
как инженерные практики помогают экономить бизнесуAndrey Rebrov
 
Управление зависимостями между командами
Управление зависимостями между командамиУправление зависимостями между командами
Управление зависимостями между командами
Askhat Urazbaev
 
Константин Назаров – Распараллеливание сборки Parallels Desktop для Mac
Константин Назаров – Распараллеливание сборки Parallels Desktop для MacКонстантин Назаров – Распараллеливание сборки Parallels Desktop для Mac
Константин Назаров – Распараллеливание сборки Parallels Desktop для Mac
404fest
 

What's hot (18)

О фреймворках / Роман Ивлиев (Банки.ру)
О фреймворках / Роман Ивлиев (Банки.ру)О фреймворках / Роман Ивлиев (Банки.ру)
О фреймворках / Роман Ивлиев (Банки.ру)
 
Continuous deployment Smartling event
Continuous deployment Smartling eventContinuous deployment Smartling event
Continuous deployment Smartling event
 
TechLeads meetup: Евгений Потапов, ITSumma
TechLeads meetup: Евгений Потапов, ITSumma TechLeads meetup: Евгений Потапов, ITSumma
TechLeads meetup: Евгений Потапов, ITSumma
 
Как автотесты ускоряют релизы в OK.ru
Как автотесты ускоряют релизы в OK.ruКак автотесты ускоряют релизы в OK.ru
Как автотесты ускоряют релизы в OK.ru
 
Experience report: внедрение Scrum на чужбине
Experience report: внедрение Scrum на чужбинеExperience report: внедрение Scrum на чужбине
Experience report: внедрение Scrum на чужбине
 
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
 
Continuous integration для java script проектов
Continuous integration для java script проектовContinuous integration для java script проектов
Continuous integration для java script проектов
 
Практики масштабирования гибкой разработки
Практики масштабирования гибкой разработкиПрактики масштабирования гибкой разработки
Практики масштабирования гибкой разработки
 
TechLeads meetup: Алексей Рыбак, Badoo
TechLeads meetup: Алексей Рыбак, BadooTechLeads meetup: Алексей Рыбак, Badoo
TechLeads meetup: Алексей Рыбак, Badoo
 
ALM & Agile
ALM & AgileALM & Agile
ALM & Agile
 
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ruTechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
 
Асхат Уразбаев, Руководство по организации тестирования в Agile
Асхат Уразбаев, Руководство по организации тестирования в AgileАсхат Уразбаев, Руководство по организации тестирования в Agile
Асхат Уразбаев, Руководство по организации тестирования в Agile
 
Управление качеством в Agile. Как опередить баги
Управление качеством в Agile. Как опередить багиУправление качеством в Agile. Как опередить баги
Управление качеством в Agile. Как опередить баги
 
Anton Stoliar SQADays2012 Управление качеством в Agile. Как опередить баги.
Anton Stoliar SQADays2012 Управление качеством в Agile. Как опередить баги.Anton Stoliar SQADays2012 Управление качеством в Agile. Как опередить баги.
Anton Stoliar SQADays2012 Управление качеством в Agile. Как опередить баги.
 
как убить поставку скрамом
как убить поставку скрамомкак убить поставку скрамом
как убить поставку скрамом
 
как инженерные практики помогают экономить бизнесу
как инженерные практики помогают экономить бизнесукак инженерные практики помогают экономить бизнесу
как инженерные практики помогают экономить бизнесу
 
Управление зависимостями между командами
Управление зависимостями между командамиУправление зависимостями между командами
Управление зависимостями между командами
 
Константин Назаров – Распараллеливание сборки Parallels Desktop для Mac
Константин Назаров – Распараллеливание сборки Parallels Desktop для MacКонстантин Назаров – Распараллеливание сборки Parallels Desktop для Mac
Константин Назаров – Распараллеливание сборки Parallels Desktop для Mac
 

Similar to How we built continuous delivery

Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
ScrumTrek
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrusAlex Chistyakov
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
SQALab
 
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And Forge
Yehor Herasymchuk
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
HappyDev
 
Meet Magento Belarus - Andriy Samilyak
Meet Magento Belarus - Andriy SamilyakMeet Magento Belarus - Andriy Samilyak
Meet Magento Belarus - Andriy Samilyak
Amasty
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
IT-Portfolio
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON
 
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
IT-Portfolio
 
Xp days 2019 - Why startups need SRE practices
Xp days 2019 - Why startups need SRE practicesXp days 2019 - Why startups need SRE practices
Xp days 2019 - Why startups need SRE practices
Alexey Andreev
 
Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...
Ontico
 
Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...Dmitry Samsonov
 
Javaone 2013 moscow gradle
Javaone 2013 moscow gradleJavaone 2013 moscow gradle
Javaone 2013 moscow gradleEvgeny Borisov
 
Инженерный дзен. Непрерывные изменения (Александр Титов)
Инженерный дзен. Непрерывные изменения (Александр Титов)Инженерный дзен. Непрерывные изменения (Александр Титов)
Инженерный дзен. Непрерывные изменения (Александр Титов)Ontico
 
Кирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовКирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектов
Olesya_V
 
DevOps в реальном времени
DevOps в реальном времениDevOps в реальном времени
DevOps в реальном времени
Andriy Samilyak
 
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Technopark
 
Иван Евтухович — Как перестать релизиться и начать жить
Иван Евтухович — Как перестать релизиться и начать житьИван Евтухович — Как перестать релизиться и начать жить
Иван Евтухович — Как перестать релизиться и начать житьDaria Oreshkina
 
Visual Studio Team Services /TFS helps doing devops
Visual Studio Team Services /TFS helps doing devops Visual Studio Team Services /TFS helps doing devops
Visual Studio Team Services /TFS helps doing devops
Konstantin Neradovsky
 
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные изменения
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные измененияCodeFest 2012. Титов А. — Инженерный дзен. Непрерывные изменения
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные измененияCodeFest
 

Similar to How we built continuous delivery (20)

Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And Forge
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
 
Meet Magento Belarus - Andriy Samilyak
Meet Magento Belarus - Andriy SamilyakMeet Magento Belarus - Andriy Samilyak
Meet Magento Belarus - Andriy Samilyak
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
 
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
 
Xp days 2019 - Why startups need SRE practices
Xp days 2019 - Why startups need SRE practicesXp days 2019 - Why startups need SRE practices
Xp days 2019 - Why startups need SRE practices
 
Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...
 
Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...
 
Javaone 2013 moscow gradle
Javaone 2013 moscow gradleJavaone 2013 moscow gradle
Javaone 2013 moscow gradle
 
Инженерный дзен. Непрерывные изменения (Александр Титов)
Инженерный дзен. Непрерывные изменения (Александр Титов)Инженерный дзен. Непрерывные изменения (Александр Титов)
Инженерный дзен. Непрерывные изменения (Александр Титов)
 
Кирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовКирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектов
 
DevOps в реальном времени
DevOps в реальном времениDevOps в реальном времени
DevOps в реальном времени
 
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5
 
Иван Евтухович — Как перестать релизиться и начать жить
Иван Евтухович — Как перестать релизиться и начать житьИван Евтухович — Как перестать релизиться и начать жить
Иван Евтухович — Как перестать релизиться и начать жить
 
Visual Studio Team Services /TFS helps doing devops
Visual Studio Team Services /TFS helps doing devops Visual Studio Team Services /TFS helps doing devops
Visual Studio Team Services /TFS helps doing devops
 
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные изменения
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные измененияCodeFest 2012. Титов А. — Инженерный дзен. Непрерывные изменения
CodeFest 2012. Титов А. — Инженерный дзен. Непрерывные изменения
 

How we built continuous delivery

  • 2. United Traders • Брокер • Своя платформа • Uptime 24/5
  • 3. Архитектура • Микросервисы • Java on Linux/.NET on Windows • Один сервис – одна база
  • 4. Организация • 2 команды • 2 разных цикла поставки
  • 5. Мы не вебчик, мы энтерпрайз • SLA половины компонентов - 5 мин в день в определенное время • Полный регресс невозможен без настоящей торговли
  • 6. Задачи  Соблюдать SLA  Устанавливать быстро  Если что – быстро откатываться  Не терять зависимости  Помнить где, что и когда стояло  Каждый может разобраться
  • 7. Прототип • Нужно больше фич! • Кодим и собираем на машинах разработчиков • Минимальное ручное тестирование • Поставляем все компоненты сразу
  • 8. Прототип ✖ Соблюдать SLA  Устанавливать быстро ✖ Если что – быстро откатываться  Не терять зависимости ✖ Помнить где, что и когда стояло  Каждый может разобраться
  • 9. Результат? • От команды требуется собранность • Постоянные серьезные баги на проде • Команда работает почти круглосуточно
  • 10. И что? • Никакого масштабирования • Команда выгорает • Только супер-лояльные пользователи • … но взлететь так можно • … а жить нельзя
  • 11. Continuous Integration • Unit tests • Integration tests • Migrations • Bamboo CI + artifacts • Custom deploy script x2 • Только полное обновление • Zabbix
  • 12. Грабли • Рефакторинг без тестов - хуже, чем просто переписывание • Внедрение миграций на уже работающем проекте – совсем не так просто • Интеграционные тесты так и не взлетели
  • 13. Результат?  Соблюдать SLA  Устанавливать быстро  Если что – быстро откатываться  Не терять зависимости ✖ Помнить где, что и когда стояло  Каждый может разобраться
  • 14. И что? • Все работает для Windows и Linux • Потратили примерно 2 недели на всю автоматизацию • 80% задач выполнено • … успех?
  • 15. Не совсем • Полуручное обновление • Сторонний софт • Развертывание хоста + безопасность • Надо поддерживать скрипты • Сложные зависимости не поддерживаются
  • 16. Continuous Delivery • NuGet + Maven + Nexus • Ansible • Semaphore
  • 17. Результат?  Соблюдать SLA  Устанавливать быстро  Если что – быстро откатываться  Не терять зависимости  Помнить где, что и когда стояло  Каждый может разобраться
  • 18. Все? • Continuous Deployment vs User-Visible Releases • Сложные зависимости – обратная совместимости и feature toggle • End-to-end тесты
  • 19. Итого • TDD может быть очень полезен даже для прототипа. Есть риск не успеть с масштабированием потом. • Сразу думайте как будете доставлять, особенно если у вашей платформы нет готовых средств. И не забудьте про безопасность. • Использовать DevOps подходы для Windows можно и нужно. • Надежное хранение артефактов – это важно. • Минимальный мониторинг лучше делать сразу.