Upload
alik-kurdyukov
View
152
Download
0
Embed Size (px)
Citation preview
Как мы делали 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 можно и
нужно.• Надежное хранение артефактов – это важно.• Минимальный мониторинг лучше делать сразу.