Переключение функций - Википедия - Feature toggle

А переключение функций (также переключатель функций, флаг функции, функция флиппер, условный признаки т. д.) - это техника в разработка программного обеспечения который пытается предоставить альтернативу поддержанию нескольких ветви в исходный код (известные как ветви функций), так что функция программного обеспечения возможно проверено еще до того, как он будет завершен и готов к релиз. Переключатель функций используется, чтобы скрыть, включить или отключить функцию во время время выполнения. Например, в процессе разработки разработчик может включить функцию для тестирования и отключить ее для других пользователей.[1] Таким образом, флаги функций могут использоваться для реализации целевого развертывания функций для определенных подмножеств пользователей - практика, известная как стробирование функций.[2]

Непрерывный выпуск и непрерывное развертывание оперативно предоставлять разработчикам отзывы об их кодировании. Это требует внесения изменений в их код как можно раньше. Ветви функций позволяют обходить этот процесс.[3] Переключение функций - важный метод, используемый для реализации непрерывная доставка.

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

Выполнение

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

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

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

Переключатели функций можно использовать в следующих сценариях:[1]

  • Добавление новой функции в приложение.
  • Улучшение существующей функции в приложении.
  • Скрытие или отключение функции.
  • Расширение интерфейса.

Переключатели функций могут быть сохранены как:[5]

  • Записи строк в базе данных.
  • Свойство в файле конфигурации.
  • Запись во внешней службе флага функции.

Группы функций

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

Канарейка

Еще одно преимущество флагов функций - канареечные запуски. Канареечный выпуск (или канареечный запуск, или канареечное развертывание) позволяет разработчикам постепенно тестировать функции небольшой группой пользователей. Если производительность функции неудовлетворительна, ее можно откатить без каких-либо побочных эффектов.[7]

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

Переключение функций используется на многих крупных веб-сайтах, включая Flickr,[9] Disqus,[10] Etsy,[11] Reddit[12] Gmail[13] и Netflix, [14] а также программное обеспечение, такое как Google Chrome Canary.

Смотрите также

Рекомендации

  1. ^ а б «Рейнджеры ALM - Разработка программного обеспечения с переключателями функций». msdn.microsoft.com.
  2. ^ «Флаги функций (также известные как переключатели функций)». optimizely.com. Получено 14 июля 2020.
  3. ^ «Флаги функций для мобильных приложений - Apptimize». apptimize.com. Архивировано из оригинал 18 сентября 2016 г.. Получено 9 января 2017.
  4. ^ Программирование приложений JavaScript. Архивировано из оригинал на 2016-09-15. Получено 2016-09-14.
  5. ^ Эчагуэ, Пато (2014). Управление флагами функций. O'Reilly Media. ISBN  9781492028598 - через https://www.oreilly.com/library/view/managing-feature-flags/9781492028598.
  6. ^ Эллиот, Эрик (2018). Программирование приложений JavaScript. O'Reilly Media.
  7. ^ «Канарские запуски - как и зачем выпускать канарейки». launchdarkly.com. 7 апреля 2015 г.. Получено 9 января 2017.
  8. ^ Мартин Фаулер, 29 октября 2010 г. (2010-10-29). "FeatureToggle". Martinfowler.com. Получено 2013-09-27.
  9. ^ Хармс, Росс. "Вытягивание - code.flickr.com". flickr.net. Получено 9 января 2017.
  10. ^ dcramer (9 июля 2010 г.). «Частичное развертывание с переключением функций». Архивировано из оригинал на 2013-11-05. Получено 2013-10-10.
  11. ^ «Как Etsy управляет разработкой и операциями?». codeascraft.com. 4 февраля 2011 г.. Получено 9 января 2017.
  12. ^ "Reddit / Reddit". github.com. Получено 9 января 2017.
  13. ^ «Разработка нового внешнего вида Gmail». googleblog.com. Получено 9 января 2017.
  14. ^ «Подготовка Netflix API к развертыванию». netflix.com. Получено 9 января 2017.