На замену waterfall пришла методология Agile («гибкая разработка»). Ее официальная история начинается «Манифестом гибкой разработки программного обеспечения» в 2001 году в США. Популярность разработки по Agile способствовала развитию практик DevOps (DEVelopment OPeration). В этой статье мы расскажем об Agile и DevOps, сравним методологии и рассмотрим, как они работают вместе.
Немного об Agile
Гибкая методология разработки Agile — это итеративный подход к управлению проектами и разработке ПО. Команда выдает работу небольшими частями, спринтами — так Agile помогает исполнителям быстрее и качественнее выполнять свою работу. Требования, планы и результаты постоянно оцениваются, поэтому команда быстро реагирует на изменения.
Методология Agile опирается на 12 принципов:
- В приоритете — потребности клиента.
- Изменения приветствуются и вносятся на всех этапах разработки.
- Регулярная поставка работающего ПО.
- Заказчик — часть команды.
- В команде — только заинтересованные, замотивированные специалисты.
- Общение, обсуждение по ходу проекта должно быть ежедневными.
- Работающее ПО — лучший индикатор прогресса.
- Agile-процессы способствуют устойчивому развитию.
- Работать над техническим совершенством и дизайном.
- Не усложнять процессы.
- Инновационные решения и идеи появляются у команд, которые способны к самоорганизации.
- Команда регулярно обдумывает варианты повышения своей эффективности, и по итогу вносит правки в рабочий процесс.
Поскольку заказчик привлечен к проекту, команда может оперативно реагировать на правки, изменения и в финале выдать необходимое решение. Agile-проект не опирается на документацию и приветствует изменения, поэтому финальное решение может превосходить изначальные запросы и ожидания. Методология подразумевает, что пока ПО находится в стадии разработки, команда может показать заказчику MVP (минимально жизнеспособный продукт).
Немного о DevOps
DevOps — это методология, которая помогает наладить взаимодействие программистов и системных администраторов в команде. Как результат, специалисты начинают понимать, в чем суть работы друг друга, и это позволяет ускорить выпуск программного продукта. DevOps в процессе разработки ПО сокращает количество шагов, которые необходимы для вывода продукта на рынок. Более быстрые релизы и оптимизированные процессы способствуют получению быстрой обратной связи от пользователей. Также один из столпов DevOps — автоматизация процессов.
Принципы DevOps:
- Принцип потока — ускорить доставку продукта от разработчиков к отделу эксплуатации.
- Принцип обратной связи — своевременно реагировать на запросы.
- Принцип перманентного обучения — создать благоприятные условия для организации высокой культуры производства; учитывать риски как составляющую ежедневной работы и минимизировать их.
Что касается применения. Если заказчику нужен 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.