Fantasy League Backend
Fantasy-футбол платформа. Пользователи собирают виртуальные команды из реальных игроков и зарабатывают очки по результатам настоящих матчей.
3 уровня рейтинговИдемпотентная обработкаAdvisory Locks
Бизнес-задача
Fantasy-спорт платформа, где пользователи создают виртуальные команды из реальных футболистов, зарабатывают очки на основе реальных матчей, участвуют в турнирах и создают приватные лиги с друзьями.
Ключевая задача
Обработка результатов матчей в реальном времени с идемпотентной обработкой, распределённые фоновые задачи для горизонтального масштабирования, гибкие правила подсчёта очков.
Подсчёт очков
Интеграция с внешним футбольным API.
- •Опрос с дельтой: каждые 5 минут, обрабатываются только изменившиеся матчи
- •Идемпотентность: повторная обработка событий не дублирует очки
- •Карточки игроков: автоматический пересчёт очков после каждого матча
- •Три уровня рейтингов: глобальный / по турниру / по раунду
Система очков
Гибкие правила начисления.
- •По позиции: разные правила для вратарей, защитников, полузащитников, нападающих
- •По событиям: голы, ассисты, жёлтые/красные карточки, сыгранные минуты
- •Множители: капитан (×2), вице-капитан (×1.5)
- •Настройки турнира: кастомные правила для каждого турнира
Управление командой
- •Драфт: выбор состава и формации перед турниром
- •Состав по раундам: смена формации между раундами
- •Трансферы: лимит трансферов и бюджет
- •Формации: 4-3-3, 4-4-2, 3-5-2 и другие
Фоновые задачи
Планировщик на горутинах с защитой от дублирования.
- •PostgreSQL Advisory Locks: распределённые блокировки для горизонтального масштабирования
- •Состояние турнира: автоматическая смена статусов по расписанию
- •Популярность игроков: динамический расчёт на основе трансферов
Технологии
Backend
Go 1.24FastHTTPpgx/v5 + pgxpoolgo-playground/validator
Data
PostgreSQLgolang-migrateAWS S3
Integrations
GoalsFeed APIVK OAuthSMTP (gomail)
Observability
Elastic APMPrometheusZap (structured logs)
Моя роль
- Архитектура backend с нуля: слоистая архитектура (handlers → services → repositories)
- Движок подсчёта очков с идемпотентной обработкой и дельта-обновлениями
- PostgreSQL Advisory Locks для распределённых фоновых задач
- Интеграция с внешним футбольным API и VK OAuth