Что такое шаблоны развертывания?

Завершено

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

В этом разделе вы узнаете о некоторых распространенных шаблонах развертывания. Вы также узнаете, как служба приложение Azure поможет реализовать шаблон, который выбирает команда Tailspin.

Утреннее собрание

Команда Tailspin чувствует себя хорошо. Их конвейер ускорил свой процесс. Команда имеет среду разработки, в которой они могут интегрировать веб-приложение с базой данных. Тим и Амита рады иметь автоматизированные тесты, которые упрощают свои рабочие места. Как правило, они видят меньше задержек и меньше ошибок.

Но есть, как всегда, проблема. Давайте попадем на собрание команды, где Тим говорит.

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

Энди: Кофе является важным для эффективного решения проблем, без сомнения.

Я думаю, что необходимое решение является хорошим шаблоном развертывания. Шаблон развертывания — это автоматизированный способ выполнения переключений. Это то, как мы переместим программное обеспечение с окончательной предварительной стадии в динамическую рабочую среду.

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

Энди начинает писать на доске.

Ниже приведены возможности, которые мы должны рассмотреть:

  • "Сине-зеленое" развертывание
  • Канареарные выпуски
  • Переключатели компонентов
  • Темные запуски
  • Тестирование А/Б
  • Развертывание прогрессивной экспозиции

Давайте кратко обсудим каждый шаблон.

Сине-зеленые развертывания

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

Diagram of a load balancer distributing traffic in a blue-green deployment.

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

Развертывание blue-green также дает нам быстрый способ выполнить откат. Если что-то идет не так в зеленой среде, то мы просто переключим маршрутизатор обратно в синюю среду.

Канареарные выпуски

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

Diagram of a load balancer sending traffic to a canary version.

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

Переключатели компонентов

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

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

Diagram of a coded if statement for an on-off feature.

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

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

Темные запуски

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

Diagram of a load balancer sending traffic to the new feature.

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

Тестирование А/Б

Тестирование A/B сравнивает две версии веб-страницы или приложения, чтобы определить, какой из них работает лучше. Тестирование A/B похоже на классический эксперимент.

Diagram of two apps and their analytics.

В тестировании A/B мы случайно показываем пользователей двумя или более вариантами страницы. Затем мы используем статистический анализ, чтобы решить, какой вариант лучше подходит для наших целей.

Развертывание прогрессивной экспозиции

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

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

Diagram of a progression of larger groups.

В кольцевом развертывании сначала мы развертываем изменения в терпимых клиентах к рискам. Затем мы постепенно развертываем более широкий набор клиентов.

Реализация сине-зеленого развертывания

Энди смотрит на Тима.

Энди: Это много, я знаю. Вы хотите занять некоторое время, чтобы подумать об этом? Или ты и я мог...

Тим: Синий зеленый.

Все в комнате смеются.

Мара: Это кофе говорить?

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

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

Таким образом, вопрос заключается в том, как мы реализуем сине-зеленое развертывание в нашем конвейере?

Что такое слоты развертывания?

Энди: Так как мы используем службу приложение Azure, мы можем воспользоваться слотами развертывания. Слоты развертывания выполняют приложения с собственными именами узлов.

Я знаю, что мы еще не готовы развернуть веб-сайт Space Game в рабочей среде в рамках автоматизированного конвейера. Но в качестве теста мы можем добавить слот развертывания в промежуточную среду.

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

Diagram of applications swapping IP addresses.

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

Тим: Мне нравится это! Вы можете вызвать этот вариант сине-зеленого развертывания, чтобы развернуть нулевое время простоя.

Энди: Здорово! Тим и я буду работать над реализацией этого шаблона развертывания. Мы все можем встретиться позже, чтобы увидеть результаты.

Рекомендации по использованию флагов функций

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

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

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

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

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

Проверьте свои знания

1.

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

2.

У вас есть новая функция для веб-сайта, и вы готовы развернуть ее. Однако эта функция рискует, так как она изменяет способ взаимодействия пользователей с сайтом. Какие шаблоны развертывания можно использовать для выпуска для небольшой группы ранних пользователей, которые зарегистрировались для просмотра новых функций?

3.

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