Agile и DevOps — две самые популярные методологии жизненного цикла разработки программного обеспечения (SDLC), применяемые в настоящее время на практике.
Одно исследование показывает, что 97% организаций используют Agile, в то время как самые инновационные начинающие компании, а также крупные предприятия используют DevOps для очень быстрого развертывания новых функций кода:
- AWS развертывает новый код каждые 11,7 секунды.
- Netflix развертывает новый код тысячи раз каждый день!
Поскольку все больше организаций стремятся последовать их примеру, важно тщательно понимать сходства и различия между Agile и DevOps — именно в этом вам поможет эта статья. Мы будем:
- Кратко просмотрите историю обеих моделей SDLC.
- Понять движущие факторы Agile и DevOps
- Выделите ключевые различия в двух
Истоки Agile: от Waterfall к Agile
Кратко об истории разработки программного обеспечения. По мере роста масштабов и сложности проектов разработки программного обеспечения ИТ-организациям требовался систематический подход для стабильной и быстрой доставки высококачественного программного обеспечения при минимальном риске и перерасходе средств.
В 1970-х годах ИТ-индустрия и академические круги официально приняли модель Waterfall SDLC: линейную и последовательную модель, которая проходит через различные стадии стандартного проекта разработки программного обеспечения в следующем порядке:
- Сбор и анализ требований
- Системный дизайн
- Реализация
- Интеграция и тестирование
- Развертывание
- Обслуживание
Модель Waterfall, зародившаяся в обрабатывающей промышленности 1950-х годов, работала достаточно хорошо, пока большинство организаций не выявили несколько критических недостатков, когда они фактически реализовали ее. Общие недостатки модели Waterfall включают в себя:
- Жесткость. Требования не могут быть изменены после начала процесса разработки.
- Риск. Любой недостаток или несоответствие продукта выявляется только в конце конвейера SDLC, когда проект принимает свою окончательную форму.
- Трата. Последовательный подход является медленным и устраняет узкое место через SDLC.
- Сфера. На практике стоимость и время, затрачиваемое на проекты водопада, часто превышают ожидаемые ограничения.
В 2001 году группа профессиональных разработчиков выпустила Agile Manifesto: набор ценностей и руководящих принципов, которые можно использовать в качестве философии или образа мышления для итерационной разработки высококачественных программных компонентов — небольших, но частых выпусков с небольшими улучшениями.
Рассмотрим, чем ценности Agile (слева) отличаются от традиционных практик и приоритетов SDLC (справа):
- Люди и взаимодействие важнее процессов и инструментов
- Рабочее программное обеспечение, а неисчерпывающая документация
- Сотрудничество с клиентами вместо переговоров по контракту
- Реагирование на изменения вместо следования плану
Agile также разрушает идею «готового продукта», которая была целью подхода Waterfall. Вместо этого Agile считает, что разработка программного обеспечения является итеративной и поэтапной. С каждой новой версией программного обеспечения заказчик может:
- Выполнять новые функции
- Улучшение существующих функций
Методологии Agile побуждают разработчиков разбивать разработку программного обеспечения на небольшие части, известные как «пользовательские истории». Это подчеркивает ценность Agile для клиента, которая помогает разработчикам:
- Обеспечение более быстрых циклов обратной связи
- Обеспечение соответствия продукта потребностям рынка
Agile также выступает за адаптивное планирование, развивающуюся разработку, раннюю и непрерывную поставку и непрерывное совершенствование — все это позволяет разработчикам быстро и гибко реагировать на изменения потребностей клиентов, программного обеспечения или других внешних факторов.
От Agile к DevOps
Теоретически Agile звучит хорошо.
На самом деле Agile легко спланировать. Это легко рассматривать как философию организационной культуры и общения между командами разработчиков. Такие фреймворки , как Scrum, упрощают внедрение принципов Agile.
Однако на практике Agile не хватает исполнения и доставки. Организации часто соглашаются следовать быстрым циклам выпуска и проводить регулярные встречи Scrum, но считают, что адаптировать Agile сложно.
Одна из причин? Agile как руководящий манифест дает мало практических советов как саму по себе структуру процесса SDLC. Медленный и утомительный процесс управления, неадекватное общение и сотрудничество, отсутствие автоматизации и, что наиболее важно, увеличивающийся разрыв между разработчиками и оперативным персоналом не позволяет организациям стать по-настоящему гибкими.
Вместо этого разработчики в конечном итоге практикуют спринты быстрого Waterfall: разрозненные, последовательные, прерывистые спринты разработки, которые не могут итеративно улучшать отзывы клиентов.
Поскольку ИТ стали важными для бизнеса в 21 веке, возникли две неотложные области: ИТ-операции (ITOps) и операции разработки (DevOps):
- В обязанности ITOps входит обеспечение безопасности, соответствия и надежности.
- DevOps отвечает за разработку и развертывание новых продуктов для конечных пользователей.
В то время как ITOps обеспечивает безопасность для всех бизнес-потребностей, использующих сеть, DevOps идет на границу между гибкостью и тщательным тестированием и коммуникацией, которые сопровождаются развертыванием нового программного обеспечения.
DevOps — это теория, основанная на общении как внутри себя, поскольку разработчики и операторы должны координировать свои действия, так и между другими отделами. DevOps часто взаимодействует с ITOps, чтобы обеспечить безопасную и стабильную среду для тестирования. Их переход к другим командам, таким как маркетинг и обслуживание клиентов, имеет смысл при развертывании нового программного обеспечения.
Совместное использование DevOps и Agile
Сторонники использования обеих теорий в соответствующих бизнес-задачах считают, что DevOps можно рассматривать как расширение Agile. Agile полагается на кросс-функциональные команды, которые обычно включают:
- Дизайнер
- Тестировщик
- Разработчик
DevOps делает еще один шаг вперед, добавляя специалиста по эксплуатации, который может упростить переход от программного обеспечения к развертыванию. Благодаря внутреннему общению DevOps с другими командами, DevOps может помочь автоматизировать процессы и повысить прозрачность для всех команд.
Обратите внимание на сходство между Agile и DevOps:
- Бизнес-фокус. Согласование процесса разработки программного обеспечения с продуктами, ориентированными на пользователя и рынок, помогает повысить ценность бизнеса.
- Сотрудничество. Команды на индивидуальном и групповом уровне должны регулярно общаться, активно преодолевая разрозненность.
- Бережливая философия. Сосредоточьтесь на устранении ненужных процессов, производной Leanи повышении ценности на каждом этапе конвейера SDLC.
- Непрерывные циклы выпуска. Короткие итеративные спринты,которые приводят к непрерывному процессу выпуска. Примите образ мышления и технологические возможности, которые помогут достичь такой гибкости.
- Подход. И Agile, и DevOps — это подходы, а не жестко запрограммированные инструкции для ИТ-организаций.
Учитывая эти сходства, легко увидеть, сколько практик, вытекающих из манифеста Agile, можно считать подмножеством DevOps: сотрудничество, постоянное совершенствование и культура.
Agile или DevOps: контрастирующие моменты
Хотя мы сторонники совместного использования теорий Agile и DevOps, важно понимать, в чем они явно различаются. Давайте посмотрим на несколько контрастирующих моментов.
Скорость
Agile — это быстрое и частое развертывание, но это редко является целью или даже частью цели DevOps.
Создание и развертывание программного обеспечения
Разработка программного обеспечения является неотъемлемой частью Agile, но DevOps занимается надлежащим развертыванием указанного программного обеспечения.
Для справки, DevOps может развертывать программное обеспечение, которое было разработано с использованием любого количества подходов, включая теории Agile и не-Agile, такие как подход Waterfall, который по-прежнему подходит для определенных проектов.
Специализация
Agile — это команда равных возможностей: каждый участник схватки может выполнять любую работу в команде, что предотвращает замедления и узкие места.
DevOps, с другой стороны, предполагает отдельные команды для разработки и эксплуатации. Люди остаются в своих командах, но все они часто общаются.
Коммуникация
Ежедневные неформальные встречи лежат в основе подходов Agile, поэтому каждый член команды может поделиться своим прогрессом, ежедневными целями и указать помощь, когда это необходимо. Эти схватки не предназначены для изучения документации или контрольных точек и показателей; вместо этого они смотрят исключительно на прогресс и любые препятствия на пути к прогрессу.
Встречи DevOps не ежедневные.
Документация
Agile-команды не систематизируют протоколы встреч или другие способы общения, часто предпочитая простые методы работы с ручкой и бумагой.
DevOps серьезно относится к документации, требуя проектной документации и спецификаций для полного понимания выпуска программного обеспечения.
Размер команды
Сохранение малых размеров — основа Agile: чем меньше команда, чем меньше в ней людей, тем быстрее они могут двигаться, даже если они вносят свой вклад в более крупные усилия. В DevOps будет много команд, которые будут работать вместе, и каждая команда сможет реально практиковать разные теории.
Планирование
Agile-команды работают в короткие, заранее определенные промежутки времени, известные как спринты. Спринты редко длятся дольше месяца, а часто могут быть короче недели.
DevOps ценит максимальную надежность, поэтому они ориентируются на долгосрочный график, сводящий к минимуму сбои в работе.
Автоматизация
Автоматизация — это сердце DevOps, поскольку общая цель — свести к минимуму сбои и максимизировать эффективность, особенно при развертывании программного обеспечения. Agile не требует автоматизации.
Инфраструктура как код — еще один пример того, как DevOps оптимизирует коллективные усилия разработчиков и операторов в соответствии с политиками и управлением организации без снижения эффективности производительности конвейера SDLC.
Эти резкие различия напоминают нам, что Agile и DevOps по своей сути не одно и то же.
Культура Agile и DevOps
Хотя Agile не обязательно ведет к DevOps, в обоих случаях могут произойти глубокие культурные сдвиги внутри организации.
Подход Agile способствует изменению наших представлений о разработке. Вместо того, чтобы думать о разработке как о громоздком, Agile-мышление быстро способствует небольшим управляемым изменениям, которые со временем приводят к большим изменениям. Компании любого размера экспериментировали с тем, как гибкая разработка может улучшить работу многих отделов, не только ИТ. Сегодня некоторые предприятия считают себя полностью гибкими.
DevOps также может вносить свои собственные культурные сдвиги в организацию. В том числе улучшать коммуникацию и уравновешивать стабильность с изменениями и гибкостью.
Выбор использования обеих теорий — активное решение, которое, по мнению многих отраслевых экспертов, может привести к более рациональному принятию решений, тем самым улучшив культуру компании.