На предыдущую страницу
Managed DevOps

Agile и DevOps: чем отличаются и стоит ли применять их вместе

Появление первой модели процесса разработки программного обеспечения датируется 1970 годом. Методология waterfall (каскадная модель, «водопад») опиралась на линейные механики, игнорировала интуитивный подход к разработке и внесение изменений, а финальные ошибки и баги было сложно исправлять. Еще один камень в огород waterfall — незадействованный в проекте заказчик, который получал доступ к ПО только в финале. На выходе часто разворачивался совсем не тот продукт, который был нужен для решения проблемы заказчика.
Managed DevOps

На замену waterfall пришла методология Agile («гибкая разработка»). Ее официальная история начинается «Манифестом гибкой разработки программного обеспечения» в 2001 году в США. Популярность разработки по Agile способствовала развитию практик DevOps (DEVelopment OPeration). В этой статье мы расскажем об Agile и DevOps, сравним методологии и рассмотрим, как они работают вместе.

Немного об Agile

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

Методология Agile опирается на 12 принципов:

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

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

Немного о DevOps

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

Принципы DevOps:

  1. Принцип потока — ускорить доставку продукта от разработчиков к отделу эксплуатации.
  2. Принцип обратной связи — своевременно реагировать на запросы.
  3. Принцип перманентного обучения — создать благоприятные условия для организации высокой культуры производства; учитывать риски как составляющую ежедневной работы и минимизировать их.

Что касается применения. Если заказчику нужен MVP, чтобы, например, протестировать идею, без DevOps можно обойтись. Методология заточена под налаживание бизнес-процессов и ускорение выхода обновлений.

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

Agile и DevOps — чем отличаются

Agile и DevOps — гибкие методологии разработки программных продуктов. Оба подхода способствуют быстрой разработке ПО без нанесения вреда клиенту или программным операциям. Что касается различий:

  • Чистый Agile предполагает, что после разработки, тестирования и развертывания программного обеспечения команда выполнила свою работу и может завершить процесс. А для DevOps характерны операции, которые не заканчиваются после сдачи проекта (мониторинг, модификации ПО).
  • В Agile за разработку, тестирование и развертывание программного обеспечения отвечают обычно разные специалисты. А в DevOps инженер отвечает за все: разработка, инфраструктура, координация.
  • Если Agile — это эмпирический подход (адаптация, прозрачность, тестирование — всё это в процессе), то для DevOps нужен хотя бы приблизительный прогноз конечного результата.

Методологии разные, но не взаимоисключающие. DevOps — это культура, которая ведет к совместной работе всех вовлеченных участников команды (разработчики, системные администраторы). В свою очередь Agile — поддержание производительности и обеспечение выпуска ПО с учетом новых запросов.

Через совместное применение Agile и DevOps можно добиться максимальной эффективности при разработке, выпуске и обновлении ПО.

Совместное применение Agile и DevOps

Говоря о неоспоримых преимуществах DevOps, мы не можем оставить без внимания, что система нацелена на проект в целом, а это может привести к слишком поверхностному взгляду на процессы, в отличие от Agile. Что касается Agile, система будто открещивается от проекта после его сдачи: страдает развертывание и автоматизация работы.

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

Интеграция DevOps и Agile помогает при следующих задачах:

  • Упростить процесс выпуска и улучшения программных продуктов.
  • Повысить качество сотрудничества команд.
  • Повысить ценность спринтов, минимизировать риски.
  • Уменьшить количество ошибок, получить оперативное исправление багов.
  • Получить высокие показатели удовлетворенности пользователей.
  • Иметь представление о «видимости» проекта (возможность оценить будущие результаты, быть уверенными в прогнозах).

На что обратить внимание при интеграции DevOps и Agile

Посмотрим на «подводные камни», которые могут возникнуть во время внедрения DevOps в Agile и узнаем, как их избежать.

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

2. Чтобы интеграция Agile-спринтов в DevOps прошла успешно, нужно следовать следующим рекомендациям:

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

3. Нужно внедрить QA (управление качеством продукта) на каждом этапе жизненного цикла разработки. Помимо функционального тестирования, которое применяется в Agile, подход DevOps требует тестирования производительности и нагрузки ПО. Постоянное тестирование так же важно, как и непрерывное развитие.

Итог

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

Оцените данную статью

Узнавайте о выходе новых статей в блоге первыми!

Подпишитесь на нашу рассылку
Нажимая на кнопку, Вы соглашаетесь с условиями «Политики конфиденциальности»
Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies