stringtranslate.com

Переключение функций

Переключатель функций в разработке программного обеспечения предоставляет альтернативу поддержанию нескольких ветвей функций в исходном коде . Условие в коде включает или отключает функцию во время выполнения . В гибких настройках переключатель используется в производстве для включения функции по требованию для некоторых или всех пользователей. Таким образом, переключатели функций действительно облегчают частый выпуск . Продвинутые стратегии развертывания, такие как канареечное развертывание и A/B-тестирование , проще в использовании. [1] [2]

Непрерывная поставка поддерживается переключателями функций, даже если новые релизы не развертываются в производстве непрерывно . Функция интегрируется в основную ветвь еще до ее завершения. Версия развертывается в тестовой среде один раз, переключатель позволяет включить функцию и протестировать ее. Циклы интеграции программного обеспечения становятся короче, и может быть предоставлена ​​версия, готовая к запуску в производство. [3]

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

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

Выполнение

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

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

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

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

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

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

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

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

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

Принятие

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

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

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

Ссылки

  1. ^ ab "ALM Rangers - Разработка программного обеспечения с переключением функций". msdn.microsoft.com .
  2. ^ ab Martin Fowler 29 октября 2010 (2010-10-29). "FeatureToggle". Martinfowler.com . Получено 2013-09-27 .{{cite web}}: CS1 maint: numeric names: authors list (link)
  3. ^ Как GitHub использует флаги функций для быстрой и безопасной отправки, infoq, 09.05.2021.
  4. ^ Программирование приложений JavaScript. Архивировано из оригинала 2016-09-15 . Получено 2016-09-14 .
  5. ^ Эчагуэ, Пато (2014). Управление флагами функций . О'Рейли Медиа. ISBN 9781492028598.
  6. ^ Эллиот, Эрик (2018). Программирование приложений JavaScript . O'Reilly Media.
  7. ^ "Как выполнить Canary Release / Progressive Delivery с помощью ConfigCat | Блог ConfigCat". configcat.com . 2022-02-09 . Получено 2022-12-22 .
  8. ^ «Тестирование Canary — использование сине-зеленых развертываний и флагов функций». unlaunch.io . 26 февраля 2021 г. . Получено 14 августа 2021 г. .
  9. ^ "Canary launches – how and why to canary release". launchdarkly.com . 7 апреля 2015 г. Получено 9 января 2017 г.
  10. ^ Хармс, Росс. "Flipping Out - code.flickr.com". flickr.net . Получено 9 января 2017 г. .
  11. ^ dcramer (9 июля 2010 г.). "Частичное развертывание с переключением функций". Архивировано из оригинала 2013-11-05 . Получено 2013-10-10 .
  12. ^ «Как Etsy управляет разработкой и операциями?». codeascraft.com . 4 февраля 2011 г. Получено 9 января 2017 г.
  13. ^ "reddit/reddit". github.com . Получено 9 января 2017 г. .
  14. ^ "Разработка нового облика Gmail". googleblog.com . Получено 9 января 2017 г. .
  15. ^ "Подготовка API Netflix к развертыванию". netflix.com . Получено 9 января 2017 г. .
  16. ^ Вулф, Майк (2022-05-30). «Office FeatureGates: как Microsoft может сломать и исправить свои приложения менее чем за 24 часа». nolongerset.com . Получено 2024-08-27 .