Upload
python-meetup
View
319
Download
0
Embed Size (px)
DESCRIPTION
Максим Барышников "Wargaming: тыл - фронту!" Чтобы игра стала успешной (а из успешной превратилась в легендарную), недостаточно самой игры, сколь бы хороша она ни была. Помимо всего прочего, действительно массовой игре нужна очень развитая веб-часть. О ней и пойдет речь.
Citation preview
WARGAMING: тыл — фронту!
Максим БарышниковSolutions Architect
2
Часть первая: организационная
3
• Более 200 человек• 40+ проектов• Досье 60М игроков• 2М уникальных посетителей в день релиза
только на worldoftanks.ru
В цифрах
4
Auth Service
Game Data APIWG Open ID
BackOffice
Rating System
Public API
ClansVehicle
RecoveryPortal
Support
WarGAG
ForumsWargaming.net
ClanWars
5
Много компонентов×
N игр (WoT, WoWP, WoWS…)×
M реалмов (RU, EU, NA, CN, ASIA…)=
WARGAMING WEB
6
• каждый компонент разрабатывается отдельно…вплоть до отдельной команды и менеджера
• ввзаимодействует с другими компонентами через APIили контракт
• зависимости управляются также, как в любомпакетном менеджере
Разработка компонентов
7
Часть вторая: техническая
8
Технологии
9
AMQP Open IDRS
AMQP
HTTP API :: call()
Clans
HTTP API :: call()
HTTP API :: call()
HTTP
HTTP
Public API
HTTP API :: call() HTTP API :: call()
jabberdBackyard
Взаимодействие компонентов
Game API
AMQ
P
Portal
Auth ServiceHTTP API :: call()
HTTP API :: call()
AMQ
P
10
• AMQP и HTTP API — основные способы взаимодействия
• Взаимодействие не всегда упорядочено
• Есть случаи, когда один компонент читает из БД другого
11
• 500+ Gb только данных игроков• 1500 логинов в секунду• 100+ боев заканчивается в секунду• 3000+ игровых событий в секунду
12
Часть третья: технические планы
13
AMQP Open IDRS
AMQP
HTTP API :: call()
Clans
HTTP API :: call()
HTTP API :: call()
HTTP
HTTP
Public API
HTTP API :: call() HTTP API :: call()
jabberdBackyard
Взаимодействие компонентов
Game API
AMQ
P
Portal
Auth ServiceHTTP API :: call()
HTTP API :: call()
AMQ
P
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
• RabbitMQ— messaging that just works
• Гибкий: маршрутизация, federated exchanges, etc.
• Multi-protocol: AMQP, MQTT, STOMP…
• Хорошие клиентские библиотеки
• Плагины
16
• Kafka — распределенный коммит-лог
• Надежный: пишем сразу на диск и реплицируем
• Быстрый: сотни мегабайт RW/sec
• Масштабируемый: репликация и партиционирование
Эпилог: Q&A
Барышников МаксимSolutions Architect
Developer Partner Program• Документация• Поддержка• Примеры• API Explorer• …
https://ru.wargaming.net/developers/