DevOps — development и operations, это культура создания продукта
DevOps (акроним от англ. development и operations) — методология активного взаимодействия специалистов по разработке со специалистами по информационно-технологическому обслуживанию и взаимная интеграция их рабочих процессов друг в друга для обеспечения качества продукта. Предназначена для эффективной организации создания и обновления программных продуктов и услуг. Основана на идее тесной взаимозависимости создания продукта и эксплуатации программного обеспечения, которая прививается команде как культура создания продукта.
Организациям, которым необходимы частые выпуски программного обеспечения, может понадобиться DevOps. Дневной цикл релизов может быть гораздо более интенсивным у организаций, которые выпускают несколько разнонаправленных приложений.
Методология фокусируется на стандартизации окружений разработки с целью быстрого переноса программного обеспечения через стадии, способствуя быстрому выпуску версий. В идеале, системы автоматизации сборки и выпуска должны быть доступны всем разработчикам в любом окружении, и у разработчиков должен быть контроль над окружением, а информационно-технологическая инфраструктура должна становиться более сфокусированной на приложении.
Задача DevOps-инженеров — сделать процесс разработки и поставки программного обеспечения согласованным с эксплуатацией объединив их в единую команду, что позволяет организовать процессы, которые далее можно автоматизировать с помощью инструментов.
DevOps-движение возникло в 2009 году и было призвано решить проблемы взаимодействия команд разработки и эксплуатации программных продуктов, в том же году в Бельгии была организована серия конференций «DevOps Days». Затем «DevOps-дни» проходили в различных городах и странах мира.
Набор инструментов
Поскольку DevOps — это командная работа (между сотрудниками, занимающимися разработкой, операциями и тестированием), нет единого инструмента «DevOps»: это скорее набор (или «инструментальная цепочка DevOps»), состоящий из нескольких инструментов. Как правило, инструменты DevOps вписываются в одну или несколько из этих категорий, что отражает ключевые аспекты разработки и доставки программного обеспечения:
- Кодирование — разработка и анализ кода, инструменты контроля версий, слияние кода;
- Сборка — инструменты непрерывной интеграции, статус сборки;
- Тестирование — инструменты непрерывного тестирования, обеспечивающие быструю и своевременную оценку бизнес-рисков;
- Упаковка — репозиторий артефактов, предварительная установка приложения;
- Релиз — управление изменениями, официальное утверждение выпуска, автоматизация выпуска;
- Настройка — конфигурация и управление инфраструктурой, Инфраструктура как инструменты кода;
- Мониторинг — измерение производительности приложений, взаимодействие с конечным пользователем;
- Непрерывная поставка;
- Непрерывная интеграция.
Несмотря на то, что доступно множество инструментов, некоторые категории из них имеют особо важное значение в настройке инструментальных средств DevOps для использования в организации. Некоторые попытки идентифицировать эти основные инструменты можно найти в существующей литературе.
Такие инструменты, как управление контейнеризацией (Docker, Kubernetes), непрерывной интеграцией (Jenkins, GitLab), развёртывания сред по шаблону (Puppet, Ansible, Terraform) и многие другие — часто используются и часто упоминаются в дискуссиях по инструментам DevOps.
Сравнение с Agile и Continuous delivery
Agile и DevOps похожи, но Agile представляет собой изменение мышления и практики (что должно привести к организационным изменениям), а DevOps уделяет больше внимания внедрению организационных изменений для достижения своих целей.
Потребность в DevOps рождалась из-за растущей популярности программного обеспечения Agile, поскольку это приводит к увеличению количества выпускаемых версий.
Continuous delivery и DevOps похожи по своим значениям (и часто сочетаются), но они представляют собой две разные концепции:
DevOps применяется в более широких аспектах и сосредоточен вокруг:
- Организационных изменений: в частности, для поддержки более тесного сотрудничества между различными типами работников, занимающихся поставкой программного обеспечения;
- Разработчиков;
- Операций;
- Гарантии качества;
- Управления;
- Системного администрирования;
- Администрирования базы данных;
- Координаторов
- Автоматизации процессов в поставке программного обеспечения.[7]
Continuous delivery — это подход к автоматизации аспекта поставки, который фокусируется на:
- Объединении различных процессов;
- Выполнении их быстрее и чаще.
Они имеют общие конечные цели и часто используются вместе для их достижения. DevOps и Continuous delivery используют гибкие методы: небольшие и быстрые изменения с целенаправленным результатом для конечного клиента.
Цели
Конкретные цели DevOps охватывают весь процесс поставки программного обеспечения. Они включают:
- Сокращение времени для выхода на рынок;
- Снижение частоты отказов новых релизов;
- Сокращение времени выполнения исправлений;
- Уменьшение количества времени на восстановления (в случае сбоя новой версии или иного отключения текущей системы).
Методики DevOps делают простые процессы более программируемыми и динамическими. С помощью DevOps можно максимизировать предсказуемость, эффективность, безопасность и ремонтопригодность операционных процессов.
Интеграция DevOps предназначена для доставки продукта, непрерывного тестирования, тестирования качества, разработки функций и обновлений обслуживания для повышения надежности и безопасности и обеспечения более быстрого цикла разработки и развертывания.
DevOps дает преимущества в управлении выпуском программного обеспечения для организации путем стандартизации среды разработки. События можно более легко отслеживать, а также разрешать документированные процессы управления и подробные отчеты. Подход DevOps предоставляет разработчикам больше контроля над средой, предоставляя инфраструктуре более ориентированное на приложения понимание.
Преимущества
Компании, которые используют DevOps, сообщили о значительных преимуществах, в том числе: значительно сокращении времени выхода на рынок, улучшении удовлетворенности клиентов, улучшении качества продукции, более надежных выпусках, повышении производительности и эффективности, а также увеличении способности создавать правильный продукт путем быстрого экспериментирования.
Однако, исследование, выпущенное в январе 2017 года компанией «F5 Labs», на основе опроса почти 2200 ИТ-руководителей и специалистов отрасли, показало, что только один из пяти опрошенных полагает, что DevOps оказывает стратегическое влияние на их организацию, несмотря на рост использования. В том же исследовании было установлено, что только 17 % определили DevOps как ключевой инструмент.
Архитектурные условия
Чтобы эффективно использовать DevOps, прикладные программы должны соответствовать набору архитектурно значимых требований (ASR), таких как: возможность развертывания, изменяемость, тестируемость и возможности мониторинга.
Хотя в принципе можно использовать DevOps с любым архитектурным стилем, стиль микросервисов становится стандартом для построения постоянно развёрнутых систем. Поскольку размер каждого сервиса невелик, появляется возможность изменять каждый отдельный сервис посредством непрерывного рефакторинга, что уменьшает необходимость в большом предварительном дизайне и позволяет выпускать программное обеспечение на ранней стадии непрерывно.