Back to questions
Wildberries
Middle
5
Задача: спроектируйте сервис управления feature flags для трёх платформ (iOS, Android, Web). Нарисуйте архитектурную схему, опишите схему БД, примеры запросов клиента и веб-интерфейса.
Companies where asked
Answer from AI
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
}
Такой сервис позволяет централизованно управлять флагами, быстро включать и выключать функции на разных платформах, а также вести аудит изменений.