+7 495 721 1218

DevOps vs Agile: в чем разница?

Этот материал – адаптация DevOps-команды «Онланты» разбора зарубежных коллег. В этой статье мы разберемся, в чем особенности DevOps и Agile и чем они отличаются друг от друга. Поехали!

На раннем этапе разработка программного обеспечения в полной мере не попадала под конкретную модель управления. Далее появился метод Waterfall, идея которого заключалась в том, что разработка ПО определяется временем, необходимым для написания приложения.

Раньше на создание, тестирование и развертку ПО часто уходило много времени из-за отсутствия сдержек и противовесов в производственном процессе. Результатом стало низкое качество ПО с множеством ошибок, а также несоблюдение сроков из-за затянувшихся, долгих планов разработки ПО.


«Водопадные» проекты строятся по модели, называемой треугольником управления проектом. Каждая сторона треугольника представляет собой компонент тройственной ограниченности: объем работы, время и стоимость. Согласно этой модели, стоимость зависит от объема работы и времени, и эти три фактора связаны определенным и предсказуемым образом. Если мы хотим сократить время, мы должны увеличить стоимость. Если необходимо увеличить объем, следует увеличить стоимость или количество часов. 


Переход от Waterfall к Agile


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

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

При Agile используется другой подход: не планируется весь проект, не указываются точные даты и отсутствует строгое соответствие с планом. Agile предлагает и основывается на неопределенности. Методология предполагает реагирование на изменения, а не их игнорирование. Изменения рассматриваются как способ удовлетворения потребностей клиента.


Ценности Agile


Agile регулируется манифестом, в котором определяются 12 принципов:

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

Существуют также четыре основных ценности Agile:

  • Люди и взаимодействия вместо процессов и инструментов;
  • Работающее ПО вместо исчерпывающей документации;
  • Сотрудничество с заказчиками вместо обсуждений условий контракта;
  • Реагирование на изменения вместо следования плану.

Этот подход сильно отличается от строгого плана метода Waterfall. В Agile заказчик является членом команды разработчиков. В «водопадном» подходе он участвует только в начале, когда определяет требования, и в конце, когда рассматривает конечный продукт. Заказчик помогает команде составить критерии приемки и участвует во всем процессе. При этом Agile требует изменений и постоянных улучшений от членов всей организации. Команда разработчиков работает с другими командами, включая менеджеров проекта и тестировщиков. Кто, что и когда делает – это зависит от назначенной роли и обсуждается всей командой.


Разработка ПО по Agile


Разработка ПО по Agile требует адаптивного планирования, поэтапной разработки и доставки конечного продукта. К Agile относятся разные методологии, среды и практики разработки ПО, в том числе:

  • Scrum
  • Kanban (визуальный рабочий процесс)
  • XP (экстремальное программирование)
  • Lean
  • DevOps
  • FDD (разработка с упором на функциональность)
  • TDD (разработка с упором на тестируемость)
  • Crystal
  • DSDM (Метод разработки динамических систем)
  • ASD (Адаптивная разработка ПО)

Эти методологии используются отдельно или совместно при разработке и развертывании ПО. Наиболее распространенными являются Scrum и Kanban (или их комбинация — Scrumban) и DevOps.

Scrum — это среда, в которой команда, состоящая в основном из Scrum-мастера, менеджера продукта и разработчиков, работает как самостоятельно, так и в совместном (перекрестном) режиме для увеличения скорости получения готового продукта и повышения ценности бизнеса клиента. Основное внимание уделяется более быстрым итерациям с меньшими улучшениями.

Kanban — это среда Agile, которая иногда называется системой управления рабочими процессами. За счет своей гибкости она помогает командам визуализировать свою работу и усилить эффективность. Kanban обычно представляется в виде цифровой или физической доски. По мере продвижения работа команды перемещается по шкале, например, от этапа «не начата» к этапу «в процессе», «тестирование» и «завершена». Благодаря Kanban каждый член команды видит состояние всей работы в любое время.


Ценности DevOps


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

DevOps основывается на двух других областях: Lean и Agile. DevOps — это не название и не роль в компании, а обязательство, которое организация или команда берет на себя в отношении постоянного выпуска, развертывания и интеграции продукта. По словам Джина Ким, автора проектов The Phoenix и The Unicorn Project, существует три «пути», которые определяют принципы DevOps:

  • Первый путь: Принципы потока
  • Второй путь: Принципы обратной связи
  • Третий путь: Принципы постоянного обучения


Разработка ПО по DevOps


DevOps не развивается сам по себе. В своей истинной форме методология представляет общую культуру и мышление в отношении разработки ПО и внедрения ИТ.

DevOps — это автоматизация, облачные решения, микросервисы. В интервью о книге «Ускоряйся! Создание и масштабирование высокотехнологичных организаций» авторы Николь Форсгрен, Джез Хамбл и Джин Ким рассказали, что из себя представляет DevOps:

  • Эффективность поставки ПО имеет значение. Она оказывает существенное влияние на прибыль, долю рынка, качество, удовлетворенность клиентов, достижение цели и задач организации;
  • Компании с высокой эффективностью достигают высокой скорости разработки, стабильности, качества без необходимости чем-то жертвовать;
  • Можно улучшить эффективность путем реализации принципов DevOps и практики Lean и Agile;
  • Реализация данных практик и возможностей также влияет на культуру организации. Она влияет как на эффективность ПО, так и на производительность организации;
  • Необходимо много работать, чтобы понять, как улучшить эффективность.


DevOps vs Agile


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

Сходства

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

Различия

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

Devops Agile таблица.jpg

Agile и DevOps различаются между собой, однако их сходства заставляют людей думать, будто это одно и то же. Из-за таких суждений Agile и DevOps не рассматривают всерьез.

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

Agile и DevOps ни в коем случае не соперники друг другу (по крайней мере поводов пока нет). Они скорее союзники, чем враги в революции «гибких» методологий. Agile и DevOps могут работать эксклюзивно и инклюзивно, что позволяет им существовать в одном пространстве.

Была ли полезна статья?
Расскажите друзьям: