Введение
рад встрече. Я Кейши Ириса, студентка третьего курса кафедры химии и биотехнологии инженерного факультета Токийского университета.
Я участвовал в рабочей стажировке в LINE Yahoo! Co., Ltd. на 8 недель, начиная с 18 августа. меня назначили наБэкэнд-разработка, связанная со штампами, темами и смайликами LINE.Мы — команда, которая использует Java/Kotlin в качестве основного языка разработки, и я участвовал в разработке сервиса под названием LINE STORE.
В этой статье я расскажу, каким развитием я занимался и какой опыт получил во время стажировки.
Что такое ЛИНЕЙНЫЙ МАГАЗИН?
Услуги, в которых я участвовалЛИНЕЙНЫЙ МАГАЗИНЯ объясню об этом. Вы можете приобрести марки и смайлы в магазине марок в приложении LINE, но вы также можете приобрести их через веб-браузер, который называется LINE STORE.
Предыстория и проблемы
Теперь я объясню свою основную задачу: «Разработка новой системы флагов функций с использованием OpenFeature». Флаги функций (далее называемые флагами) — это механизм, который позволяет вам легко контролировать выпуск и изменение новых функций во время разработки продукта, а также механизм, который позволяет вам включать/выключать определенные функции, такие как переключатель, без необходимости повторного развертывания программы.
Наша команда использует Monorepo для управления несколькими проектами в одном репозитории. Что касается управления флагами, программное обеспечение с открытым исходным кодом LINE Yahoo (далее именуемое OSS)Центральная догмаХотя мы обычно используем одну и ту же систему управления файлами, способ реализации флагов различался в зависимости от проекта.
В частности, было два метода:
- Планаут4jРеализуйте флаги в YAML и управляйте ими с помощью библиотеки (Ссылка:https://speakerdeck.com/policemankh/implementation-and-operation-of-server-side-release-with-feature-flag)
- Внедряйте флаги и управляйте ими с помощью простого файла JSON.
В дополнение к отсутствию единообразной реализации, прежний PlanOut4j не поддерживался в течение нескольких лет, а внутренний механизм JavaScript Nashorn устарел с версии Java 11. Последний метод также имел проблему, связанную с требованием реализации шаблонного кода для каждого флага.
Для решения этих проблем моей основной задачей было создать общий модуль внутри репозитория с использованием новой библиотеки флагов и унифицировать реализацию.
Что такое OpenFeature?
Мы рассматривали возможность использования ее в качестве новой библиотеки для флагов.OpenFeature— это библиотека, которая позволяет вам использовать общий интерфейс независимо от того, как вы управляете флагами. Мы предоставляем интерфейсы, связанные с флагами, в виде OpenFeature SDK, и, следуя этим спецификациям, вы можете не только использовать различные полезные функции, но и настроить свой собственный метод управления флагами.

архитектурная схема
Чтобы помочь вам понять процесс управления флагами с помощью OpenFeature, мы представляем окончательную архитектурную диаграмму и процесс от редактирования флага разработчиком до момента его отражения в каждом приложении.
- Разработчик редактирует флаги с помощью графического интерфейса и сохраняет их на сервере Central Dogma.
CentralDogmaOpenFeatureRepositoryсинхронизирует флаги с сервером Central Dogma- Каждое приложение
FeatureFlagServiceЗапросите оценку черезOpenFeatureProviderотправить в OpenFeatureResolverустанавливает настройки на основе ключа (названия флага)CentralDogmaOpenFeatureRepositoryполучить отOpenFeatureResolverлогика оценки флага на основе ключаFeatureFlagServiceполучить отOpenFeatureResolverоценивает флагOpenFeatureProviderэто оценочное значение флагаFeatureFlagServiceвернуться в- Возвращать значение оценки флага каждому приложению

Я объясню их подробно позже, а кратко объясню каждый из них:
FeatureFlagService: Общий модуль для флагов, используемых в каждом приложении.OpenFeatureProvider:Flag Эта роль соединяет общий модуль и службу управления и наследует класс поставщика OpenFeature SDK.OpenFeatureResolver: выполнить фактическую оценку флага.CentralDogmaOpenFeatureRepository: Синхронизироваться с сервером Central Dogma для получения флагов.
Это каждыйАрхитектура OpenFeatureВ зависимости от стандартов он подразделяется на три типа: API оценки, поставщик и система управления флагами.
Что я сделал
Я хотел бы представить, что мы на самом деле сделали в процессе разработки.
Общее рассмотрение архитектуры
Представляя OpenFeature, мы сначала подумали, как интегрировать его с существующими системами и общей политикой проектирования.
Основные соображения были разделены на следующие четыре аспекта:
-
Управление флагами в Central Dogma: Мы продолжили использовать Central Dogma, которую наша команда уже использует, в качестве системы управления флагами и разработали доступ к ней через провайдера OpenFeature.
-
Интерпретация и оценка флагов в Resolver: Мы определили собственный преобразователь для интерпретации и оценки флагов. Разделив роли интерпретации файлов конфигурации флагов и выполнения оценки флагов, мы сделали возможным гибко реагировать на изменение правил записи файлов конфигурации флагов.
-
Абстракция в провайдере: Принимая во внимание возможность перехода на систему управления флагами, отличную от Central Dogma, в будущем, мы разработали систему управления флагами, которую можно заменить, используя абстракцию провайдера OpenFeature.
-
Общий модуль, использующий флаги:Чтобы его можно было часто использовать в репозитории,
FeatureFlagServiceМы выделили его как общий модуль и спроектировали так, чтобы его можно было использовать в каждом приложении.
Выбор формата сохранения файла
Чтобы использовать флаги, вам необходимо создать файл конфигурации для описания включения/выключения, условий и т. д. Команда LINE STORE использует PlanOut4j, поэтому мы управляем флагами в YAML как в формате файла.
Первое, что вам нужно решить, это в каком формате вы хотите сохранить файл конфигурации флага. Были упомянуты два кандидата: YAML и JSON. Преимущество YAML в том, что он допускает комментарии и переносы строк, что делает его очень читаемым. Однако, поскольку анализатор YAML использует такие библиотеки, как PlanOut4j, изменить схему сложно, и файлы имеют тенденцию становиться избыточными.
С другой стороны, с помощью JSON можно легко менять правила загрузки настроек, благодаря чему можно гибко настраивать файлы настроек флагов и проще их писать. Однако существует ограничение: нельзя добавлять разрывы строк и комментарии.
В заключение отметим, что на этот раз мы выбрали JSON в качестве формата хранения файлов. Это связано с тем, что мы сосредоточились на возможности настройки файлов конфигурации, которые были бы краткими и независимыми от библиотек, путем изменения схемы. По вопросам, которые нельзя комментировать,JSONCМы определили, что проблему можно решить, используя или добавив в схему поле для комментариев.
Решение о том, как определить логику оценки флагов
Далее мы рассмотрели оценку флага.
2025-12-03 02:00:00
1770675780
#Разработка #новой #системы #пометок #функций #использованием #OpenFeature #LINE #STORE #отчет #стажера
По теме

