Этот репозиторий содержит backend-платформу для A/B-экспериментов и feature rollout. Она умеет хранить конфигурацию экспериментов, выдавать пользователю детерминированный вариант, принимать продуктовые события, пересчитывать метрики, строить отчёты и автоматически управлять жизненным циклом эксперимента через guardrails и autopilot.
Архитектурно проект собран как набор сервисов вокруг общего control-plane: decision отвечает за runtime-решения, events и metrics за ingest и аналитику, review за согласование изменений, logs за аудит, library за накопление learnings, а auth, guardrails и autopilot закрывают доступ, safety-ограничения и автоматизацию. В качестве инфраструктуры используются PostgreSQL, Redis, ClickHouse, Envoy, Prometheus и Grafana.
- RUNBOOK — запуск fresh clone, e2e и эксплуатационные команды
- ARCHITECTURE — диаграммы,
decisioncache и потокevents - HIGH_LOAD_REPORT — среда запуска, capacity envelope и точка деградации
- TEST_REPORT — проверенные команды и результаты тестов
- REPO_MAP — карта сервисов, infra и ключевых точек входа
- TRACEABILITY_MATRIX — трассировка требований к реализации
- OPTIONAL_FEATURES — дополнительные сценарии и артефакты
Используйте данный репозиторий для работы над задачей.
Tip
Задание можно найти в отдельном репозитории по ссылке – https://gitlab.prodcontest.com/2026-final-tasks/backend
Проверяется состояние последнего коммита в ветке main на момент дедлайна.
Технические ограничения окружения где будет выполняться сборка и запуск решения
| Параметр | Лимит |
|---|---|
| Время старта | < 180 секунд до готовности /ready |
| Память | < 8 GB |
| CPU | 4 ядра |
| Размер Docker-образа | < 4 GB |
| Сеть | Нет доступа в интернет при запуске и проверке |
Технические требования к решению:
- Приложение должно запускаться командой
docker compose up -dв корне репозитория. - Приложение слушает только порт
80, все сервисы общаются между собой через docker-сеть (локально).
Мы призываем всех участников соблюдать принципы академической честности и культуры общения, подходить к соревнованиям открыто и добросовестно.
Цель олимпиады — не только продемонстрировать свои знания и навыки, но и развиваться как надёжные и ответственные специалисты в будущем.
Мы проверяем самостоятельность решений:
- внутренняя проверка организаторов;
- внешняя проверка через Codechecker (продукт компании «Антиплагиат»).
Код из открытых источников использовать можно, но важно указать источник — в комментарии рядом с фрагментом или в README.
Если вы используете LLM/нейросети (например, чтобы сгенерировать фрагменты кода, тесты или документацию), пожалуйста, помечайте это — где уместно, в комментарии рядом с фрагментом или отдельной заметкой в README.
Важно: ответственность за весь код в репозитории несёте вы, включая сгенерированные фрагменты — вы должны понимать, что именно добавляете, уметь объяснить решение и проверять результат (корректность, безопасность, крайние случаи).
Это позволит легко проверить и подтвердить самостоятельность вашей работы и снять возможные вопросы при проверке.
Олимпиада по промышленному программированию — это про профессиональный подход. Поэтому в репозитории (сообщения коммитов, названия веток, комментарии к коду и обсуждения) мы ожидаем уважительный и деловой тон.
Мы не приемлем ненормативную лексику, оскорбления и токсичное поведение.
Если мы фиксируем нарушение академической честности или культуры общения, мы можем аннулировать результат работы (включая дисквалификацию в рамках олимпиады).
Решение принимается организаторами по совокупности признаков и результатов проверок.