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

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

На базовом уровне DevOps — это работа в связке двух команд (разработка и ИТ-инфраструктура) для обеспечения более мощного и эффективного процесса разработки программного обеспечения. DevOps — это про изменение культуры, направленное на стимулирование сотрудничества между разработчиками программного обеспечения и ИТ-подразделениями.

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

И Agile, и DevOps нацелены на улучшение процессов разработки, хотя и используют разные подходы.

Но каковы более глубокие различия между ними? Возможно ли внедрять их вместе? Постараемся раскрыть тему далее в статье.

Разница между Agile и DevOps

Что такое Agile? 

Agile — это итеративный подход к разработке программного обеспечения, который ориентирован на совместную работу и быстрые релизы. Это набор ценностей и принципов, которые можно использовать для принятия решений.

Когда дело доходит до Agile, трудно привести более емкое определение, чем приведенное в манифесте, который был написан в 2001 году. В нем говорится:

Занимаясь разработкой и помогая в этом другим, мы открываем лучшие практики. Мы пришли к выводу, что:
— Люди и взаимодействие важнее процессов и инструментов;
— Рабочее программное обеспечение важнее, чем исчерпывающая документация;
— Сотрудничество с клиентами важнее, чем переговоры по договору;
— Гибкое реагирование на изменения важнее, чем следование изначальному плану.
То есть, в то время как вещи справа имеют ценность, вещи слева мы ценим больше.

Манифест сопровождается 12 принципами Agile, которые помогают принимать лучшие решения. В кратком изложении они выглядят так:

  1. Наивысший приоритет — удовлетворение потребностей заказчика благодаря оперативным поставкам ПО.
  2. Изменение требований приветствуется даже на поздних стадиях разработки.
  3. Работающий продукт следует выпускать как можно чаще.
  4. На протяжении всего проекта разработчики и представители бизнеса должны ежедневно работать вместе.
  5. Над проектом должны работать мотивированные профессионалы.
  6. Непосредственное общение является наиболее эффективным способом обмена информацией.
  7. Работающий продукт — основной показатель прогресса.
  8. Инвесторы, разработчики и пользователи должны иметь возможность поддерживать постоянный ритм.
  9. Постоянное внимание к техническому совершенству и качеству проектирования повышает гибкость проекта.
  10.  Простота — искусство минимизации лишней работы — крайне необходима.
  11. Самые лучшие требования, архитектурные и технические решения рождаются у самоорганизующихся команд.
  12.  Команда должна систематически анализировать процессы и соответственно корректировать стиль работы.

Каковы преимущества Agile-разработки?

  • Гибкость — более быстрое реагирование на изменения рынка и обратную связь от клиентов.
  • Качество — фокус на тестировании и постоянное вовлечение клиентов в процесс повышает шансы выпуска высококачественного продукта.
  • Сотрудничество. Agile — это про людей. Придавая значение в первую очередь именно человеческому взаимодействию, а не формальным процессам и «так принято», организации могут позволить сотрудникам действовать, опираясь на свой опыт и общий набор ценностей.
  • Удовлетворенность клиентов. Держа акцент на быстрое обнаружение и устранение проблем и прямую связь между клиентами и разработчиками, клиенты с большей вероятностью будут удовлетворены и вернутся снова.
  • Предсказуемость. Отказавшись от крупных планов, высеченных в камне и часто оторванных от реальности, организации могут получить лучшее представление о том, что идет хорошо, а что не работает — сразу, а не через несколько месяцев, когда исправлять все уже слишком поздно.

Что такое DevOps?

Термин происходит от сокращений: software development (dev) и  IT operations (Ops). DevOps — это не просто процесс. Это сдвиг в корпоративной культуре в сторону сотрудничества между командами разработки и инфраструктуры. Ведь усилив автоматизацию и установив все необходимое программное обеспечение, в одиночку все равно не справиться. Поэтому как и в Agile, ключевым компонентом здесь являются люди.

Разница между Agile и DevOps

AWS предлагают такое определение модели DevOps: 

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

Зачем соединять разработку и IT operations?

Как эти две группы объединились в одну? И зачем их совмещать?

Когда-то IT отделы были отделены от команд разработчиков. Затем люди из сообществ разработки и эксплуатации поняли, что есть некоторые проблемы в том, как эти команды были структурированы и как они взаимодействовали (или не взаимодействовали). Какие были препятствия: 

  • команды преследовали разные цели;
  • имели разные показатели эффективности;
  • были физически разнесены по разным комнатам, зданиям или офисам.

Наконец, они заговорили. Так родились DevOps и DevOps-инженеры.

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

Концепции и ключевые термины DevOps

  • Контейнер — легкая автономная исполняемая часть программного обеспечения. Он включает в себя все необходимое для запуска ПО.
  • Непрерывная доставка (CD) — непрерывный выпуск программного обеспечения в производство вручную или автоматически. Ориентирован на новые циклы. Некоторые организации выпускают новую версию с любыми изменениями.
  • Непрерывная интеграция (CI) — текущее программирование, построение и тестирование кода. Это делается до того, как передать его системе непрерывной доставки (CD) для развертывания. Вместе с CD он составляет CI / CD.
  • Инфраструктура как код (IaC) — определение инфраструктуры, которая используется с программным кодом, который может быть понят облачными службами. Затем эти облачные сервисы создают инфраструктуру на основе этого кода. Это позволяет вам определять стандарты и повторно использовать код, что экономит время.
  • Микросервисы — архитектура приложения, разбитая на несколько небольших частей. Контейнеры часто используются для развертывания микросервисов. 
  • Конвейер (pipeline) — набор связанных процессов, где выходные данные одного процесса являются входными данными для следующего.
  • Бессерверная система — запуск службы или микросервиса в облачной инфраструктуре, не беспокоясь о серверах, на которых выполняется код. Вы просто предоставляете код, а облачный провайдер запускает его и выдает результаты. 
  • Модульное тестирование (или юнит-тестирование) — разбиение приложения на мелкие части для проверки работы каждой функции.

Какие есть инструменты DevOps?

Вот некоторые из самых популярных инструментов DevOps CI / CD, которые можно использовать при работе в облачной среде AWS.

  • Git — бесплатная система контроля версий с открытым исходным кодом. Она поддерживает ветвление, позволяя работать над функциями отдельно, не позволяя запутываться в коде.
  • GitHub — онлайн-сервис для размещения репозиториев Git. GitHub принадлежит Microsoft, которая предлагает аналогичный инструмент под названием Azure DevOps. 
  • AWS CodeCommit — управляемый сервер для размещения репозиториев Git. Он безопасен и зашифрован, отличается высокой доступностью и легко интегрируется с другими сервисами AWS.
  • AWS CodeBuild — управляемый код непрерывной интеграции, который выполняет код, выполняет тесты и создает программные пакеты. Когда разработчики пишут код и помещают его в Git, CodeBuild компилирует этот код и создает программный пакет. Он автоматически масштабируется и может обрабатывать несколько сборок одновременно.
  • AWS CodeDeploy — управляемая служба развертывания, которая берет пакет программного обеспечения (или файлы, которые вы обновили и поместили в репозиторий Git) и развертывает на AWS или на локальных серверах. Он хорошо интегрируется с сервисами AWS и вашими собственными серверами. Он полностью автоматизирует развертывание программного обеспечения, исключая ручные операции, связанные с ошибками.
  • AWS CodePipeline — управляемая служба непрерывной доставки, которая помогает автоматизировать конвейер выпуска. Он может автоматизировать этапы сборки, тестирования и развертывания разработки программного обеспечения, а также может интегрироваться с CodeCommit и GitHub.

Другие распространенные инструменты DevOps включают: Docker, Jira, Jenkins, Puppet, Chef, Splunk, Ansible, Kubernetes, Bamboo и Nagios.


Развить навыки DevOps-инженера можно на курсах:

Прокачаться в управлении проектами можно здесь: