Принципы непрерывной поставки
Узнайте базовые принципы, лежащие в основе непрерывной поставки, с помощью этих руководств по началу работы.
Непрерывная поставка (сокращенно CD) — это широкий набор зарекомендовавших себя подходов к agile-разработке и организации команд. CD служит для создания оптимального автоматизированного процесса выпуска ПО. В его основе лежит итеративный цикл обратной связи. Он нужен для того, чтобы как можно быстрее поставить ПО конечному пользователю, изучить его практический опыт, а затем использовать полученные выводы в следующем релизе.
Непрерывная интеграция, непрерывная поставка или непрерывное развертывание?
Для обеспечения непрерывной работы сервиса необходимо согласовать структуру, ценности и инструменты команды, чтобы основной компетенцией стало высокое качество работы. Прочитать статью
Коммерческая ценность непрерывной поставки
Ценность непрерывной поставки для бизнеса не ограничивается одной лишь технической стороной. CD повышает скорость, производительность и предсказуемость результатов в командах разработчиков ПО. Прочитать статью
Построение карт потоков создания ценности
Систематизация потока ценности — это метод анализа, помогающий оптимизировать конвейер непрерывной поставки. Узнайте, как и для чего используется этот метод. Прочитать статью
Методика непрерывной поставки (CD) применяется во всей организации и предусматривает участие команд, не связанных с разработкой напрямую, например отделов проектирования, планирования и маркетинга. В рамках CD разработчики стремятся создать продукт для конечного пользователя, тогда как в средах с другим подходом разработка порой оказывается оторвана от реальности: главной аудиторией, на которую разработчики ориентируются при создании пользовательского интерфейса, становится команда контроля качества. В следующих разделах рассматриваются конкретные принципы, лежащие в основе рабочих процессов непрерывной поставки.
Надежный воспроизводимый процесс
Организационные процессы имеют собственный жизненный цикл разработки. Они обычно начинаются со списков задач или сборников сценариев, которые необходимо выполнять вручную. На более поздних этапах их можно автоматизировать с помощью программных инструментов и скриптов. Зафиксировав эти инструкции в программных скриптах, вы обеспечите их воспроизводимость. Если необходимо выполнить пункты контрольного списка снова, участник команды может запустить скрипт. Надежность достигается в том случае, когда эти скрипты согласованно выполняются в разных средах. Например, в инструкции по развертыванию кода в среде разработки или промежуточной среде необходимо как можно точнее имитировать рабочую среду. Благодаря такой надежной согласованности между средами и запусками можно устранить целый класс соответствующих багов.
Автоматизируйте все
Автоматизация — это основная ценность CD. Человеческое время стоит дорого, поэтому его следует разумно тратить на творческую деятельность, а не на утомительные задачи, выполняемые по заранее написанным инструкциям. Ручной процесс становится по-настоящему воспроизводимым и надежным, лишь когда он преобразован в код и автоматически выполняется по требованию. Автоматизированные задачи можно объединять в нужной последовательности, создавая дополнительные уровни автоматизации. Автоматизируйте как можно больше задач: тесты, релизы, изменения конфигурации и многое другое.
Контроль версий
Основной принцип непрерывной поставки — контроль версий. Без него в серьезном проекте по разработке ПО не обойтись. Благодаря контролю версий команда разработчиков может вести совместную работу над общей базой кода. Самая популярная система контроля версий, совместимая с методикой непрерывной поставки, — это Git. Контроль версий позволяет отменить изменения, откатив сборку к прошлой предвыпускной версии. Контроль версий должен быть реализован не только для кода, но и для конфигураций, скриптов, баз данных и документации. Это дает возможность отслеживать историю изменений.
Создавайте качественный продукт
При непрерывной поставке качество — это не последний фактор в списке, за который отвечает только команда контроля качества. Качество обеспечивается на каждом этапе конвейера релизов. Цикл обратной связи, лежащий в основе системы непрерывной поставки, предусматривает постоянную переоценку качества продукта, поставляемого конечным пользователям. Новый функционал перед поставкой проходит серию автоматизированных тестов, позволяющих убедиться в том, что код не содержит багов и соответствует требованиям к качеству. При планировании релиза новых возможностей следует закладывать время на анализ, мониторинг производительности и автоматическое тестирование.
Сначала делайте самое сложное
Трудоемкие и затратные по времени задачи, связанные с высоким риском ошибок, имеют свойство накапливаться с течением времени. Такие задачи следует решать в первую очередь, чтобы избежать снижения производительности из-за их накопления. Представьте, что неприятная задача отнимает по 20 минут в день пять раз в неделю. Это 100 неприятных минут в неделю, примерно 400 неприятных минут в месяц и т. д. А теперь представьте, что процесс можно оптимизировать и перестать тратить время на эту задачу. Разумеется, это очень выгодно.
Принцип «Сначала делайте самое сложное» помогает выявлять слабые места организационного процесса. Если какую-либо задачу откладывают на потом или активно избегают — чаще всего это знак, что в этом месте есть что совершенствовать, и над этим нужно активно работать. Командам необходимо регулярно уделять время сложным вопросам, чтобы оставаться в курсе дел и выдвигать эти вопросы на первый план при обсуждении дальнейших действий.
Ответственность несут все
Вся организация должна быть сориентирована и мотивирована таким образом, чтобы конечный пользователь получал результат как можно более высокого качества. Менеджерам по продукту нужно планировать работу, уделяя должное внимание развертыванию и контролю качества. Команда по обеспечению безопасности должна активно привлекаться к процессу выпуска релизов. Участники команды контроля качества должны тестировать среду разработки и промежуточную среду так же тщательно, как и рабочую среду, чтобы отлавливать все сбои до того, как выйдет финальный релиз. Разработчики должны активно участвовать в планировании релизов в рабочую среду.
«Сделано» значит выпущено.
Бизнес компаний-разработчиков ПО заключается в поставке ПО конечным пользователям. Такой бизнес невозможен, если приложение работает исключительно на компьютере одного разработчика. Фраза «У меня это работает!» должна настораживать, поскольку она обозначает отсутствие понимания общей цели бизнеса и сопереживания конечному пользователю. А идея непрерывной поставки полностью сосредоточена на поставке ПО конечному клиенту. Кроме того, «готово» — это не когда готов объем работы отдельного участника команды, а когда готова совместная работа всей команды.
Непрерывное совершенствование
Ценность непрерывной поставки
Надеемся, после прочтения предыдущих разделов у вас уже начало складываться представление о практической пользе непрерывной поставки для организации в целом. На макроуровне непрерывная поставка повышает эффективность процессов и взаимодействия команд, гибкость и прозрачность в масштабах всей организации, а также позволяет точно адаптировать продукт к особенностям рынка.
На микроуровне CD можно дополнить инструментом измерения метрик явного отслеживания. Некоторые полезные метрики CD перечислены ниже.
- Время от этапа проектирования новой возможности до ее выпуска в рабочую среду.
- С каким количеством багов рабочей версии сталкиваются пользователи.
- Уровень взаимодействия пользователей с новыми возможностями.
- Частота выпуска новых возможностей
Кроме того, CD можно использовать как основу для создания показателей эффективности работы организации, таких как KPI. А общая прибыль бизнеса и его финансовое благополучие являются отличными критериями для измерения эффективности организационных подходов.
Начало работы с непрерывной поставкой
Познакомившись с преимуществами и принципами непрерывной поставки, вы можете переходить к ее реализации. Начать лучше с непрерывной интеграции. Непрерывная интеграция (или CI) — это первый этап непрерывной поставки. Целью CI является автоматизация процесса релизов. Это достигается за счет использования инструментов автоматического тестирования кода и заданий по контролю качества. После того как CI будет реализована, на ее основе можно создавать процессы CD, чтобы обеспечить развертывание кода для конечных пользователей, а также разработать цикл обратной связи для управления будущими релизами.
Следующая тема
Рекомендуемые статьи
Добавьте эти ресурсы в закладки, чтобы изучить типы команд DevOps или получать регулярные обновления по DevOps в Atlassian.