Agile или DevOps: полное сравнение

Agile или DevOps Изучение

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 также выступает за адаптивное планирование, развивающуюся разработку, раннюю и непрерывную поставку и непрерывное совершенствование — все это позволяет разработчикам быстро и гибко реагировать на изменения потребностей клиентов, программного обеспечения или других внешних факторов.

Читайте также:  Руководство по безопасности React.js: угрозы, уязвимости и способы их устранения

От 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 также может вносить свои собственные культурные сдвиги в организацию. В том числе улучшать коммуникацию и уравновешивать стабильность с изменениями и гибкостью.

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

Оцените статью
bestprogrammer.ru
Добавить комментарий