Разработка новой системы пометок функций с использованием OpenFeature в LINE STORE (отчет стажера)

Введение

рад встрече. Я Кейши Ириса, студентка третьего курса кафедры химии и биотехнологии инженерного факультета Токийского университета.

Я участвовал в рабочей стажировке в LINE Yahoo! Co., Ltd. на 8 недель, начиная с 18 августа. меня назначили наБэкэнд-разработка, связанная со штампами, темами и смайликами LINE.Мы — команда, которая использует Java/Kotlin в качестве основного языка разработки, и я участвовал в разработке сервиса под названием LINE STORE.

В этой статье я расскажу, каким развитием я занимался и какой опыт получил во время стажировки.

Что такое ЛИНЕЙНЫЙ МАГАЗИН?

Услуги, в которых я участвовалЛИНЕЙНЫЙ МАГАЗИНЯ объясню об этом. Вы можете приобрести марки и смайлы в магазине марок в приложении LINE, но вы также можете приобрести их через веб-браузер, который называется LINE STORE.

Предыстория и проблемы

Теперь я объясню свою основную задачу: «Разработка новой системы флагов функций с использованием OpenFeature». Флаги функций (далее называемые флагами) — это механизм, который позволяет вам легко контролировать выпуск и изменение новых функций во время разработки продукта, а также механизм, который позволяет вам включать/выключать определенные функции, такие как переключатель, без необходимости повторного развертывания программы.

Наша команда использует Monorepo для управления несколькими проектами в одном репозитории. Что касается управления флагами, программное обеспечение с открытым исходным кодом LINE Yahoo (далее именуемое OSS)Центральная догмаХотя мы обычно используем одну и ту же систему управления файлами, способ реализации флагов различался в зависимости от проекта.

В частности, было два метода:

  1. Планаут4jРеализуйте флаги в YAML и управляйте ими с помощью библиотеки (Ссылка:https://speakerdeck.com/policemankh/implementation-and-operation-of-server-side-release-with-feature-flag
  2. Внедряйте флаги и управляйте ими с помощью простого файла JSON.
Read more:  ИИ, вдохновленный мозгом, помогает мягким роботам-манипуляторам переключаться между задачами и сохранять стабильность

В дополнение к отсутствию единообразной реализации, прежний PlanOut4j не поддерживался в течение нескольких лет, а внутренний механизм JavaScript Nashorn устарел с версии Java 11. Последний метод также имел проблему, связанную с требованием реализации шаблонного кода для каждого флага.

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

Что такое OpenFeature?

Мы рассматривали возможность использования ее в качестве новой библиотеки для флагов.OpenFeature— это библиотека, которая позволяет вам использовать общий интерфейс независимо от того, как вы управляете флагами. Мы предоставляем интерфейсы, связанные с флагами, в виде OpenFeature SDK, и, следуя этим спецификациям, вы можете не только использовать различные полезные функции, но и настроить свой собственный метод управления флагами.

Концептуальная схема OpenFeature
источник:Официальная документация OpenFeature

архитектурная схема

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

  1. Разработчик редактирует флаги с помощью графического интерфейса и сохраняет их на сервере Central Dogma.
  2. CentralDogmaOpenFeatureRepositoryсинхронизирует флаги с сервером Central Dogma
  3. Каждое приложениеFeatureFlagServiceЗапросите оценку черезOpenFeatureProviderотправить в
  4. OpenFeatureResolverустанавливает настройки на основе ключа (названия флага)CentralDogmaOpenFeatureRepositoryполучить от
  5. OpenFeatureResolverлогика оценки флага на основе ключаFeatureFlagServiceполучить от
  6. OpenFeatureResolverоценивает флаг
  7. OpenFeatureProviderэто оценочное значение флагаFeatureFlagServiceвернуться в
  8. Возвращать значение оценки флага каждому приложению

архитектурная схема

Я объясню их подробно позже, а кратко объясню каждый из них:

  • FeatureFlagService: Общий модуль для флагов, используемых в каждом приложении.
  • OpenFeatureProvider:Flag Эта роль соединяет общий модуль и службу управления и наследует класс поставщика OpenFeature SDK.
  • OpenFeatureResolver: выполнить фактическую оценку флага.
  • CentralDogmaOpenFeatureRepository: Синхронизироваться с сервером Central Dogma для получения флагов.
Read more:  Обновление Правления платежной системы: заседание, ноябрь 2025 г. | Пресс-релизы

Это каждыйАрхитектура OpenFeatureВ зависимости от стандартов он подразделяется на три типа: API оценки, поставщик и система управления флагами.

Что я сделал

Я хотел бы представить, что мы на самом деле сделали в процессе разработки.

Общее рассмотрение архитектуры

Представляя OpenFeature, мы сначала подумали, как интегрировать его с существующими системами и общей политикой проектирования.

Основные соображения были разделены на следующие четыре аспекта:

  1. Управление флагами в Central Dogma: Мы продолжили использовать Central Dogma, которую наша команда уже использует, в качестве системы управления флагами и разработали доступ к ней через провайдера OpenFeature.

  2. Интерпретация и оценка флагов в Resolver: Мы определили собственный преобразователь для интерпретации и оценки флагов. Разделив роли интерпретации файлов конфигурации флагов и выполнения оценки флагов, мы сделали возможным гибко реагировать на изменение правил записи файлов конфигурации флагов.

  3. Абстракция в провайдере: Принимая во внимание возможность перехода на систему управления флагами, отличную от Central Dogma, в будущем, мы разработали систему управления флагами, которую можно заменить, используя абстракцию провайдера OpenFeature.

  4. Общий модуль, использующий флаги:Чтобы его можно было часто использовать в репозитории,FeatureFlagServiceМы выделили его как общий модуль и спроектировали так, чтобы его можно было использовать в каждом приложении.

Выбор формата сохранения файла

Чтобы использовать флаги, вам необходимо создать файл конфигурации для описания включения/выключения, условий и т. д. Команда LINE STORE использует PlanOut4j, поэтому мы управляем флагами в YAML как в формате файла.

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

Read more:  Новый телефон Samsung выглядит прямо из научной фантастики. Я должен попробовать это

С другой стороны, с помощью JSON можно легко менять правила загрузки настроек, благодаря чему можно гибко настраивать файлы настроек флагов и проще их писать. Однако существует ограничение: нельзя добавлять разрывы строк и комментарии.

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

Решение о том, как определить логику оценки флагов

Далее мы рассмотрели оценку флага.

2025-12-03 02:00:00


1770675780
#Разработка #новой #системы #пометок #функций #использованием #OpenFeature #LINE #STORE #отчет #стажера

По теме

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.