Sobes.tech
Назад к вопросам
Middle
4

Задача: спроектируйте сервис управления feature flags для трёх платформ (iOS, Android, Web). Нарисуйте архитектурную схему, опишите схему БД, примеры запросов клиента и веб-интерфейса.

Компании, где спрашивали
WildberriesWildberries

Ответ от нейросети

sobes.tech AI

Для сервиса управления feature flags, работающего на iOS, Android и Web, архитектура может выглядеть так:

  • Backend API — центральный сервис, который хранит и управляет флагами.
  • База данных — хранит информацию о флагах, их состояниях, условиях включения.
  • Клиенты (iOS, Android, Web) — запрашивают актуальные флаги и применяют их.
  • Веб-интерфейс для администраторов — позволяет создавать, изменять и просматривать feature flags.

Архитектурная схема (упрощённо):

[Админ Веб-интерфейс] <--> [Backend API] <--> [База данных]
                             ^
                             |
          -------------------|-------------------
          |                   |                   |
       [iOS клиент]       [Android клиент]     [Web клиент]

Схема базы данных (пример на реляционной модели):

  • feature_flags

    • id (PK)
    • name (уникальное имя флага)
    • description
    • is_active (bool)
    • created_at
    • updated_at
  • flag_conditions (опционально, для таргетинга)

    • id (PK)
    • feature_flag_id (FK)
    • condition_type (например, "user_segment", "platform")
    • condition_value
  • flag_audit_logs

    • id (PK)
    • feature_flag_id (FK)
    • changed_by
    • change_type (создание, обновление, удаление)
    • timestamp

Пример запроса клиента для получения флагов:

GET /api/feature-flags?platform=ios&user_id=12345
Authorization: Bearer <token>

Ответ:

{
  "flags": [
    {"name": "new_ui", "enabled": true},
    {"name": "beta_feature", "enabled": false}
  ]
}

Пример запроса из веб-интерфейса для создания флага:

POST /api/feature-flags
Content-Type: application/json

{
  "name": "new_ui",
  "description": "Включение нового интерфейса",
  "is_active": true
}

Ответ:

{
  "id": "uuid",
  "name": "new_ui",
  "is_active": true
}

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