Что такое «переключатель флага функции» и когда их использовать (или нет)?

17

Есть несколько вопросов feature flag toggles, таких как:

Вопросы :

  • Что на самом деле является «переключателем флага функции» (в контексте DevOps)?
  • Почему они используются?
Pierre.Vriens
источник
3
Справочная информация, а не прямой ответ - martinfowler.com/articles/feature-toggles.html
Кен Муградж,
1
Я знаю, что «спрашивать» об объяснениях не принято. Но кто бы ни отрицательно проголосовал за этот вопрос, просто знайте, что для меня такие отрицательные оценки бесполезны, так как эти отрицательные голоса дешевы (понижающий голос не теряет -1 за это). Анонимные отрицательные ответы отличаются, однако ... такой отрицательный след оставляет след ...
Pierre.Vriens
2
И мне бы очень хотелось узнать, почему кто-то счел этот вопрос закрытым из-за «слишком широкого», когда на самом деле это хороший вопрос, который заслуживает хороших ответов.
Евгений
Merci @Evgeny, похоже, что мы на одной странице ... но вы заметили, что 1 закрытое голосование было отменено? Возможно, из-за моего последнего редактирования.
Pierre.Vriens

Ответы:

13

Не повторяя содержание https://martinfowler.com/articles/feature-toggles.html , поскольку это удивительное подробное объяснение того, что такое переключатели флагов функций. Я просто сосредоточусь на аспектах DevOps.

Согласно отчету о состоянии DevOps за 2014 год, подготовленному PuppetLabs, существует четыре основных показателя для измерения производительности ИТ:

  • Время для изменений
  • Частота выпуска
  • Время на восстановление сервиса
  • Изменить частоту отказов

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

Непрерывная доставка включается этими показателями и подробно описана в книге « Непрерывная доставка: надежные выпуски программного обеспечения посредством автоматизации сборки, тестирования и развертывания » Джеза Хамбла.

В контексте непрерывной доставки существует важное отличие, которое отличает его от непрерывного развертывания . И это решение, когда делать релиз функций (для клиентов).

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

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

Функции могут быть выпущены с помощью экспериментов A / B только для части клиентской базы, или для конкретных людей, или даже напрямую для общей доступности (GA). Хотя выпуск в GA часто делается только после того, как есть достаточная уверенность, что функция работает, как ожидалось. Можно утверждать, что это влияет на частоту высвобождения, чтобы быть выше.

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

Естественно, когда для выключения функции развертывание не требуется , время восстановления службы существенно сокращается.

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


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

Отличный пример того, как это делается в реальных компаниях, можно найти на Flickr (на одной из первых публичных публикаций на эту тему) и на Etsy . Но многие другие приняли практику и подробно об этом говорили, например, о знаменитой инженерной культуре на видео Spotify .

Etsy демонстрирует свой внутренний инструмент для управления флагами функций , называемый Catapult, в нескольких презентациях, которые можно найти в Интернете. И Intuit выпускает инструмент с открытым исходным кодом под названием Wasabi, который помогает управлять флагами функций.

Евгений
источник
Merci за этот интересный / подробный ответ ... Только две вещи: связанная статья о «Переключателях функций», а не «Переключениях флагов функций» (как вы написали в первом абзаце). Согласитесь ли вы, что они являются синонимами? Если нет, то какая разница? Также: что такое «A / B эксперименты» (A = После и B = До? Вероятно, нет ...).
Pierre.Vriens
1
Я согласен, что это синонимы. Я просто предпочитаю попытаться прояснить имя, поэтому нет никакой двусмысленности. Я думаю, что «что такое a / b эксперименты» - это вопрос сам по себе ... но короткий ответ заключается в том, что это две вариации, которые измеряются друг против друга, как в ссылке «Etsy хвастовство». Или объяснил на en.wikipedia.org/wiki/A/B_testing
Евгений
ОК, это последний штрих, который я ждал / надеялся, так что "принять".
Pierre.Vriens
@ Pierre.Vriens "Кроме того: что такое" A / B эксперименты "(A = After и B = Before?" - вы, вероятно, можете спросить об этом на этом очень крутом сайте DevOps SE;)
Дэн
1

Кен Муградж разместил интересный комментарий под моим вопросом со ссылкой на разъясняющее объяснение « Переключение функций », с кратким изложением этого примерно так:

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

Приведенное выше резюме не только помогает понять, о чем идет речь, но также содержит некоторые примеры, объясняющие, почему они используются . И после того, как мы переварим это немного дальше, кажется, что «Feature Toggles» и «Feature Flag Toggles» в значительной степени являются синонимами друг друга.

Но решение (ответ) на проблему (вопрос) меняет проблему ... можно задавать связанные вопросы, такие как:

  • Каковы плюсы / минусы их использования? Это мощная концепция, но также и пугающая, если не использовать ее с умом (и обеспечить ее надлежащим образом) ...
  • Какие могут быть примеры (хорошие и плохие), где они используются? Я могу вспомнить довольно много из них, некоторые из которых я использовал сам некоторое время назад (до того, как DevOps был даже вещь).
Pierre.Vriens
источник