Что такое "флаг функции"?
флаги функции упоминания о высокой масштабируемости здесь:
http://www.iheavy.com/2011/08/26/5-things-are-toxic-to-scalability/
Что такое флаги функций?
спасибо
9 ответов:
' флаг функции '(или Функция Переключения) - это возможность легко включать/выключать функции (подразделы) вашего приложения:
- возможно, через повторное развертывание, или
- некоторые внутренние страницы, где страницы/выхода видео.
Я думаю, что пример там был, что это удобно иметь контроль, чтобы уменьшить набор функций несколько, если вам нужно, скажем, уменьшить запросы БД, если нагрузка слишком высока.
есть куча других причин вы хотели бы использовать это Тхо-одно из основных включениеНепрерывная Доставка: толкает вещи в производство / жить, но функция отключена / переключена, пока она не будет завершена. Мы часто используем то, что мы называем "dev cookie", чтобы показать незавершенные функции только команде разработчиков. Таким образом, мы можем проверить частично завершенную работу в производстве (О да! есть ли лучшая интеграция?) на несколько релизов/развертывания, прежде чем мы 'выключить' (завершен) это и становится видно общественности.
вот простой пакет, который поможет вам сделать это в ASP.NET MVC land:https://github.com/cottsak/DevCookie (полное раскрытие: я автор)
Фаулер также имеет гораздо более длинная статья, чем та, которая связана выше с гораздо большим количеством деталей.
этот пост (на сайте Фаулера также) объясняет различные типы стратегий переключения. DevCookie поддерживает Магистральная / Магистральная стратегия и называется"Отпустите Тумблер" в статье.
ответ Адиля подчеркивает, что есть много терминов и причин, по которым вам может понадобиться часть этой инфраструктуры. Имейте в виду, что вам может понадобиться только некоторые из этих вещей. Например, я могу только включить простой и гибкий рабочий процесс развертывания/доставки, и поэтому простой инфраструктуры будет достаточно. Если вы затем выберите вы хотите перейти в полном объеме #leanstartup экспериментирование с A / B, когортным тестированием и такими вещами, как контролируемое развертывание, вы должны рассмотреть инструмент аналитики (например. кучу), что облегчает эти методологии разработки на основе данных в качестве отдельного решения. Переключение инфраструктуры, которая делает все вышеперечисленное, приведет к раздуванию и ненужной сложности.
флаг функции-это способ отключить некоторые функции вашего приложения с помощью конфигурации без развертывания нового кода.
флаги функций играют ключевую роль в схеме CI, где функции постоянно развертываются, но не обязательно "выпускаются" в производство.
Подробнее здесь:
- http://code.flickr.com/blog/2009/12/02/flipping-out/
- http://techblog.outbrain.com/tag/feature-flags/
-- EDIT:
флаги функций, переключатели функций, эксперименты и управляемые развертывания являются синонимами простой, но мощной идеи: отдельный код развертывается из развертывания функций. Проще говоря, это возможность подтолкнуть вашу функцию к производству, выбирая, кто из ваших клиентов - если кто - то вообще-увидит эту функцию.
Они были частично популяризированы привратник Facebook. Ликс в LinkedIn-это еще один хороший пример.
осваивают эту простая идея закладывает основу для многих лучших практик, в том числе:
Непрерывное Развертывание/Доставка - несколько код толкает к производству в день.
Багажник/Магистрали Развития - ветви функций должны создаваться только для запросов на вытягивание, а не для долгоживущей разработки функций.
Больше Не Выпускайте Поезда болото вещи вниз.
ОК/тестирование производительности в производстве - реальное QA и тестирование производительности выполняется на производственной инфраструктуре с производственным трафиком. Не тратьте время на создание обширных лабораториях и площадках.
эксперименты - знать, как новая функция перемещает иглу на КПЭ.
избегая исправлений или откатов кода, когда возникают проблемы - оба исправления и откаты кода являются напряженными, занимают много времени и приводят к большему количеству проблем, чем это необходимо. Вместо этого отключите функцию или наклоните его вниз.
отметили другие библиотеки с открытым исходным кодом. Хорошим примером полного решения - как Gatekeeper и LiX-является Сплит. Я работаю на сплит.
флаг функции (также известный как функция листать или функция переключения) - это переключатель для включения или отключения потенциально дорогой функции по мере необходимости (например, когда сайт забивается неожиданным трафиком). Это даст вам немного времени, пока вы не увеличите масштаб, или пока скачок нагрузки не исчезнет.
здесь пример из документации SWIG.
здесь есть много отличных ответов, все они направлены на важное, основное определение, популяризированное в Мартин Фаулер сообщение:
это биты кода, которые " [позволяют] командам изменять поведение системы без изменения кода."
таким образом, мы исторически думали о них как о псевдокоде:
if(app_settings["beta-mode"] == "true") showAwesomeNewGui(); else sameOldSnoozeFeset();
Это совершенно точный способ думать об этом, и как Мэтт, так и Адил расширяют его красиво с разнообразием тактических случаев использования для флага функции.
но я хотел бы предложить пересмотренное определение, которое отражает, как реальность развивалась в течение шести лет и изменилась с тех пор, как dotnetdev задал первоначальный вопрос. Я работаю на Rollout.io, флаговая платформа, поэтому у меня было место в первом ряду для этой эволюции.
проще говоря, флаги функций больше не являются просто способом включения и выключения бит функциональности в вашем приложении. Это все равно что ответить "что такое Ан элемент строки счета-фактуры" по словам " это описание и сумма валюты.- Верно, но это не ведет к более широкой точке самого счета.
флаги функций-это тактические биты всеобъемлющего стратегического решения в современном программном обеспечении. Они являются средством, с помощью которого вы откладываете важную логику принятия решений в своем коде до времени выполнения, когда у вас будет больше информации. И, возможно, самое главное, они не просто происходят в изоляции больше, с одной проверкой, чтобы увидеть, если номер версии больше 2.7 или нет; организации, которые используют их, как правило, включают их как часть комплексного, общесистемного подхода к продукту.
Как уже упоминалось, Facebook и LinkedIn впервые сделали это, но в 2018 году это делают многие организации. Они откладывают вопросы логики принятия решений для среды выполнения как часть стратегии разработки, стратегии операций (или стратегии DevOps, если хотите) и стратегии продукта. Вот примеры таких вопросы.
- кто должен увидеть новый экран администратора, который мы выкатываем, и когда?
- какой уровень членства требуется, чтобы разблокировать это пасхальное яйцо?
- когда мы должны перейти к новой базе данных?
- должны ли мы поместить изображение гепарда или орла на кнопку проверки для повышения конверсии?
чтобы иметь приложение, которое откладывает значительное количество таких решений до времени выполнения, вы не можете бросить функция флаги в ваше приложение в специальной моде или вы будете хоронить себя в техническом долге. В наши дни вам необходимо иметь комплексную стратегию управления флагами функций, которая включает в себя несколько различных компонентов.
- переключение точек используются для переключения поведения для новых возможностей.
- несколько точек переключения собираются вместе, чтобы сформировать переключить маршрутизатор. Тумблер-маршрутизатор определяет состояние особенность.
- переключение контекста обеспечивает переключение маршрутизатора необходимую контекстную информацию (например, конкретного пользователя).
- настройки тумблер предоставляет информацию о маршрутизаторе переключения об окружающей среде.
Итак, в конце концов, что такое флаги функций?
Ну, они являются важной частью более широкой стратегии, чтобы иметь приложение, которое можно адаптировать как к техническим, так и к рыночным потребностям.
флаги функций (или переключатели функций) позволяют включать функции удаленно в приложении без необходимости повторного построения/повторного развертывания приложения. Это позволяет развернуть код в рабочей среде, но не выпускать функцию, пока вы не будете готовы. Вы можете ориентироваться на конкретных пользователей, поэтому вы можете включить новую функцию для своих бета-пользователей для тестирования.
в нашей компании мы ранее использовали LaunchDarkly и другие предложения от FeatureFlags.io. Мы также пытались использовать Удаленная конфигурация Firebase чтобы попытаться сделать эту работу, однако мы обнаружили, что это не совсем подходит для этой цели.
мы закончили разработку нашей собственной версии под названием Поезд Пуля, которые мы с открытым исходным кодом. Он сочетает в себе как флаги/переключатели функций, так и удаленную конфигурацию.
Я понимаю, что флаги функций помогают вам управлять функциональностью ворот, решая, какие пользователи получают определенные функции.
например, предположим, что вы хотите, чтобы ваши бета-пользователи видели только новую функцию. Вы бы "переключили" эту функцию для бета-пользователей, и остальные ваши пользователи не увидели бы ее.
LDUser user = new LDUser("[email protected]"); boolean showFeature = ldClient.toggle("your.feature.key", user, false); if (showFeature) { // application code to show the feature } else { // the code to run if the feature is off }
Я тестирую флаги функции LaunchDarkly для некоторых интерфейсных тестов JS A/B - похоже, работает хорошо. Вы также можете проверить этот сайт для функциональных переключателей и библиотек флагов функций.
функция флаги в основном дает вам возможность включать и выключать функцию без внесения каких-либо изменений в коде или выпуска новой версии. Это важное решение, особенно для разработчиков мобильных приложений, так как они не имеют никакого контроля над пользователями, чтобы обновить свое приложение до новой версии.
есть несколько компаний, предоставляющих эту услугу для пользователей мобильного приложения разработчики.
в моей компании мы используем флаги функций для каждой новой функции, которую мы вводим в нашем приложении SaaS. Помимо преимуществ для производительности он также позволяет нам постепенно развертывать новые функции-сначала внедрять новые функции для опытных пользователей, получать от них обратную связь и импровизировать, прежде чем мы сможем развернуть ее для всех пользователей.
Это также позволяет нам настроить предложение для отдельных пользователей-опытные пользователи хотят все функции; простые пользователи могут просто хотеть основные вещи и могут запутаться по всем мощным сложным признакам. Оно также позволяет нашей команде сбываний вверх-продать.
и, конечно, как указывали другие, если мы обнаружим, что функция вызывает снижение производительности, мы можем просто отключить эту одну функцию (либо для всех клиентов, либо для одного клиента, который вызывает проблему).
Comments