Переключение функций
Эта статья может содержать чрезмерные или неуместные ссылки на самостоятельно опубликованные источники . ( Май 2022 г. ) |
Переключение функций при разработке программного обеспечения обеспечивает альтернативу поддержанию нескольких ветвей функций в исходном коде . Условие в коде включает или отключает функцию во время выполнения . В гибких настройках переключатель используется в производстве для включения функции по требованию для некоторых или всех пользователей. Таким образом, переключение функций действительно облегчает частый выпуск . Продвинутые стратегии развертывания, такие как канареечное развертывание и A/B-тестирование, легче реализовать. [1] [2]
Непрерывная доставка поддерживается переключением функций, даже если новые выпуски не развертываются в рабочей среде постоянно . Функция интегрируется в основную ветку еще до ее завершения. Версия протестировать развертывается в тестовой среде один раз, переключатель позволяет включить эту функцию и ее . Циклы интеграции программного обеспечения становятся короче, и может быть предоставлена версия, готовая к выпуску в производство. [3]
Третье использование этого метода — позволить разработчикам выпустить версию продукта с незавершенными функциями. Эти незавершенные функции скрыты (переключаются), чтобы они не отображались в пользовательском интерфейсе . Требуется меньше усилий для объединения функций в продуктивную ветвь и из нее, что позволяет использовать множество небольших дополнительных версий программного обеспечения . [4]
Переключение функции также называется переключателем функции , флагом функции , воротами функции , флиппером функции или условной функцией .
Выполнение
[ редактировать ]Этот раздел нуждается в дополнительных цитатах для проверки . ( Октябрь 2016 г. ) |
Переключатели функций — это, по сути, переменные , которые используются внутри условных операторов . Таким образом, блоки внутри этих условных операторов можно включать или выключать в зависимости от значения переключателя функции. Это позволяет разработчикам контролировать поток своего программного обеспечения и обходить функции, которые не готовы к развертыванию. Блок кода, стоящий за переменной времени выполнения, обычно все еще присутствует и может быть выполнен при определенных условиях, иногда в пределах того же жизненного цикла приложения; блок кода, стоящий за директивой препроцессора или закомментированный, не будет исполняемым. Подход с использованием флагов функций может использовать любой из этих методов для разделения путей кода на разных этапах разработки.
Основное использование переключателей функций — избежать конфликтов, которые могут возникнуть при объединении изменений в программном обеспечении в последний момент перед выпуском, хотя это может привести к переключению задолженности . Задолженность по переключению возникает из-за неработающего кода, присутствующего в программном обеспечении после того, как функция была включена навсегда, и приводит к накладным расходам. Эту часть кода следует удалять осторожно, чтобы не повредить другие части кода.
Существует два основных типа переключения функций. Одним из них является переключатель выпуска, который разработчик решает сохранить или удалить перед выпуском продукта в зависимости от его работы. Другой — это бизнес-переключатель, который сохраняется, поскольку он предназначен для другого использования по сравнению со старым кодом.
Переключатели функций можно использовать в следующих сценариях: [1]
- Добавление новой функции в приложение.
- Расширение существующей функции в приложении.
- Скрытие или отключение функции.
- Расширение интерфейса.
Переключатели функций могут храниться как: [5]
- Записи строк в базе данных.
- Свойство в файле конфигурации.
- Запись в службе флагов внешних функций.
Группы функций
[ редактировать ]Группы функций состоят из переключателей функций, которые работают вместе. Это позволяет разработчику легко управлять набором связанных переключателей. [6]
Канарский релиз
[ редактировать ]Канарский выпуск (или канареечный запуск или канареечное развертывание) позволяет разработчикам постепенно тестировать функции небольшой группой разработчиков. Флаги функций, например альтернативный способ запуска Canary. [7] и разрешить таргетинг по географическому местоположению или даже атрибутам пользователя. [8] Если производительность функции неудовлетворительна, ее можно откатить без каких-либо негативных последствий. [9] Он назван в честь использования канарейок для предупреждения шахтеров о токсичных газах ( Канарейка шахтера ).
Принятие
[ редактировать ]Мартин Фаулер утверждает, что переключение функций «должно быть вашим последним выбором, когда вы имеете дело с запуском функций в производство». Вместо этого лучше всего разбить функцию на более мелкие части, каждую из которых можно реализовать и безопасно внедрить в выпущенный продукт, не вызывая других проблем. [2]
Переключение функций используется многими крупными веб-сайтами, включая Flickr, [10] Дискус [11] Этси, [12] Реддит, [13] Gmail [14] и Нетфликс, [15] а также такое программное обеспечение, как Google Chrome Canary .
См. также
[ редактировать ]- Управление конфигурацией программного обеспечения
- Линейка программных продуктов
- Сравнение программного обеспечения для управления конфигурацией с открытым исходным кодом
Ссылки
[ редактировать ]- ^ Jump up to: а б «ALM Rangers — Разработка программного обеспечения с переключением функций» . msdn.microsoft.com .
- ^ Jump up to: а б Мартин Фаулер, 29 октября 2010 г. (29 октября 2010 г.). «Переключение функций» . Мартинфаулер.com . Проверено 27 сентября 2013 г.
{{cite web}}
: CS1 maint: числовые имена: список авторов ( ссылка ) - ^ Как GitHub использует флаги функций для быстрой и безопасной доставки , infoq, 09 мая 2021 г.
- ^ Программирование приложений JavaScript . Архивировано из оригинала 15 сентября 2016 г. Проверено 14 сентября 2016 г.
- ^ Эчагуэ, Пато (2014). Управление флагами функций . О'Рейли Медиа. ISBN 9781492028598 .
- ^ Эллиот, Эрик (2018). Программирование приложений JavaScript . О'Рейли Медиа.
- ^ «Как выполнить выпуск Canary/прогрессивную доставку с помощью ConfigCat | Блог ConfigCat» . configcat.com . 09.02.2022 . Проверено 22 декабря 2022 г.
- ^ «Канарское тестирование — использование сине-зеленых развертываний и флагов функций» . unlaunch.io . 26 февраля 2021 г. Проверено 14 августа 2021 г.
- ^ «Canary-релизы – как и зачем делать канареечные релизы» . launchdarkly.com . 7 апреля 2015 года . Проверено 9 января 2017 г.
- ^ Хармс, Росс. «Переворачивание — code.flickr.com» . flickr.net . Проверено 9 января 2017 г.
- ^ dcramer (9 июля 2010 г.). «Частичное развертывание с переключателями функций» . Архивировано из оригинала 5 ноября 2013 г. Проверено 10 октября 2013 г.
- ^ «Как Etsy управляет разработкой и деятельностью?» . codeascraft.com . 4 февраля 2011 г. Проверено 9 января 2017 г.
- ^ «реддит/реддит» . github.com . Проверено 9 января 2017 г.
- ^ «Разработка нового внешнего вида Gmail» . googleblog.com . Проверено 9 января 2017 г.
- ^ «Подготовка API Netflix к развертыванию» . netflix.com . Проверено 9 января 2017 г.