Закрыть

Принципы непрерывной поставки

Узнайте базовые принципы, лежащие в основе непрерывной поставки, с помощью этих руководств по началу работы.

Принципы непрерывной поставки

Непрерывная поставка (сокращенно CD) представляет собой широкий набор зарекомендовавших себя подходов к agile-разработке и организации команд. CD ориентирует организацию на создание оптимального автоматизированного процесса выпуска релизов ПО. В основе процесса выпуска лежит итеративный цикл обратной связи. Цикл обратной связи заключается в том, чтобы как можно быстрее поставить ПО конечному пользователю, изучить его практический опыт, а затем внедрить полученные выводы в следующий релиз.

Статьи о непрерывной поставке

[ПРОДОЛЖЕНИЕ]

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

Схема, иллюстрирующая непрерывный поток компьютерного кода и рабочих задач. | CI/CD Atlassian

Надежный воспроизводимый процесс

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

Автоматизируйте все

Автоматизация — это основная ценность CD. Человеческое время стоит дорого, и его следует разумно тратить на творческую деятельность, а не на утомительные задачи, выполняемые по заранее написанным инструкциям. Ручной процесс становится по-настоящему воспроизводимым и надежным, лишь когда он преобразован в код и автоматически выполняется по требованию. Автоматизированные задачи можно объединять в нужной последовательности, создавая дополнительные уровни автоматизации. Поэтому автоматизируйте как можно больше задач: тесты, релизы, изменения конфигурации и многое другое.

Контроль версий

Основной принцип непрерывной поставки — контроль версий. Без него в серьезном проекте по разработке ПО не обойтись. Благодаря контролю версий команда разработчиков может вести совместную работу над общей базой кода. Самая популярная система контроля версий, совместимая с методикой непрерывной поставки, — это Git. Контроль версий позволяет отменить изменения, откатив сборку к прошлой предвыпускной версии. Контроль версий должен быть реализован не только для кода, но и для конфигураций, скриптов, баз данных и документации. Это дает возможность отслеживать историю изменений.

Создавайте качественный продукт

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

Сначала делайте самое сложное

Трудоемкие затратные по времени задачи, связанные с высоким риском совершения ошибок, имеют свойство накапливаться с течением времени. Такие задачи следует решать в первую очередь, чтобы избежать снижения производительности из-за их накопления. Представьте, что неприятная задача отнимает 20 минут в день пять раз в неделю. Это 100 неприятных минут в неделю, 400 неприятных минут в месяц и т. д. Если бы удалось оптимизировать процесс таким образом, чтобы не тратить время на выполнение неприятных задач, вы несомненно оказались бы в выигрыше.

Принцип «Сначала делайте самое сложное» помогает выявлять слабые места организационного процесса. Если какую-либо задачу откладывают на потом или активно избегают — чаще всего это знак, что в этом месте есть что совершенствовать, и над этим нужно активно работать. Командам необходимо регулярно уделять время сложным вопросам, чтобы оставаться в курсе дел и выдвигать эти вопросы на первый план при обсуждении дальнейших действий.

Ответственность несут все

Вся организация должна быть сориентирована и мотивирована таким образом, чтобы конечный пользователь получал результат как можно более высокого качества. Менеджерам по продукту нужно планировать работу, уделяя должное внимание развертыванию и контролю качества. Команда по обеспечению безопасности должна активно привлекаться к процессу выпуска релизов. Участники команды контроля качества должны тестировать среду разработки и промежуточную среду так же тщательно, как и рабочую среду, чтобы отлавливать все сбои до того, как выйдет финальный релиз. Разработчики должны активно участвовать в планировании релизов в рабочую среду.

Члены команды проводят совместную проверку кода перед релизом. | CI/CD Atlassian

«Сделано» значит выпущено.

Бизнес компаний-разработчиков ПО заключается в поставке ПО конечным пользователям. Такой бизнес невозможен, если приложение работает исключительно на компьютере одного разработчика. Фраза «У меня это работает!» должна настораживать, поскольку она обозначает отсутствие понимания общей цели бизнеса и сопереживания конечному пользователю. А идея непрерывной поставки полностью сосредоточена на поставке ПО конечному клиенту. Кроме того, «готово» — это не когда готов объем работы отдельного участника команды, а когда готова совместная работа всей команды.

Непрерывное совершенствование

Методика CD не заканчивается на этапе развертывания. Как уже говорилось ранее, основой CD является цикл обратной связи. Это означает, что после развертывания наступает дополнительный этап мониторинга и измерения эффективности этого развертывания. На этом этапе снова используются автоматизированные инструменты, позволяющие измерить влияние развертывания на конечного пользователя. Осуществляется мониторинг таких очевидных показателей, как доходы бизнеса, а также, с целью выявления корреляции, измеряются более подробные показатели, например конверсия пользователей и время взаимодействия пользователей с продуктом.

Ценность непрерывной поставки

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

На микроуровне CD можно дополнить инструментом измерения метрик явного отслеживания. Некоторые полезные метрики CD перечислены ниже.

  • Время от этапа проектирования новой возможности до ее выпуска в рабочую среду.
  • С каким количеством багов рабочей версии сталкиваются пользователи.
  • Уровень взаимодействия пользователей с новыми возможностями.
  • Частота выпуска новых возможностей

Кроме того, CD можно использовать как основу для создания показателей эффективности работы организации, таких как KPI. А общая прибыль бизнеса и его финансовое благополучие являются отличными критериями для измерения эффективности организационных подходов.

Начало работы с непрерывной поставкой

Познакомившись с преимуществами и принципами непрерывной поставки, вы можете переходить к ее реализации. Начать лучше с непрерывной интеграции. Непрерывная интеграция (или CI) — это первый этап непрерывной поставки. Целью CI является автоматизация процесса релизов. Это достигается за счет использования инструментов автоматического тестирования кода и заданий по контролю качества. После того как CI будет реализована, на ее основе можно создавать процессы CD, чтобы обеспечить развертывание кода для конечных пользователей, а также разработать цикл обратной связи для управления будущими релизами.

Макс Рекопф
Макс Рекопф

Я считал себя хаотичным раздолбаем, но когда открыл для себя agile, я словно включил свет в темной комнате. Мне небезразлично дальнейшее развитие сферы моей деятельности, и я верю, что практики agile и lean ждет будущее с хорошей теоретической базой, но свободное от догматизма. Вы можете связаться со мной через Twitter (@maxrehallday) и Medium (@maxreh).