LeadStartup
Получите бесплатно — все материалы с наших курсов
Тренинги, Курсы, Обучение — Agile, Scrum, OKR
Тренинги, Курсы, Обучение — Agile, Scrum, OKR
Тренинги, Курсы, Обучение — Agile, Scrum, OKR
Mikhail Ryazhenka
Mikhail Ryazhenka
Founder, Executive Partner

Разберитесь в основах Continuous Delivery, методологии, позволяющей ускорить и оптимизировать процесс доставки обновлений для программного обеспечения.

Continuous Delivery — это непрерывная поставка продукта, в основе этого процесса лежит работа короткими итерациями, циклами. Этот подход к разработке позволяет очень эффективно тестировать гипотезы и за счет этого добиваться потрясающих бизнес результатов.

Что такое Continuous Delivery

Непрерывная поставка продукта, в основе этого процесса лежит работа короткими итерациями, циклами. Используется работа по циклу Деминга и HADI циклу.

Зачем нужен Continuous Delivery

Этот подход к разработке позволяет очень эффективно тестировать гипотезы и за счет этого добиваться потрясающих бизнес результатов.

Как внедрить Continuous Delivery

Начните выделять циклы Continuous Delivery в своей работе. Начните тестировать гипотезы (например, делать А/Б тесты). Сфокусируйтесь на том, чтобы проверять гипотезы как можно чаще.

Что такое Continuous Delivery (v2)

Цель работы по принципам Continuous Delivery — более быстрые и частые поставки новых продуктов или функций, при этом безопасно и надежно.

Зачем нужна непрерывная поставка и зачем она нужна? Она позволяет снизить время и стоимость разработки, повышает качество продукта, позволяет собирать обратную связь.

Визуально процесс работы по Continuous Delivery можно представить следующим образом:

То есть, сюда включены все классические этапы релиза, без этого не так. Но важно то, что этот процесс является циклическим и непрерывным. На картинке этого не отразить, но важно также то, что изменения здесь могут быть любыми, в том числе очень маленькими.

Все это достигается за счет автоматизации основных процессов, связанных с разработкой.

Все это позволяет делать поставки быстрее и чаще, и сфокусироваться на сборе обратной связи от пользователей, что в конечном счете позволяет делать продукт еще лучше.

Основные принципы Continuous Delivery

  • Код всегда находится в развернутом состоянии. Даже если с ним работают сотни программистов ежедневно. Таким образом, процесс интеграции и тестирования как таковые могут полностью исчезнуть.

  • Больше автоматизации. Чтобы обеспечить непрерывную и быструю поставку, нам нужно максимально автоматизировать то, что может быть автоматизировано. Именно за счет автоматизации можно будет вносить даже совсем маленькие изменения.

  • Код всегда должен быть доступен для релиза, по требованию. В подходе Continuous Delivery, в отличие от Continuous Deployment, релизы происходят мануально, вручную. Однако пишется таким образом, чтобы его потенциально всегда можно было пустить в релиз.

Преимущества Continuous Delivery

  • Релизы с низкими рисками. Поскольку код всегда доступен для релиза, и изменения всегда относительно небольшие (за счет быстрой поставки всех возникающих изменений).

  • Быстрый Time To Market. Быстрые поставки приводят к быстрому получению ценности бизнесом и клиентом. Кроме того, сам факт того, что поставка происходит короткими циклами, это снижает риск того, что нам придется все переделывать, что займет много времени.

  • Снижение стоимости разработки. Любой продукт непрерывно совершенствуется с течением времени. Инвестируя в автоматизацию таких вещей, как билд, тестирование, развертывание — мы снижаем большое количество затрат, связанных с инкрементальными изменениями, вносимыми в продукт.

  • Продукт становится лучше. За счет того, что мы собираем обратную связь с пользователей и принимаем решения на основе данных (как обратной связи, так и данных, например, А/Б тестирования) — мы можем избежать многих изменений продукта, которые имеют нулевую или отрицательную ценность.

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

  • Больше счастья команды. Непрерывная поставка снижает выгорание команд. Потому что уменьшаются боли, связанными с релизами. А за счет быстрых релизов команда может лучше взаимодействовать с пользователями и получать обратную связь о том, что работает, а что — нет. То есть команда может сосредоточиться на том, о чем она заботится больше всего — на том, чтобы восхищать пользователей.

«А это вообще нормально?»

Может показаться, что быстрые и частые поставки приводят к тому, что итоговое качество кода и продукта в целом оказывается хуже, и также что созданные таким образом системы менее стабильны и надежны.

Однако, это не так.

Исследования, которые проводили Nicole Forsgren, Gene Kim и Jez Humble показывают, что:

Так что да, непрерывно поставлять — это нормально, и даже более того, это полезно.

Чем лучше у вас будет внедрен Continuous Delivery, тем больше ценности получит ваш бизнес и ваши клиенты, и тем счастливее будет ваш персонал.

Связь Continuous Delivery и DevOps

Подход Continuous Delivery во многом похож на DevOps, но тем не менее это разные практики.

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

Continuous Delivery не фокусируется на культуре. Скорее, это инструмент, который позволяет сделать сам процесс поставки более быстрым и частым. В том числе за счет автоматизации.

Continuous Delivery может органично «перетекать» в DevOps, и DevOps может начинаться с практик непрерывной поставки.

Continuous Delivery - кратко

Пусть вам не покажется, что Continuous Delivery это магия и легкое решение. Скорее всего придется проделать серьезную работу, чтобы внедрить эту практику в компанию.

Continuous Delivery — это про частые и непрерывные изменения, не только в продукте, но и в том способе, котором вы его разрабатываете. Этот подход фокусируется на процессе разработки, чтобы сделать его более оптимизированным и рациональным.