Разработать сервер статистики для сбора, обновления и анализа игровых метрик пользователей
Система должна обеспечивать быстрый доступ к информации для игровых клиентов, отображения рейтингов, результатов матчей и личной статистики игроков
Хранить всю историю матчей
Результаты игр, детали каждого матча и индивидуальные данные игроков (например, статистику и достижения)
Быстро отдавать агрегированные данные
Например, топ-100 игроков, рейтинги по разным игровым режимам
Масштабироваться под рост нагрузки
Система должна легко расширяться — как за счет добавления новых серверов (горизонтальное масштабирование), так и за счет увеличения мощности существующих
Обеспечивать надежное и безопасное хранение данных
С регулярным резервным копированием и защитой от потерь информации
Поддерживать интеграцию с другими компонентами
Например, с системой подбора матчей и будущим веб-порталом, где игроки смогут просматривать свою статистику и профиль
Такой подход сделает систему гибкой, устойчивой и готовой к развитию
Трудности
Отсутствие централизованного хранилища данных об игроках мешало развитию игровых механик, завязанных на достижениях и прогрессе
Хранение данных
Проектировали схему базы для истории матчей и характеристик игроков, интегрируя gRPC и REST API с сохранением консистентности и контролем прав доступа
Нестабильность
Использование временных решений не позволяло сохранить данные между сессиями и обеспечивать масштабируемость при росте количества пользователей
Производительность
Требовалось обеспечить высокую скорость чтения и записи под нагрузкой и предусмотреть независимое масштабирование системы
Инструменты
Стек технологий, используемых на проекте
.NET / ASP.NET Core
01
Реализация API и фоновых сервисов
JWT
02
Авторизация и валидация прав пользователя
PostgreSQL
03
Основное хранилище статистики
ORM EF Core
04
ORM и миграции
Docker, Docker Compose
05
Развёртывание окружения
Nginx
06
Проксирование запросов к API
NUnit
07
Тестирование логики
Решение
В результате был создан надёжный и отказоустойчивый сервер статистики с возможностью масштабирования и фоновой агрегации данных
Он стал основой системы учёта прогресса игроков и базой для развития игровых механик, аналитики поведения, рейтингов и монетизации через веб-портал
Система превратилась в ключевой элемент экосистемы, повышающий вовлечённость и упрощающий администрирование проекта при следующих этапах работы
Проектирование схемы
Проектирование и нормализация (оптимизация) схемы базы данных с учетом требований к быстрому чтению и записи
Обмен данными
Реализация обмена данными через gRPC и резервный REST API на ASP.NET Core для профилей, матчей и рейтингов
Интеграция ORM
Подключение ORM с миграциями и слейв‑репликами для масштабируемости на чтение
Фоновая агрегация
Реализация механизма фоновой агрегации статистики
Мониторинг системы
Настройка логирования, мониторинга инфраструктуры на предмет ошибок и сбоев