SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
Saturday, 27th July, 2013
Introduction and Background
 Sajit Vasudevan, Technical Architect, Cognizant
Technology Solutions
 Nirmalya Sengupta, Software Craftsman and Coach,
CeeZone Consulting
 Is to show that
 Complex projects can be executed by
following Scrum
 Adaptability to emerging architectural
needs is achievable
 Adoption of Scrum mindset helps in
succeeding
 Is to give some concrete examples
Overview
Project Background
Dutch company – Online lottery giant,
decided to enter Online Poker market
Scope: Building a complete offering of
online betting Poker game environment
(first version in 12 months)
Technology choices: Java, C++, GWT,Test
Scripting, Linux, MySQL, RabbitMQ, XUnit,
Cruisecontrol, Artifactory, Maven,
RedDwarf
Application: a bird’s eye view
Player Portal
Game Server
Lobby Server
Database
RabbitMQ
Tournament
Server
Poker Lobby – showing all table types, tournament types etc
Poker lobby – Tables list
Game table
Servers must be ...
 Robust
 Network ready
 Support for ‘Statefulness’
 Easy to interface with external systems
 Highly threaded
 Minimum supportable concurrent player base: ~20000
 Logged in players don't always play but add load
 Speed and Order of message exchange between Client
and Server are of essence
Crucial Challenges
 Inherently asynchronous
 Arbitrarily fired Timers affect software's behaviour
 Players may decide to sit out and re-join anytime
 Network connection with player can drop anytime: game
must continue
 Randomness must be satisfactorily built in and proven
(legal requirement)
 Game History must be retained (legal requirement)
 Multiple simultaneous tables, Multiple simultaneous
tournaments
Example of asynchronous behaviour
P1
P2P4
P3
step1. P2 plays
step2. P3 sits-out /
gets disconnected
NEW HAND!
step3. Hand over!
ASYNCHRONOUS
MESSAGE!
Now P3 is
informed of
new Hand
allowed to re-
join
Tricky to test software which..
is inherently asynchronous
is supposed to support many users, while
maintaining performance
is asking testers to be good/bad Poker players
is affected indeterminately by Timers (arbitrariness)
requires preservation of history of every move
is expected to display minimum latency always
`
Infrastructure - revisited
Player Portal
Game Server
Lobby Server
Database
RabbitMQ
Tournament
Server
.
.
.
.
.
.
.
.
...
.
BOTs
Human Players
JMX Console
Some initial Architectural
decisions
 Game logic implemented as a handcrafted FSM
 Game Server separate from Tournament Server
 All components inside a Game/Tournament Server
communicate through messages
 { Game | Tournament | Lobby } server exchange
information through Database
 Clients ‘pull’ information from Lobby Server
Poker Lobby – showing all table types, tournament types etc
Problems popped up: Pig headed
or headless chicken
 Understanding of tournament server was clearer over
time
 Performance bottleneck:
 Identified earlier that lobby would be heavily loaded
 Clients ‘pulling’ information from Lobby Server was a
bottleneck
 Exchanging information through Database was
difficult
 Plugging in 3rd party authentication mechanism was not
straightforward
Architectural adaptations led to
 Replacing Game Server with Tournament Server
 We realised that every game played can be considered to be a
part of ‘default’ tournament with no competition
 Game/Tournament and Lobby Servers decoupling
through a Queue
 Lobby Server keeps its own database
 Lobby Server gets latest update from queue
 Previous updates can be forgotten – saves memory and
processing
Some architectural changes made..
 Replaced Game Server with Tournament Server
 We realised that every game played can be considered to be a
part of ‘default’ tournament with no competition
 Game/Tournament and Lobby Servers decoupled
through a Queue
 Lobby Server keeps its own database
 Lobby Server gets latest update from queue
 Previous updates can be forgotten – saves memory and
processing
Building functionality
 Significant focus on unit testing
 Regular and frequent builds
 By not having adequate automated tests, we paid the
price in
 Incorrectly calculating how to divide money at
stake, amongst players
 Incorrectly recording the HandHistory of games
(both of the above, legal requirements and hence,
extremely important)
 Debugging effort and cost was huge
Our Scrum experience
reminds us that
 Collaboration between product management,
developers, testers and architect is crucial
 Changes from the product management could be
accommodated at any point of time
 Architectural alterations can be made to the initial
architecture
Brickbats

Mais conteúdo relacionado

Semelhante a Scrum Helps Online Poker Project Adapt to Emerging Needs

Behind the Scenes: Deploying a Low-Latency Multiplayer Game Globally
Behind the Scenes: Deploying a Low-Latency Multiplayer Game GloballyBehind the Scenes: Deploying a Low-Latency Multiplayer Game Globally
Behind the Scenes: Deploying a Low-Latency Multiplayer Game GloballyJames Gwertzman
 
Building fast,scalable game server in node.js
Building fast,scalable game server in node.jsBuilding fast,scalable game server in node.js
Building fast,scalable game server in node.jsXie ChengChao
 
Cloud Gaming Onward: Research Opportunities and Outlook
Cloud Gaming Onward: Research Opportunities and OutlookCloud Gaming Onward: Research Opportunities and Outlook
Cloud Gaming Onward: Research Opportunities and OutlookAcademia Sinica
 
Designing a pragmatic back-end service for mobile games
Designing a pragmatic back-end service for mobile gamesDesigning a pragmatic back-end service for mobile games
Designing a pragmatic back-end service for mobile gamesiFunFactory Inc.
 
How to Plan for Performance and Scale for Multiplayer Games
How to Plan for Performance and Scale for Multiplayer GamesHow to Plan for Performance and Scale for Multiplayer Games
How to Plan for Performance and Scale for Multiplayer GamesCloudflare
 
Game server development in node.js in jsconf eu
Game server development in node.js in jsconf euGame server development in node.js in jsconf eu
Game server development in node.js in jsconf euXie ChengChao
 
Php day2013 sports_statistics
Php day2013 sports_statisticsPhp day2013 sports_statistics
Php day2013 sports_statisticsTobias Josefsson
 
Movi presentation Singapore video tech meetup
Movi presentation Singapore video tech meetupMovi presentation Singapore video tech meetup
Movi presentation Singapore video tech meetupLars-Erik M Ravn
 
Dedicated Game Servers
Dedicated Game ServersDedicated Game Servers
Dedicated Game Serverswebhostingguy
 
Online games: a real-time problem for the network
Online games: a real-time problem for the networkOnline games: a real-time problem for the network
Online games: a real-time problem for the networkJose Saldana
 
Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience Docker, Inc.
 
Building Multiplayer Games (w/ Unity)
Building Multiplayer Games (w/ Unity)Building Multiplayer Games (w/ Unity)
Building Multiplayer Games (w/ Unity)Noam Gat
 
게임을 위한 아마존웹서비스(AWS) (김일호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임을 위한 아마존웹서비스(AWS) (김일호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018게임을 위한 아마존웹서비스(AWS) (김일호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임을 위한 아마존웹서비스(AWS) (김일호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018Amazon Web Services Korea
 
Fyp ca4 yss_ver2
Fyp ca4 yss_ver2Fyp ca4 yss_ver2
Fyp ca4 yss_ver2Sishuo Yang
 
Supersize your production pipe enjmin 2013 v1.1 hd
Supersize your production pipe    enjmin 2013 v1.1 hdSupersize your production pipe    enjmin 2013 v1.1 hd
Supersize your production pipe enjmin 2013 v1.1 hdslantsixgames
 
Deploying a Low-Latency Multiplayer Game Globally: Loadout
Deploying a Low-Latency Multiplayer Game Globally: Loadout Deploying a Low-Latency Multiplayer Game Globally: Loadout
Deploying a Low-Latency Multiplayer Game Globally: Loadout Amazon Web Services
 
Project Darkstar - Perpetual Entertainment presentation at the 2007 Austin Ga...
Project Darkstar - Perpetual Entertainment presentation at the 2007 Austin Ga...Project Darkstar - Perpetual Entertainment presentation at the 2007 Austin Ga...
Project Darkstar - Perpetual Entertainment presentation at the 2007 Austin Ga...Chris Melissinos
 
All In - Final Presentation
All In - Final PresentationAll In - Final Presentation
All In - Final Presentationfreddiesulit
 
BitSquid Tech: Benefits of a data-driven renderer
BitSquid Tech: Benefits of a data-driven rendererBitSquid Tech: Benefits of a data-driven renderer
BitSquid Tech: Benefits of a data-driven renderertobias_persson
 

Semelhante a Scrum Helps Online Poker Project Adapt to Emerging Needs (20)

Behind the Scenes: Deploying a Low-Latency Multiplayer Game Globally
Behind the Scenes: Deploying a Low-Latency Multiplayer Game GloballyBehind the Scenes: Deploying a Low-Latency Multiplayer Game Globally
Behind the Scenes: Deploying a Low-Latency Multiplayer Game Globally
 
Building fast,scalable game server in node.js
Building fast,scalable game server in node.jsBuilding fast,scalable game server in node.js
Building fast,scalable game server in node.js
 
Cloud Gaming Onward: Research Opportunities and Outlook
Cloud Gaming Onward: Research Opportunities and OutlookCloud Gaming Onward: Research Opportunities and Outlook
Cloud Gaming Onward: Research Opportunities and Outlook
 
Designing a pragmatic back-end service for mobile games
Designing a pragmatic back-end service for mobile gamesDesigning a pragmatic back-end service for mobile games
Designing a pragmatic back-end service for mobile games
 
How to Plan for Performance and Scale for Multiplayer Games
How to Plan for Performance and Scale for Multiplayer GamesHow to Plan for Performance and Scale for Multiplayer Games
How to Plan for Performance and Scale for Multiplayer Games
 
Game server development in node.js in jsconf eu
Game server development in node.js in jsconf euGame server development in node.js in jsconf eu
Game server development in node.js in jsconf eu
 
Php day2013 sports_statistics
Php day2013 sports_statisticsPhp day2013 sports_statistics
Php day2013 sports_statistics
 
Movi presentation Singapore video tech meetup
Movi presentation Singapore video tech meetupMovi presentation Singapore video tech meetup
Movi presentation Singapore video tech meetup
 
Dedicated Game Servers
Dedicated Game ServersDedicated Game Servers
Dedicated Game Servers
 
Online games: a real-time problem for the network
Online games: a real-time problem for the networkOnline games: a real-time problem for the network
Online games: a real-time problem for the network
 
Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience
 
Building Multiplayer Games (w/ Unity)
Building Multiplayer Games (w/ Unity)Building Multiplayer Games (w/ Unity)
Building Multiplayer Games (w/ Unity)
 
게임을 위한 아마존웹서비스(AWS) (김일호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임을 위한 아마존웹서비스(AWS) (김일호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018게임을 위한 아마존웹서비스(AWS) (김일호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임을 위한 아마존웹서비스(AWS) (김일호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
 
Fyp ca4 yss_ver2
Fyp ca4 yss_ver2Fyp ca4 yss_ver2
Fyp ca4 yss_ver2
 
Supersize your production pipe enjmin 2013 v1.1 hd
Supersize your production pipe    enjmin 2013 v1.1 hdSupersize your production pipe    enjmin 2013 v1.1 hd
Supersize your production pipe enjmin 2013 v1.1 hd
 
Deploying a Low-Latency Multiplayer Game Globally: Loadout
Deploying a Low-Latency Multiplayer Game Globally: Loadout Deploying a Low-Latency Multiplayer Game Globally: Loadout
Deploying a Low-Latency Multiplayer Game Globally: Loadout
 
Project Darkstar - Perpetual Entertainment presentation at the 2007 Austin Ga...
Project Darkstar - Perpetual Entertainment presentation at the 2007 Austin Ga...Project Darkstar - Perpetual Entertainment presentation at the 2007 Austin Ga...
Project Darkstar - Perpetual Entertainment presentation at the 2007 Austin Ga...
 
ARISE
ARISEARISE
ARISE
 
All In - Final Presentation
All In - Final PresentationAll In - Final Presentation
All In - Final Presentation
 
BitSquid Tech: Benefits of a data-driven renderer
BitSquid Tech: Benefits of a data-driven rendererBitSquid Tech: Benefits of a data-driven renderer
BitSquid Tech: Benefits of a data-driven renderer
 

Mais de India Scrum Enthusiasts Community

“How We Learnt to Stop Worrying and Live with Uncertainty” – Case Studies fro...
“How We Learnt to Stop Worrying and Live with Uncertainty” – Case Studies fro...“How We Learnt to Stop Worrying and Live with Uncertainty” – Case Studies fro...
“How We Learnt to Stop Worrying and Live with Uncertainty” – Case Studies fro...India Scrum Enthusiasts Community
 
Software 4.0 : “How” of Building Software Driven Business
Software 4.0 : “How” of Building Software Driven BusinessSoftware 4.0 : “How” of Building Software Driven Business
Software 4.0 : “How” of Building Software Driven BusinessIndia Scrum Enthusiasts Community
 
Opening the Mainframe world to Mobile Ecosystem in a seamless and beneficial ...
Opening the Mainframe world to Mobile Ecosystem in a seamless and beneficial ...Opening the Mainframe world to Mobile Ecosystem in a seamless and beneficial ...
Opening the Mainframe world to Mobile Ecosystem in a seamless and beneficial ...India Scrum Enthusiasts Community
 
Workplace Happiness - Is Business Agility Taking us Towards Happy Workplaces?
Workplace Happiness - Is Business Agility Taking us Towards Happy Workplaces?Workplace Happiness - Is Business Agility Taking us Towards Happy Workplaces?
Workplace Happiness - Is Business Agility Taking us Towards Happy Workplaces?India Scrum Enthusiasts Community
 

Mais de India Scrum Enthusiasts Community (20)

Deciphering Agile Big Data
Deciphering Agile Big DataDeciphering Agile Big Data
Deciphering Agile Big Data
 
“How We Learnt to Stop Worrying and Live with Uncertainty” – Case Studies fro...
“How We Learnt to Stop Worrying and Live with Uncertainty” – Case Studies fro...“How We Learnt to Stop Worrying and Live with Uncertainty” – Case Studies fro...
“How We Learnt to Stop Worrying and Live with Uncertainty” – Case Studies fro...
 
Rubber Meets the Road
Rubber Meets the RoadRubber Meets the Road
Rubber Meets the Road
 
Can Agile Enthusiasm See The Organization Through?
Can Agile Enthusiasm See The Organization Through?Can Agile Enthusiasm See The Organization Through?
Can Agile Enthusiasm See The Organization Through?
 
Agile​ ​HR​ ​From​ ​the​ ​trenches
Agile​ ​HR​ ​From​ ​the​ ​trenchesAgile​ ​HR​ ​From​ ​the​ ​trenches
Agile​ ​HR​ ​From​ ​the​ ​trenches
 
Evolutionary Change
Evolutionary ChangeEvolutionary Change
Evolutionary Change
 
Software 4.0 : “How” of Building Software Driven Business
Software 4.0 : “How” of Building Software Driven BusinessSoftware 4.0 : “How” of Building Software Driven Business
Software 4.0 : “How” of Building Software Driven Business
 
Agile Digital Architecture
Agile Digital ArchitectureAgile Digital Architecture
Agile Digital Architecture
 
Governance mechanism to further business agility
Governance mechanism to further business agilityGovernance mechanism to further business agility
Governance mechanism to further business agility
 
Opening the Mainframe world to Mobile Ecosystem in a seamless and beneficial ...
Opening the Mainframe world to Mobile Ecosystem in a seamless and beneficial ...Opening the Mainframe world to Mobile Ecosystem in a seamless and beneficial ...
Opening the Mainframe world to Mobile Ecosystem in a seamless and beneficial ...
 
Workplace Happiness - Is Business Agility Taking us Towards Happy Workplaces?
Workplace Happiness - Is Business Agility Taking us Towards Happy Workplaces?Workplace Happiness - Is Business Agility Taking us Towards Happy Workplaces?
Workplace Happiness - Is Business Agility Taking us Towards Happy Workplaces?
 
Wave 2 of Agile: Agile Leadership Redefined
Wave 2 of Agile: Agile Leadership RedefinedWave 2 of Agile: Agile Leadership Redefined
Wave 2 of Agile: Agile Leadership Redefined
 
Agile Engineering Environment – 2017
Agile Engineering Environment – 2017Agile Engineering Environment – 2017
Agile Engineering Environment – 2017
 
Management for Agility and Outcomes
Management for Agility and OutcomesManagement for Agility and Outcomes
Management for Agility and Outcomes
 
Agile Mindset Shifting: Agile For All
Agile Mindset Shifting: Agile For AllAgile Mindset Shifting: Agile For All
Agile Mindset Shifting: Agile For All
 
Agile Engineering Environment – 2017
Agile Engineering Environment – 2017Agile Engineering Environment – 2017
Agile Engineering Environment – 2017
 
Wave 2 of Agile: Agile Leadership Redefined
Wave 2 of Agile: Agile Leadership RedefinedWave 2 of Agile: Agile Leadership Redefined
Wave 2 of Agile: Agile Leadership Redefined
 
Five (Oops!) Six Mistakes You are Making as a Leader
Five (Oops!) Six Mistakes You are Making as a LeaderFive (Oops!) Six Mistakes You are Making as a Leader
Five (Oops!) Six Mistakes You are Making as a Leader
 
Empower the Forbidden Power Players
Empower the Forbidden Power PlayersEmpower the Forbidden Power Players
Empower the Forbidden Power Players
 
Agility in Education System for Digital India
Agility in Education System for Digital IndiaAgility in Education System for Digital India
Agility in Education System for Digital India
 

Último

Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 

Último (20)

Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 

Scrum Helps Online Poker Project Adapt to Emerging Needs

  • 2. Introduction and Background  Sajit Vasudevan, Technical Architect, Cognizant Technology Solutions  Nirmalya Sengupta, Software Craftsman and Coach, CeeZone Consulting
  • 3.  Is to show that  Complex projects can be executed by following Scrum  Adaptability to emerging architectural needs is achievable  Adoption of Scrum mindset helps in succeeding  Is to give some concrete examples Overview
  • 4. Project Background Dutch company – Online lottery giant, decided to enter Online Poker market Scope: Building a complete offering of online betting Poker game environment (first version in 12 months) Technology choices: Java, C++, GWT,Test Scripting, Linux, MySQL, RabbitMQ, XUnit, Cruisecontrol, Artifactory, Maven, RedDwarf
  • 5. Application: a bird’s eye view Player Portal Game Server Lobby Server Database RabbitMQ Tournament Server
  • 6. Poker Lobby – showing all table types, tournament types etc
  • 7. Poker lobby – Tables list
  • 9. Servers must be ...  Robust  Network ready  Support for ‘Statefulness’  Easy to interface with external systems  Highly threaded  Minimum supportable concurrent player base: ~20000  Logged in players don't always play but add load  Speed and Order of message exchange between Client and Server are of essence
  • 10. Crucial Challenges  Inherently asynchronous  Arbitrarily fired Timers affect software's behaviour  Players may decide to sit out and re-join anytime  Network connection with player can drop anytime: game must continue  Randomness must be satisfactorily built in and proven (legal requirement)  Game History must be retained (legal requirement)  Multiple simultaneous tables, Multiple simultaneous tournaments
  • 11. Example of asynchronous behaviour P1 P2P4 P3 step1. P2 plays step2. P3 sits-out / gets disconnected NEW HAND! step3. Hand over! ASYNCHRONOUS MESSAGE! Now P3 is informed of new Hand allowed to re- join
  • 12. Tricky to test software which.. is inherently asynchronous is supposed to support many users, while maintaining performance is asking testers to be good/bad Poker players is affected indeterminately by Timers (arbitrariness) requires preservation of history of every move is expected to display minimum latency always
  • 13. ` Infrastructure - revisited Player Portal Game Server Lobby Server Database RabbitMQ Tournament Server . . . . . . . . ... . BOTs Human Players JMX Console
  • 14. Some initial Architectural decisions  Game logic implemented as a handcrafted FSM  Game Server separate from Tournament Server  All components inside a Game/Tournament Server communicate through messages  { Game | Tournament | Lobby } server exchange information through Database  Clients ‘pull’ information from Lobby Server
  • 15. Poker Lobby – showing all table types, tournament types etc
  • 16. Problems popped up: Pig headed or headless chicken  Understanding of tournament server was clearer over time  Performance bottleneck:  Identified earlier that lobby would be heavily loaded  Clients ‘pulling’ information from Lobby Server was a bottleneck  Exchanging information through Database was difficult  Plugging in 3rd party authentication mechanism was not straightforward
  • 17. Architectural adaptations led to  Replacing Game Server with Tournament Server  We realised that every game played can be considered to be a part of ‘default’ tournament with no competition  Game/Tournament and Lobby Servers decoupling through a Queue  Lobby Server keeps its own database  Lobby Server gets latest update from queue  Previous updates can be forgotten – saves memory and processing
  • 18. Some architectural changes made..  Replaced Game Server with Tournament Server  We realised that every game played can be considered to be a part of ‘default’ tournament with no competition  Game/Tournament and Lobby Servers decoupled through a Queue  Lobby Server keeps its own database  Lobby Server gets latest update from queue  Previous updates can be forgotten – saves memory and processing
  • 19. Building functionality  Significant focus on unit testing  Regular and frequent builds  By not having adequate automated tests, we paid the price in  Incorrectly calculating how to divide money at stake, amongst players  Incorrectly recording the HandHistory of games (both of the above, legal requirements and hence, extremely important)  Debugging effort and cost was huge
  • 20. Our Scrum experience reminds us that  Collaboration between product management, developers, testers and architect is crucial  Changes from the product management could be accommodated at any point of time  Architectural alterations can be made to the initial architecture