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

Agile вкратце
Гибкий метод разработки Agile — это итерационный подход к управлению проектами и разработке программного обеспечения. Команда разрабатывает небольшие части, так называемые спринты — таким образом Agile стимулирует персонал подрядчика к более быстрой и качественной работе. Требования, планы и результаты постоянно оцениваются, чтобы команда могла оперативно реагировать на изменения.
Agile базируется на 12 принципах:
- Наш главный приоритет — удовлетворить клиента путем ранней и непрерывной поставки ценного программного обеспечения.
- Приветствуйте изменение требований, даже на поздних этапах разработки. Agile-процессы позволяют использовать изменения для обеспечения конкурентных преимуществ заказчика.
- Поставляйте работающее программное обеспечение часто, от пары недель до пары месяцев, отдавая предпочтение более коротким срокам.
- Бизнесмены и разработчики должны ежедневно работать вместе на протяжении всего проекта.
- Стройте проекты вокруг мотивированных людей. Обеспечьте им необходимые условия и поддержку и доверьте им выполнение работы.
- Самым эффективным и действенным методом передачи информации команде разработчиков и внутри нее является беседа лицом к лицу.
- Рабочее программное обеспечение является основным мерилом прогресса.
- Agile-процессы способствуют устойчивому развитию. Спонсоры, разработчики и пользователи должны быть в состоянии поддерживать постоянный темп на протяжении неопределенного времени.
- Постоянное внимание к техническому совершенству и хорошему дизайну повышает гибкость.
- Простота — искусство максимизации объема невыполненной работы — имеет важное значение.
- Лучшие архитектуры, требования и проекты возникают в самоорганизующихся командах.
Когда заказчик вызывается на проект, команда может своевременно внести исправления или изменения и по завершении предоставить правильное решение. Agile-метод не рассматривает бумажную волокиту и приветствует фундаментальные изменения, поэтому конечное решение может превзойти первоначальные запросы и ожидания. Метод предполагает, что, когда программное обеспечение еще находится на стадии разработки, команда уже может продемонстрировать заказчику MVP (минимальный жизнеспособный продукт).
Кратко о DevOps
DevOps — это метод, облегчающий взаимодействие программистов и системных администраторов внутри команды. В результате специалисты начинают лучше понимать работу друг друга, что ускоряет выпуск продукта. Применяясь к разработке программного обеспечения, DevOps сокращает количество шагов, необходимых для развертывания продукта. Более быстрые релизы и оптимизированные процессы способствуют более быстрой обратной связи с клиентами. Еще один НЕ кирпич в стене DevOps — автоматизация.
Принципы DevOps:
- Принцип потока — ускорение доставки продукта от разработчиков к операциям.
- Принцип обратной связи — своевременное реагирование на запросы.
- Принцип постоянного обучения — создание условий, поддерживающих высокие производственные стандарты; рассмотрение рисков как компонента повседневной деятельности; минимизация этих рисков.
Что касается внедрения: если заказчик согласен на MVP — скажем, для проверки первоначальной идеи, — то DevOps не нужен. Этот метод призван отточить бизнес-процессы и ускорить выпуск обновлений.
Метод DevOps помогает командам быстрее принимать решения, связанные с разработкой, сократить количество ошибок и багов, а также мотивирует сотрудников учиться новому.
Agile и DevOps — различия
. Agile и DevOps — это гибкие методы разработки программного обеспечения. Оба подхода способствуют быстрой разработке программного обеспечения без вреда для клиента и программного кода. Что касается различий:
- Pure 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. Обеспечение качества должно оцениваться на каждом этапе жизненного цикла разработки. Помимо функционального тестирования, используемого в Agile, подход DevOps требует проведения тестов производительности и нагрузки на программное обеспечение. Тестирование на постоянной основе так же важно, как и устойчивое развитие.
Подведение итогов
DevOps и Agile могут работать как независимо друг от друга, решая свои собственные наборы задач, — так и вместе, для получения максимальной прибыли. Одним из наиболее оптимальных решений, позволяющих получить максимальную отдачу от обоих методов, является ITGLOBAL.COM Managed DevOps.