Максим Барышников "Wargaming: тыл - фронту!"
Чтобы игра стала успешной (а из успешной превратилась в легендарную), недостаточно самой игры, сколь бы хороша она ни была. Помимо всего прочего, действительно массовой игре нужна очень развитая веб-часть. О ней и пойдет речь.
3. 3
• Более 200 человек
• 40+ проектов
• Досье 60М игроков
• 2М уникальных посетителей в день релиза
только на worldoftanks.ru
В цифрах
4. 4
Auth Service
Game Data API
WG Open ID
BackOffice
Rating System
Public API
Clans
Vehicle
Recovery
Portal
Support
WarGAG
Forums
Wargaming.net
ClanWars
6. 6
• каждый компонент разрабатывается отдельно
…вплоть до отдельной команды и менеджера
• ввзаимодействует с другими компонентами через API
или контракт
• зависимости управляются также, как в любом
пакетном менеджере
Разработка компонентов
9. 9
AMQP
Open ID
RS
AMQP
HTTP API :: call()
Clans
HTTP API :: call()
HTTP API :: call()
HTTPHTTP
Public API
HTTP API :: call() HTTP API :: call()
jabberd
Backyard
Взаимодействие компонентов
Game API
AMQP
Portal
Auth Service
HTTP API :: call()
HTTP API :: call()
AMQP
10. 10
• AMQP и HTTP API — основные способы
взаимодействия
• Взаимодействие не всегда упорядочено
• Есть случаи, когда один компонент читает из
БД другого
11. 11
• 500+ Gb только данных игроков
• 1500 логинов в секунду
• 100+ боев заканчивается в секунду
• 3000+ игровых событий в секунду
13. 13
AMQP
Open ID
RS
AMQP
HTTP API :: call()
Clans
HTTP API :: call()
HTTP API :: call()
HTTPHTTP
Public API
HTTP API :: call() HTTP API :: call()
jabberd
Backyard
Взаимодействие компонентов
Game API
AMQP
Portal
Auth Service
HTTP API :: call()
HTTP API :: call()
AMQP
14. 14
Event-Driven SOA
Service Bus
Event Bus
Компонент
pub/sub call()
Компонент
pub/sub call()
Компонент
pub/sub call()
Компонент
pub/sub call()
Компонент
pub/sub call()
Компонент
pub/sub call()
call()pub/sub call()pub/sub call()pub/sub
15. 15
• RabbitMQ— messaging that just works
• Гибкий: маршрутизация, federated exchanges, etc.
• Multi-protocol: AMQP, MQTT, STOMP…
• Хорошие клиентские библиотеки
• Плагины
16. 16
• Kafka — распределенный коммит-лог
• Надежный: пишем сразу на диск и реплицируем
• Быстрый: сотни мегабайт RW/sec
• Масштабируемый: репликация и партиционирование