Русская Википедия:DevOps

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Разработка программного обеспечения

Схема взаимодействия в методологии Devops. Разработка + Тестирование + Эксплуатация = DevOps
Иллюстрация, показывающая вариант DevOps как пересечения разработки, эксплуатации и тестирования

DevOps (акроним от Шаблон:Lang-en & Шаблон:Lang-en2) — методология автоматизации технологических процессов сборки, настройки и развёртывания программного обеспечения. Методология предполагает активное взаимодействие специалистов по разработке со специалистами по информационно-технологическому обслуживанию и взаимную интеграцию их технологических процессов друг в друга для обеспечения высокого качества программного продукта. Предназначена для эффективной организации создания и обновления программных продуктов и услуг. Основана на идее тесной взаимозависимости создания продукта и эксплуатации программного обеспечения, которая прививается команде как культура создания продукта.

Организациям, которым необходимы частые выпуски программного обеспечения, может понадобиться DevOps, т.е. автоматизация технологических процессов сборки, настройки и развёртывания программного обеспечения. Дневной цикл выпусков ПО может быть гораздо более интенсивным у организаций, которые выпускают несколько разнонаправленных приложений.

Методология фокусируется на стандартизации окружений разработки с целью быстрого переноса программного обеспечения через стадии жизненного цикла ПО, способствуя быстрому выпуску версий программного продукта. В идеале, системы автоматизации сборки и выпуска должны быть доступны всем разработчикам в любом окружении, и у разработчиков должен быть контроль над окружением разработки, а информационно-технологическая инфраструктура должна становиться более сфокусированной на приложении.

Задача инженеров автоматизации технологических процессов сборки, настройки и развёртывания программного обеспечения (DevOps engineers) — сделать процессы разработки и поставки программного обеспечения согласованным с эксплуатацией, объединив их в единое целое с помощью инструментов автоматизации.

Движение за автоматизацию технологических процессов сборки, настройки и развёртывания программного обеспечения (DevOps-движение) возникло в 2009 году и было призвано решить проблемы взаимодействия команд разработки и эксплуатации программных продуктов. В том же году в Бельгии была организована серия конференций «DevOps Days»[1][2]. Затем «DevOps-дни» проходили в различных городах и странах мира.

Возникновение

Истоками того, что стало современным DevOps, включая некоторые стандартные принципы, такие как: автоматизация сборки и тестирование, непрерывная интеграция и непрерывная доставка — возникли в мире Agile, который (неофициально) датируется 1990-ми годами, а формально — 2001 годом. Команды разработчиков, использующие такие методы, как экстремальное программирование, не смогли бы "удовлетворить потребности заказчика, благодаря регулярной и ранней поставке ценного программного обеспечения"[3], если бы эти методы не включали в себя обязанности по настройке операций и поддержанию инфраструктуры разрабатываемого приложения (в максимально автоматизированном режиме). Поскольку Scrum стал доминирующей гибкой структурой в начале 2000-х годов, и в нем отсутствовали инженерные методы, которые были частью многих Agile команд, движение за автоматизацию операций/функций инфраструктуры отделилось от Agile и расширилось до того, что стало современными DevOps. Сегодня DevOps фокусируется на развертывании разработанного программного обеспечения, независимо от того, разработано ли оно с помощью гибких или других методологий.

Таким образом, косвенно, потребность в DevOps родилась из-за растущей популярности методологии разработки Agile, поскольку это привело к увеличению количества выпускаемых версий.

Набор инструментов

Поскольку DevOps — это командная работа (между сотрудниками, занимающимися разработкой, операциями и тестированием), нет единого инструмента «DevOps»: это скорее набор (или «инструментальная цепочка DevOps»), состоящий из нескольких инструментов. Как правило, инструменты DevOps вписываются в одну или несколько из этих категорий, что отражает ключевые аспекты разработки и доставки программного обеспечения:[4]

  1. Кодирование — разработка и анализ кода, инструменты контроля версий, слияние кода;
  2. Сборка — инструменты непрерывной интеграции, статус сборки;
  3. Тестирование — инструменты непрерывного тестирования, обеспечивающие быструю и своевременную оценку бизнес-рисков;
  4. Упаковка — репозиторий артефактов, предварительная установка приложения;
  5. Релиз — управление изменениями, официальное утверждение выпуска, автоматизация выпуска;
  6. Настройка — конфигурация и управление инфраструктурой, Инфраструктура как инструменты кода;
  7. Мониторинг — измерение производительности приложений, взаимодействие с конечным пользователем;
  8. Непрерывная поставка;
  9. Непрерывная интеграция.

Несмотря на то, что доступно множество инструментов, некоторые категории из них имеют особо важное значение в настройке инструментальных средств DevOps для использования в организации. Некоторые попытки идентифицировать эти основные инструменты можно найти в существующей литературе[5].

Такие инструменты, как управление контейнеризацией (Docker, Kubernetes), непрерывной интеграцией (Jenkins, GitLab), развёртывания сред по шаблону (Puppet, Ansible, Terraform) и многие другие — часто используются и часто упоминаются в дискуссиях по инструментам DevOps[6].

Сравнение с Continuous delivery

Continuous delivery и DevOps похожи по своим значениям (и часто сочетаются), но они представляют собой две разные концепции:

DevOps применяется в более широких аспектах и сосредоточен вокруг:

  1. Организационных изменений: в частности, для поддержки более тесного сотрудничества между различными типами работников, занимающихся поставкой программного обеспечения;
  2. Разработчиков;
  3. Операций;
  4. Гарантии качества;
  5. Управления;
  6. Системного администрирования;
  7. Администрирования базы данных;
  8. Координаторов
  9. Автоматизации процессов в поставке программного обеспечения.[7]

Continuous delivery — это подход к автоматизации аспекта поставки, который фокусируется на:

  1. Объединении различных процессов;
  2. Выполнении их быстрее и чаще.

Они имеют общие конечные цели и часто используются вместе для их достижения. DevOps и Continuous delivery используют гибкие методы: небольшие и быстрые изменения с целенаправленным результатом для конечного клиента.

Цели

Конкретные цели DevOps охватывают весь процесс поставки программного обеспечения. Они включают:

  1. Сокращение времени для выхода на рынок;
  2. Снижение частоты отказов новых релизов;
  3. Сокращение времени выполнения исправлений;
  4. Уменьшение количества времени на восстановления (в случае сбоя новой версии или иного отключения текущей системы).

Методики DevOps делают простые процессы более программируемыми и динамическими. С помощью DevOps можно максимизировать предсказуемость, эффективность, безопасность и ремонтопригодность операционных процессов.

Интеграция DevOps предназначена для доставки продукта, непрерывного тестирования, тестирования качества, разработки функций и обновлений обслуживания для повышения надежности и безопасности и обеспечения более быстрого цикла разработки и развертывания.[8]

DevOps дает преимущества в управлении выпуском программного обеспечения для организации путем стандартизации среды разработки. События можно более легко отслеживать, а также разрешать документированные процессы управления и подробные отчеты. Подход DevOps предоставляет разработчикам больше контроля над средой, предоставляя инфраструктуре более ориентированное на приложения понимание.

Преимущества

Компании, которые используют DevOps, сообщили о значительных преимуществах, в том числе: значительно сокращении времени выхода на рынок, улучшении удовлетворенности клиентов, улучшении качества продукции, более надежных выпусках, повышении производительности и эффективности, а также увеличении способности создавать правильный продукт путем быстрого экспериментирования.[8]

Однако, исследование, выпущенное в январе 2017 года компанией «F5 Labs», на основе опроса почти 2200 ИТ-руководителей и специалистов отрасли, показало, что только один из пяти опрошенных полагает, что DevOps оказывает стратегическое влияние на их организацию, несмотря на рост использования. В том же исследовании было установлено, что только 17 % определили DevOps как ключевой инструмент.[9]

Архитектурные условия

Чтобы эффективно использовать DevOps, прикладные программы должны соответствовать набору архитектурно значимых требований (ASR), таких как: возможность развертывания, изменяемость, тестируемость и возможности мониторинга.

Хотя в принципе можно использовать DevOps с любым архитектурным стилем, стиль микросервисов становится стандартом для построения постоянно развёрнутыхШаблон:Уточнить систем. Поскольку размер каждого сервиса невелик, появляется возможность изменять каждый отдельный сервис посредством непрерывного рефакторинга, что уменьшает необходимость в большом предварительном дизайне и позволяет выпускать программное обеспечение на ранней стадии непрерывно.

GitOps

GitOps эволюционировал из DevOps[10][11][12]. В рамках этого подхода, специфическое состояние конфигурации коммитится в Git, давшего имя подходу. В теории, вместо Git может использоваться другая система контроля версий, но на практике это почти всегда Git. Использование системы контроля версий позволяет применять практики код ревью, и откатывать конфигурацию назад.

Примечания

Шаблон:Примечания Шаблон:ВС