Главные принципы DevOps
Рассматривая DevOps как масштабирование Agile-подхода на весь процесс разработки, внедрения и сопровождение ПО, можно выделить 5 основных принципов (CALMS) его реализации с целью увеличения частоты релизов и повышения ответственности команды за продукт [1]:
· Культура (Culture) – кросс-функциональное сотрудничество разнопрофильных специалистов и команд за счет единого информационного пространства проектного контента, открытых каналов коммуникаций и постоянного общения всех участников;
· Автоматизация (Automatization) – использование инструментов непрерывной поставки с прогоном каждой правки кода через серию автоматизированных тестов, часто использующих облачную инфраструктуру, и последующую упаковку успешных сборок с дальнейшим перемещением на рабочий сервер с помощью автоматизированных развертываний и управления инфраструктурой как кодом через конфигурации саморазвертываемых сред;
· Бережливость (Lean) – устранение действий с низкой полезностью и ускорение процессов, непрерывное совершенствование через регулярный ретроспективный анализ, раздельное тестирование различных инструментов, принятие поражений, возможности быстрого обнаружения проблем и их незамедлительного решения;
· Измерения (Measurement) производительности, например, продолжительность работы пользователей с продуктом, частота появления в логах сообщений о критических ошибках – необходимы ясные и четкие критерии оценки работы, показатели эффективности процессов;
· Обмен (Sharing) – совместная ответственность и разделение успехов, выпуск и обеспечение работы приложения осуществляются теми же людьми, что выполняли его сборку, т.е. разработчики (Developers) и операторы (Operators) взаимодействуют на каждом этапе жизненного цикла приложения.
Достоинства девопс
Благодаря стандартизации и автоматизации процессов разработки и внедрения, DevOps дает следующие преимущества в управлении выпуском ПО:
· события, документированные процессы управления и подробные отчеты легко отслеживать;
· разработчики имеют больше контроля над средой, предоставляя инфраструктуре более прикладное понимание продукта и процессов его эксплуатации;
· значительное сокращение времени выхода на рынок за счет «бесшовного» цикла разработки и внедрения;
· улучшение удовлетворенности клиентов;
· повышение качества и надежности продукции;
· увеличение производительности и эффективности;
· быстрота реагирования и высокая скорость экспериментов;
· расширение компетенций и ответственности разработчиков – программисты участвуют в настройке серверов и поиске ошибок, пишут автоматизированные тесты, сглаживая возможные инфраструктурные уязвимости в коде. Это сокращает количество ошибок при развертке приложения примерно в 5 раз.
Процессы и объекты девопс
DevOps, как и другие Agile-практики, ориентирован на командную работу, где рассматриваются все аспекты жизненного цикла ПО, от программного кода до эксплуатации продукта конечным пользователем [2]:
1. Code (Код) – разработка и анализ, контроль версий и слияния кода;
2. Build (Сборка) – непрерывная интеграция различных сборок;
3. Test (Тест) – непрерывное тестирование, обеспечивающее обратную связь по бизнес-рискам;
4. Operate (Работа с пакетами) – репозиторий артефактов, предварительная установка приложения;
5. Release (Выпуск) – управление изменениями, официальное утверждение выпуска, автоматизация выпуска;
6. Deploy (Развертывание конфигурации) – управление инфраструктурой как кодом;
7. Monitor (Мониторинг) – мониторинг производительности приложений, опыт работы с конечным пользователем.