Определение DevOps и немного истории
DevOps – эффективная методологическая система, объединяющая воедино автоматизированную сборку, настройку и тестирование программных продуктов. Разработчики ПО тесно взаимодействуют с IT-специалистами по эксплуатации, и взаимная интеграция процессов обеспечивает высокое качество программной продукции. Название DevOps произошло от двух терминов: development & operations (англ.).
История DevOps неофициально начинается с 1990-х годов (с мира Agile). Фактическое признание методология получила в 2001 году, когда команды разработчиков начали практиковать приемы экстремального программирования для удовлетворения потребностей заказчиков. Приложения разрабатывались в режиме максимальной автоматизации, обязанности разработчиков расширились и включили в себя настройку операций и поддержание инфраструктуры.
Растущая популярность Agile способствовала увеличению количества выпускаемых версий, вследствие чего возникла потребность в эффективной системе организации создания и обновления ПО. Так со временем появилась методология DevOps, которая считается сейчас своеобразной культурой создания программной продукции. Главная задача инженеров – объединить в единое целое при помощи автоматизации процессы разработки и поставки ПО, обеспечить согласование с эксплуатацией, контроль окружения разработки, быстрый перенос продукта через весь цикл создания и эксплуатации.
В начале 2000-х годов доминирующие позиции среди методологий управления проектами занимал Scrum. Поскольку в нем отсутствовали некоторые методы, составляющие части команд Agile, в 2009 году выделилось и сформировалось DevOps-движение за автоматизацию составляющих процессов и взаимодействие разработчиков со специалистами по эксплуатации. В связи с этим в Бельгии была проведена серия тематических конференций, которые впоследствии проводились и в других странах.
Отделившееся движение расширилось и приобрело вид современного DevOps. Основная концепция – развертывание разработанного ПО вне зависимости от методологии разработки, а также непрерывная интеграция и доставка.
Преимущества DevOps
- Обеспечивает повышение конкурентоспособности и эффективности бизнеса, связывает воедино процесс создания, эксплуатацию и проверочные испытания продукта.
- При помощи эффективных инструментов в программные продукты оперативно вносятся изменения.
- DevOps способствует стабильной работе системы и сокращению времени на восстановление в случае сбоя.
- За счет автоматизации процессов разработки, тестирования и эксплуатации принятие и реализация программных решений максимально ускоряются.
- При внедрении DevOps упорядочиваются IT-проекты, снижается количество ошибок из-за «человеческого фактора», ускоряются и упрощаются рутинные операции, улучшаются коды.
- Методики и мониторинг DevOps обеспечивают оперативную обратную связь о функциональности и состоянии системы.
- Отделы внедрения и разработки постоянно взаимодействуют, упрощаются и ускоряются коммуникации.
- DevOps обеспечивает продуктивное взаимодействие системных администраторов и разработчиков, общую ответственность за результат.
Работа с методиками DevOps побуждает инженеров к постоянному самосовершенствованию, изучению новых инструментов и требований к программному обеспечению. ПО обновляется чаще, не теряя при этом в качестве.
Методики DevOps
Одна из основных методик – CI/CD — предусматривает автоматизированные тестовые испытания и передачу новых программных модулей конечным потребителям. Главными аспектами CI/CD являются:
- реализация среды;
- сниженные риски;
- общая сфера ответственности всех участников цепочки;
- оперативная связь конечного пользователя с разработчиком.
Применение этой методики позволяет оперативно выводить новые функциональные возможности программных приложений в соответствии с клиентскими запросами, оптимизировать ресурсы, быстро решать задачи, связанные с кодами. Одновременное тестовое испытание отдельных частей повышает качество продукта. На начальных этапах выявляются и прорабатываются проблемные участки, устраняются функциональные недочеты программы. Метод применяется в следующей последовательности: написание кода, сборка программы, тестирование вручную, выпуск релиза. После прохождения этих стадий инженеры занимаются развертыванием, поддержкой и мониторингом, а также планированием.
Помимо CI/CD, в командной работе DevOps применяются другие инструменты: Terraform, Ansible, Puppet (развертывание сред по шаблону), GitLab, Jenkins (управление непрерывной интеграцией), Kubernetes, Docker (управление контейнеризацией) и многие другие. Инженеры во многих случаях используют комбинацию различных инструментов для работы.
Кому и для чего удобно применять DevOps
Методология и культура DevOps актуальна для компаний, которые нуждаются в частых выпусках программных продуктов. При выпуске нескольких разнонаправленных приложений дневной цикл с DevOps становится более интенсивным. Опытные DevOps-инженеры компаний отмечают повышение надежности выпусков, ускорение выхода продуктов на рынок, повышение эффективности и производительности, увеличение шансов на создание качественного продукта за счет быстрого экспериментирования.
Использовать методики DevOps целесообразно для уменьшения времени на восстановление в случае отключения системы или сбоя новой версии, для ускоренного внесения исправлений, для снижения частоты отказов новых релизов, для ускорения выпуска продукта на рынок.
Использование методологии актуально, если есть потребность в повышении безопасности, ремонтопригодности, предсказуемости операционных процессов, усилении контроля над средой, отслеживании документированных процессов и получении подробных отчетов.