View
225
Download
1
Embed Size (px)
Citation preview
Large-Scale Distributed Systems
Henrik LagercrantzSenior Systems [email protected]
Bwin poker - a real world example
Agenda
•About bwin Games and online poker
•Challenges in a large-scale distributed system
•The P5 poker engine
•Q&A
Some Numbers
•14 million registered customers
•45k players online at peak
•800k player sessions per day
•7 million poker rounds played per day
•28 million poker hands dealt per day
The Domain Model
Poker
NetworkOperator
Poker Round
PokerRing Game
PokerTournament
PokerLobby
NetworkGames
Gaming Portal
SkillGames
CasinoGames
PokerTable
Player
Wallet
OtherGames
Payment Provider
Game Round
GameRound
*
**
* *
*
*
*
**
*
1
1* *
1
LegendNetwork
Poker
Outside main domain
Operator
3rd Party Games
Handshake Quiz
…
Request req = awaitRequest()
boolean auth = authenticate(req)
if (auth)
send(new LoginOk())
activateEncryption()
else
send(new LoginFailed())
…
…
send(new LoginRequest(“apa”))
LoginResponse resp = awaitResponse()
if (isLoginOk(resp))
activateEncryption()
send(new Message(“hello!”))
else
print(“doh!”)
…
The ServerThe Client
What’s wrong with this code?
Requirements
•Handle 100k concurrent players
•99.9% availability
•Wide range of integration scenarios
•Operator diversification
•High security standards
•Support regulatory constraints
•Highly maintainable
•…
Start decomposing…
•Find a table
•View ongoing games
•Play poker
•Chat
•Process completed rounds
•Route client/server communication
•Register for a tournament
•Create & schedule a new tournament
•…
P5 System Overview
Gaming Frontend Proxy
PokerGame Engine
ChatServer
... ...Gaming
FrontendService Registry
GameHistory
Poker Core Poker Add-on
TournamentScheduler
HandProcessor
TournamentPlanner
TournamentOrganizer
TransactionSystem
PlayerInformation
OperatorInformation
BouncerOnlineFraud
...
...
Stats
Gaming Backend
Gaming Frontend
Ga
tew
ay
P5
PlatformOPAPI
PokerOPAPI
OIQ
PokerBackoffice
PlatformBackoffice
Backoffice Op. Integration
Platform
CustomIntegration
Layer
PokerSupport
Tools
Poker Client
Summary
•Differentiate between essential complexity and accidental complexity!
•Functional decomposition is key!
•Understand the problem domain
•CAP theorem – “it’s a trade-off”
http://bwingames.se
Henrik LagercrantzSenior Systems [email protected]
For questions regarding internship, thesis work, etc, contact Jonas Rundberg [email protected]
Also feel free to send me (Henrik) email if you have any questions/thoughts/ideas around the technical stuff – [email protected]