20
Как мы делали continuous delivery Курдюков «Алик» Александр

How we built continuous delivery

Embed Size (px)

Citation preview

Page 1: How we built continuous delivery

Как мы делали continuous deliveryКурдюков «Алик» Александр

Page 2: How we built continuous delivery

United Traders• Брокер• Своя платформа• Uptime 24/5

Page 3: How we built continuous delivery

Архитектура• Микросервисы• Java on Linux/.NET on Windows• Один сервис – одна база

Page 4: How we built continuous delivery

Организация• 2 команды• 2 разных цикла поставки

Page 5: How we built continuous delivery

Мы не вебчик, мы энтерпрайз• SLA половины компонентов - 5 мин в день в

определенное время• Полный регресс невозможен без настоящей

торговли

Page 6: How we built continuous delivery

ЗадачиСоблюдать SLAУстанавливать быстроЕсли что – быстро откатыватьсяНе терять зависимостиПомнить где, что и когда стоялоКаждый может разобраться

Page 7: How we built continuous delivery

Прототип• Нужно больше фич!• Кодим и собираем на машинах разработчиков• Минимальное ручное тестирование• Поставляем все компоненты сразу

Page 8: How we built continuous delivery

Прототип✖Соблюдать SLAУстанавливать быстро✖Если что – быстро откатыватьсяНе терять зависимости✖Помнить где, что и когда стоялоКаждый может разобраться

Page 9: How we built continuous delivery

Результат?• От команды требуется собранность• Постоянные серьезные баги на проде• Команда работает почти круглосуточно

Page 10: How we built continuous delivery

И что?• Никакого масштабирования• Команда выгорает• Только супер-лояльные пользователи• … но взлететь так можно• … а жить нельзя

Page 11: How we built continuous delivery

Continuous Integration• Unit tests• Integration tests• Migrations• Bamboo CI + artifacts• Custom deploy script x2• Только полное обновление• Zabbix

Page 12: How we built continuous delivery

Грабли• Рефакторинг без тестов - хуже, чем просто

переписывание• Внедрение миграций на уже работающем проекте –

совсем не так просто• Интеграционные тесты так и не взлетели

Page 13: How we built continuous delivery

Результат?Соблюдать SLAУстанавливать быстроЕсли что – быстро откатыватьсяНе терять зависимости✖Помнить где, что и когда стоялоКаждый может разобраться

Page 14: How we built continuous delivery

И что?• Все работает для Windows и Linux• Потратили примерно 2 недели на всю

автоматизацию• 80% задач выполнено• … успех?

Page 15: How we built continuous delivery

Не совсем• Полуручное обновление• Сторонний софт• Развертывание хоста + безопасность• Надо поддерживать скрипты• Сложные зависимости не поддерживаются

Page 16: How we built continuous delivery

Continuous Delivery• NuGet + Maven + Nexus• Ansible• Semaphore

Page 17: How we built continuous delivery

Результат?Соблюдать SLAУстанавливать быстроЕсли что – быстро откатыватьсяНе терять зависимостиПомнить где, что и когда стоялоКаждый может разобраться

Page 18: How we built continuous delivery

Все?• Continuous Deployment vs User-Visible Releases• Сложные зависимости – обратная совместимости и

feature toggle• End-to-end тесты

Page 19: How we built continuous delivery

Итого• TDD может быть очень полезен даже для

прототипа. Есть риск не успеть с масштабированием потом.• Сразу думайте как будете доставлять, особенно

если у вашей платформы нет готовых средств. И не забудьте про безопасность.• Использовать DevOps подходы для Windows можно и

нужно.• Надежное хранение артефактов – это важно.• Минимальный мониторинг лучше делать сразу.

Page 20: How we built continuous delivery

Спасибо! Вопросы?

Материалы: http://bit.ly/ut-cont-delivery

Skype: [email protected]