У нас есть приложение, доступное на других платформах (iOS, Android и несколько серверных микросервисов: nodeJS, Python). Когда мы разрабатываем новую функцию и когда она готова, мы хотели бы сделать ее доступной одновременно на всех платформах. И если что-то не так, мы хотели бы отключить его.
Например:
var featureEnabled = featureService.isMyNewFeatureEnabled();
if (featureEnabled === true) {
// turn on my new feature
}
else {
// use my legacy feature
}
Как лучше всего это сделать?
Я ищу решение, которое я могу использовать во всех своих компонентах и легко управлять своими функциями (вкл / выкл) в одном месте.
Просто чтобы уточнить, эта категория называется «управление флагами функций». Вы также можете искать инструменты управления флагами функций или службы управления флагами функций. Или даже службы управления конфигурацией, поскольку эти два понятия связаны между собой.
Сейчас у нас реализовано собственное решение. О чем я очень сожалею. Сначала это казалось простой задачей, имея на сервере загружаемые файлы конфигурации JSON, содержащие значения флагов функций. И минималистичная админка для их редактирования. Сложность повысилась, когда мы хотели добавить исключения. Например, предоставление значения для одной группы пользователей и другого значения для другого сегмента. Так называемое A/B-тестирование. После попытки взломать эту функцию в нашем текущем решении нам удалось убедить руководство и получить надлежащую службу флагов функций.
Вот те, которые мы оценили:
Как упоминалось в комментариях к вопросу, вы ищете «Управление флагами функций», также известное как «Управление переключением функций», термины смешанные, но одинаковые. Флаги функций включают различные шаблоны или стратегии активации. Примеры среди них вы описываете;
Большинство систем управления флагами функций поддерживают указанные выше и другие стратегии активации.
Довольно часто такие инструменты начинают создаваться внутри, по сути это просто: только простой флаг и несколько операторов if. Ваша проблема заключается в том, что вы начинаете зависеть от управления флагами функций. Обычно вам потребуются возможности журнала аудита, надлежащая обработка управления пользователями, надлежащее масштабирование, обеспечение ограниченного влияния на производительность и аналогичные возможности. Хорошее введение в лучшие практики переключения функций, которые следует учитывать, можно найти в этом Сообщение блога.
Доступно несколько сильных предложений, вот четыре лучших:
Здесь в stackoverflow есть очень хорошее резюме о флагах функций: Что такое «флаг функции»?
Это либо слишком широко, либо запрашивается сторонний ресурс, например сторонний инструмент. Общий ответ таков: укажите конечную точку, которая возвращает
AppConfig
, и пусть ваши приложения используют указанную конечную точку и решают, какую функцию/кнопку/экран показывать или нет.