Поддержка внедрения с помощью цифровых изобретений

Окончательная проверка инноваций заключается в реакции клиента на ваше изобретение. Ваша гипотеза оказалась верной? Клиенты используют решение? Масштабируется ли оно в соответствии с потребностями нужного процента пользователей? И самое важное, продолжают ли они его использовать? Ни один из этих вопросов не стоит задавать, пока не будет развернут продукт с минимальной функциональностью (MVP).

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

Устраните барьеры CI/CD, влияющие на внедрение

Некоторые препятствия по внедрению можно устранить с помощью сочетания технологий и процессов. Для читателей, знакомых с процессами CI/CD или DevOps, следующие процессы конвейера CI/CD будут не в новинку. Эта статья поможет создать отправную точку для специалистов по внедрению облака, которые создают инновации и циклы обратной связи. Эта отправная точка послужит более надежным подходом к непрерывной интеграции и переходу на DevOps по мере развития продуктов и команд.

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

Поддержка внедрения и цифровые изобретения: модель зрелости

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

Схема, показывающая модель зрелости внедрения возможностей.

Чтобы свести к минимуму технические сложности, следует предположить, что зрелость реализации этих принципов изначально будет низкой. Планируйте заранее, согласуя ваши действия с инструментами и процессами, которые могут масштабироваться по мере того, как гипотеза становится более детализированной. В Azure службы GitHub и Azure DevOps позволяют небольшим командам легко начать работу. Эти команды могут расширяться до тысяч разработчиков, которые совместно работают над масштабируемыми решениями и проверяют сотни гипотез. Оставшаяся часть этой статьи посвящена подходу «планируйте масштабно, начинайте с малого», позволяющему повысить эффективность внедрения этих принципов.

Совместно используемое решение

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

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

Наиболее распространенный инструмент CI/CD для управления репозиториями кода — это GitHub, который позволяет создать репозиторий с общим кодом всего за несколько шагов. Кроме того, можно использовать функцию Azure Repos службы Azure DevOps для создания репозитория Git или TFVC.

Циклы обратной связи

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

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

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

Непрерывная интеграция

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

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

Службы Azure DevOps и Azure Pipelines предоставляют возможности непрерывной интеграции всего за несколько шагов в GitHub или других репозиториях. Дополнительные сведения см. в статье Что такое непрерывная интеграция? или в практической лабораторной работе по непрерывной интеграции. Доступны архитектуры решений, которые могут ускорить создание конвейеров CI/CD с помощью Azure DevOps.

Надежное тестирование

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

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

Функция Azure Test Plans предоставляет инструменты для разработки и применения планов тестирования во время выполнения тестов вручную или автоматически.

Развертывание решения

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

Существует несколько способов развертывания решения. Наиболее распространены следующие три.

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

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

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

На любом этапе проверки гипотез службы Azure DevOps и Azure Pipelines обеспечивают непрерывную поставку и возможности непрерывного развертывания. Узнайте больше о непрерывной поставке или ознакомьтесь с практическим занятием. Архитектура решения может также ускорить создание конвейеров CI/CD с помощью Azure DevOps.

Интегрированные измерения

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

Служба Azure Monitor предоставляет средства и интерфейс для получения и просмотра данных от клиентов. Вы можете применить эти наблюдения и аналитические сведения для уточнения невыполненной работы с помощью Azure Boards.

Дальнейшие действия

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