Приложение доступно по адресу http://64.226.86.240/
Обязательным является заголовок Device-Token
.
Request
GET /experiments
Headers:
Device-Token {{device-token}}
В ответ возвращается список экспериментов, ассоциированных с устройством.
Response
{
"device_id": "{{device-id}}",
"assigned_experiments": [
{
"experiment_name": "button_color",
"experiment_option": "#FF0000"
},
{
"experiment_name": "price",
"experiment_option": "50"
}
]
}
Эндпоинт для удобства проверки распределения экспериментов между устройствами
Request
GET /admin/statistics
Response
{
"button_color | #0000FF": 200,
"button_color | #00FF00": 200,
"button_color | #FF0000": 200,
"price | 10": 450,
"price | 20": 60,
"price | 50": 30
"price | 5": 60,
}
Возвращает статистику количества экспериментов. Где ключом является название эксперимента, а значением - количество устройств, с которыми ассоциирован этот эксперимент
Для удобства конфигурации экспериментов, все они хранятся в YAML-файле. При таком подходе, чтобы добавить новый эксперимент, достаточно описать его в конфигурационном файле. Также возможно иметь разный набор экспериментов для каждого окружения.
development:
button_color:
"#FF0000": 33.33
"#00FF00": 33.33
"#0000FF": 33.33
price:
"10": 75
"20": 10
"50": 5
"5": 10
production:
button_color:
"#FF0000": 50
"#00FF00": 50
Устройства и эскперименты хранятся в БД, в таблицах devices
и assigned_experiments
соответственно и имеющих следующую структуру:
Промежуточные результаты вычислений хранятся в базе данных redis, в следующем виде
Приложение возможно запустить с помощью докера
docker-compose -f docker-compose.dev.yml up
Код в приложении следует гайдлайнам Ruby Style Guide