Jump to content

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

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

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

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

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

Выполнение

[ редактировать ]

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

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

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

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

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

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

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

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

[ редактировать ]

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

Канарский релиз

[ редактировать ]

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

Принятие

[ редактировать ]

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

Переключение функций используется многими крупными веб-сайтами, включая Flickr, [10] Дискус [11] Этси, [12] Реддит, [13] Gmail [14] и Нетфликс, [15] а также такое программное обеспечение, как Google Chrome Canary .

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б «ALM Rangers — Разработка программного обеспечения с переключением функций» . msdn.microsoft.com .
  2. ^ Перейти обратно: а б Мартин Фаулер, 29 октября 2010 г. (29 октября 2010 г.). «Переключение функций» . Мартинфаулер.com . Проверено 27 сентября 2013 г. {{cite web}}: CS1 maint: числовые имена: список авторов ( ссылка )
  3. ^ Как GitHub использует флаги функций для быстрой и безопасной доставки , infoq, 09 мая 2021 г.
  4. ^ Программирование приложений JavaScript . Архивировано из оригинала 15 сентября 2016 г. Проверено 14 сентября 2016 г.
  5. ^ Эчагуэ, Пато (2014). Управление флагами функций . О'Рейли Медиа. ISBN  9781492028598 .
  6. ^ Эллиот, Эрик (2018). Программирование приложений JavaScript . О'Рейли Медиа.
  7. ^ «Как выполнить выпуск Canary/прогрессивную доставку с помощью ConfigCat | Блог ConfigCat» . configcat.com . 09.02.2022 . Проверено 22 декабря 2022 г.
  8. ^ «Канарское тестирование — использование сине-зеленых развертываний и флагов функций» . unlaunch.io . 26 февраля 2021 г. Проверено 14 августа 2021 г.
  9. ^ «Canary-релизы – как и зачем делать канареечные релизы» . launchdarkly.com . 7 апреля 2015 года . Проверено 9 января 2017 г.
  10. ^ Хармс, Росс. «Переворачивание — code.flickr.com» . flickr.net . Проверено 9 января 2017 г.
  11. ^ dcramer (9 июля 2010 г.). «Частичное развертывание с переключателями функций» . Архивировано из оригинала 5 ноября 2013 г. Проверено 10 октября 2013 г.
  12. ^ «Как Etsy управляет разработкой и деятельностью?» . codeascraft.com . 4 февраля 2011 г. Проверено 9 января 2017 г.
  13. ^ «реддит/реддит» . github.com . Проверено 9 января 2017 г.
  14. ^ «Разработка нового внешнего вида Gmail» . googleblog.com . Проверено 9 января 2017 г.
  15. ^ «Подготовка API Netflix к развертыванию» . netflix.com . Проверено 9 января 2017 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 5e50379ecf8e6d2f7bc87258a4cd458d__1713363180
URL1:https://arc.ask3.ru/arc/aa/5e/8d/5e50379ecf8e6d2f7bc87258a4cd458d.html
Заголовок, (Title) документа по адресу, URL1:
Feature toggle - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)