Какие есть способы отделить развертывание от выпуска?

13

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

Я знаю, что могут быть использованы для этого, но мне интересно, есть ли другие методы для «не-функций».

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

А как насчет визуальных изменений? Например, можете ли вы реализовать что-то вроде флага функции в CSS? Это вообще имеет смысл?

Фабиан Шменглер
источник
Пит Ходжсон много писал о различных категориях переключателей функций, включая исправления ошибок и другие ситуации, когда они подходят. martinfowler.com/articles/feature-toggles.html
Евгений,

Ответы:

7

Для программного обеспечения в категории веб-приложений, в зависимости от вашего провайдера инфраструктуры / хостинга, такая развязка может позволить переключать входящий трафик между (или разделять его) между различными развернутыми версиями sw, практически охватывая любые упомянутые вами изменения: исправления ошибок, визуальные эффекты , и т.д.

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

Например, предложение Paas от Google App Engine имеет поддержку разделения трафика и миграции.

От разделения трафика :

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

От миграции трафика :

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

Дэн Корнилеску
источник
5

Хотя с монолитами вы можете быть ограничены коммутаторами, с микросервисными архитектурами вы можете разделить каждый пул развертывания узлов, предоставляющих услугу (т. Е. Pods). Затем вы активируете развертывание недавно измененного продукта в подмножестве пула и тщательно контролируете его; Вы даже можете выбрать, какой объем пула развернуть изменение, например, активировать изменение для 15% трафика. Вы можете найти функцию, называемую «обновляемое обновление» в литературе.

ᴳᵁᴵᴰᴼ
источник