SlideShare ist ein Scribd-Unternehmen logo
Mobile Games mit
Microsoft Azure
Jürgen Gutsch
Jürgen Gutsch
• Developer, Consultant und Trainer bei der
YooApplications AG in Basel
• Stolzer Papa von drei Kindern
• Blogger, Autor von Fachartikeln
• Speaker auf Konferenzen und User Groups
• User Group Leader des .NET-Stammtisch Konstanz-
Kreuzlingen
• .NET-Begeisterter Softwareentwickler
• Webentwickler
• Open Source und ALT.NET Enthusiast
• Clean Code Developer
Was wir können
Wir suchen Dich!
Die YooApps bietet fünf interessante Positionen, die
es zu besetzen gilt. Trifft eines der fünf Profile
unter: www.yooapps.com/jobs auf dich zu, so sende
uns noch heute deine Unterlagen an jobs@yooapps.com!
• Software Engineer im Bereich .Net (80-100%)
• Unity3D Game Developer (80-100%)
• Web- oder Mobile Developer (80-100%)
• Projektleiter / Kundenberater (80-100%)
• User Experience Designer / Konzepter (80-100%)
Das Game
http://www.youtube.com/watch?v=I58AQs8QS18
Das Game
Das Game
• Kräuteranbau auf einem Feld
• Pflegen und Hegen der Kräuter
• Ernten und Verarbeiten der Kräuter
• Verkaufen und Sammeln der Kräuter
• Nutzung von Gutscheincodes
• Geo-Interaktion => Felder an echten Geopositionen
• Standortabhängige Feldqualität
• Reales Wetter am Standort des Feldes
• Highscore
• Push-Benachrichtigung
Das iOS Game
Das iOS Game
Konzept
• Rundenbasiert
• Beliebig viele Runden pro Spieler
• Mehrere Felder pro Runde
• Krauter, Geräte und Felder kosten Geld
• Verkauf von Kräutern bringt Geld
• Aktionen bringen Punkte
• Ziele des Spiels:
• Von allen Kräutern eine bestimmte Menge an Ricola
zu senden um echtes Kräuterzucker zu erhalten
• In der Gesamt-Highscore so weit oben wie zu sein.
Anforderungen
• Stabilität
• Ausfallsicherheit
• Skalierbarkeit
• Performance
• Wartbarkeit
• Ausführliches Logging
• Spielhistorie
Zahlen
• Über 17.500 App Downloads
• Knapp 25.500 Felder
• Über 13.000 Spieler
• Über 4.500 aktive Spieler
• Davon Über 2.500 sehr aktive Spieler
(>50.000 Punkte)
• Etwa 6.000 Events
pro Spielrunde und Spieler
• Ca. 54.000.000 Einträge
(Stand März 2014)
Infrastruktur
• Compute-Instanzen / Web Roles mit
• REST Schnittstelle zur Kommunikation mit den
Clients
• Spiellogik zum Großteil auf dem Server
• Background Services / Worker Role
• Für Push-Nachrichten und Schädlingsberechnung
• Relationale Datenbank für Veränderbare Daten
• Nutzerdaten, Highscore
• Bestellungen (von Kräuterzucker)
• Objektdatenbank für nicht veränderbare Daten
• Spielaktionen
• Nur hinzufügen von einzelnen Daten
• Schnelles Lesen von vielen Daten
Microsoft Azure
2 Web Roles
1 Worker Roles
Table Storage
SQL Database
Windows Azure Cache
CQRS Pattern
• Die Spielrunde ist das Aggregate
• Unsere Hauptdomäne in der alle Aktionen stattfinden
• Alle Interaktionen finden in einer Spielrunde statt
• Background-Service und User führen Aktionen aus
• Azure Table Storage wird als Event Store verwendet
• Snapshots werden im Azure Cache abgelegt
• Eigentlich „Event Sourcing + Commands“ statt CQRS
• Querying findet auf dem Snapshot aus dem Eventstore
statt und nicht auf einer denormalisierten
Datenbank
Exkurs: CQRS Pattern
Quelle: CAP-Theorem: http://de.wikipedia.org/wiki/CAP-Theorem
• Konsistenz: Alle Knoten sehen zur selben
Zeit, dieselben Daten.
• Verfügbarkeit: Alle Anfragen an das System
werden stets beantwortet.
• Partitionstoleranz: Das System arbeitet
auch bei Verlust von Nachrichten, einzelner
Netzknoten oder Partition des Netzes
weiter.
CAP-Theorem
Exkurs: CQRS Pattern
Quelle: SQRS Journey: http://msdn.microsoft.com/en-us/library/jj591573.aspx
Exkurs: CQRS Pattern
Quelle: http://www.gridshore.nl/2009/12/21/cqrs-made-easy-with-cqrs4j
Exkurs: CQRS Pattern
Event Store
Aggregate Version Event Details
GR1 1 Field Added GEO=lat,long;Name=MyField;
GR1 2 Quadrant Plowed Q=a1,a2,a3,a4,…
GR2 1 Field Added GEO=lat,long;Name=MyField
GR1 3 Quadrant Seeded Seed=pepermint;Q=a1,a2,a3,a4
GR2 2 Quadrant Plowed Q=b2,b3,c2,c3
GR2 3 Quadrant Seeded Seed=pepermint;Q=b2,b3,c2,c3
GR3 1 Field Added GEO=lat,long;Name=MyField
GR1 4 Quadrant Weeded Q=a1,a2,a3,a4
… … … …
Fragen / Diskussion / Kontakt
Zeit für Fragen und Diskussion
jetzt …
… oder jederzeit:
juergen@gutsh-online.de
Twitter: @sharpcms
FB//:juergen.gutsch
Skype//:juergen.gutsch

Weitere ähnliche Inhalte

Andere mochten auch

Continuous Integration and the Data Warehouse - PASS SQL Saturday Slovenia
Continuous Integration and the Data Warehouse - PASS SQL Saturday SloveniaContinuous Integration and the Data Warehouse - PASS SQL Saturday Slovenia
Continuous Integration and the Data Warehouse - PASS SQL Saturday Slovenia
Dr. John Tunnicliffe
 
iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag
iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltagiks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag
iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
Clean Code
Clean CodeClean Code
Clean Code
Hendrik Ebel
 
Continuous integration eine Einführung für Unkundige
Continuous integration   eine Einführung für UnkundigeContinuous integration   eine Einführung für Unkundige
Continuous integration eine Einführung für Unkundige
abuwipp
 
Exam front page
Exam front pageExam front page
Exam front page
sugaasini
 
Retos aprendizaje e investigación e-learning 2.0
Retos aprendizaje e investigación e-learning 2.0Retos aprendizaje e investigación e-learning 2.0
Retos aprendizaje e investigación e-learning 2.0
Weblearner :: Carlos Castaño
 
El EspíRitu Correcto Para Hacer Nuestra Mision_Plan Anual
El EspíRitu Correcto Para Hacer Nuestra Mision_Plan AnualEl EspíRitu Correcto Para Hacer Nuestra Mision_Plan Anual
El EspíRitu Correcto Para Hacer Nuestra Mision_Plan Anual
Centro de Vida Victoriosa (Iglesia)
 
Schritt für Schritt: Keyword-Recherche mit Gratis Tools
Schritt für Schritt: Keyword-Recherche mit Gratis ToolsSchritt für Schritt: Keyword-Recherche mit Gratis Tools
Schritt für Schritt: Keyword-Recherche mit Gratis Tools
semrush_webinars
 
Narrativas Digitales II
Narrativas Digitales IINarrativas Digitales II
Narrativas Digitales II
grmadryn
 
AñO 2009 Poniendo Tu Vida En Las Manos
AñO 2009 Poniendo Tu Vida En Las ManosAñO 2009 Poniendo Tu Vida En Las Manos
AñO 2009 Poniendo Tu Vida En Las Manos
Centro de Vida Victoriosa (Iglesia)
 
Minimalism lifestyle
Minimalism lifestyleMinimalism lifestyle
Minimalism lifestyle
Minimalismus
 
Ost 1 04040 85
Ost 1 04040 85Ost 1 04040 85
Ost 1 04040 85zeemorg
 
Lab view with vernier
Lab view with vernierLab view with vernier
Lab view with vernier
drewbard28
 
Instructions MINOX Wildfire DTC 650 | Optics Trade
Instructions MINOX Wildfire DTC 650 | Optics TradeInstructions MINOX Wildfire DTC 650 | Optics Trade
Instructions MINOX Wildfire DTC 650 | Optics Trade
Optics-Trade
 
Risiko Datensicherheit - eine unterhaltsame Sightseeing Tour
Risiko Datensicherheit - eine unterhaltsame Sightseeing TourRisiko Datensicherheit - eine unterhaltsame Sightseeing Tour
Risiko Datensicherheit - eine unterhaltsame Sightseeing Tour
Peter Kirchner
 
Xhtml und Websitegestaltung
Xhtml und WebsitegestaltungXhtml und Websitegestaltung
Xhtml und Websitegestaltungcontrastmedia
 
Lombardium-Skandal: Sitzverlegung der Fondsgesellschaften
Lombardium-Skandal: Sitzverlegung der FondsgesellschaftenLombardium-Skandal: Sitzverlegung der Fondsgesellschaften
Lombardium-Skandal: Sitzverlegung der Fondsgesellschaften
olik88
 

Andere mochten auch (19)

Continuous Integration and the Data Warehouse - PASS SQL Saturday Slovenia
Continuous Integration and the Data Warehouse - PASS SQL Saturday SloveniaContinuous Integration and the Data Warehouse - PASS SQL Saturday Slovenia
Continuous Integration and the Data Warehouse - PASS SQL Saturday Slovenia
 
iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag
iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltagiks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag
iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag
 
Clean Code
Clean CodeClean Code
Clean Code
 
Continuous integration eine Einführung für Unkundige
Continuous integration   eine Einführung für UnkundigeContinuous integration   eine Einführung für Unkundige
Continuous integration eine Einführung für Unkundige
 
Exam front page
Exam front pageExam front page
Exam front page
 
Retos aprendizaje e investigación e-learning 2.0
Retos aprendizaje e investigación e-learning 2.0Retos aprendizaje e investigación e-learning 2.0
Retos aprendizaje e investigación e-learning 2.0
 
El EspíRitu Correcto Para Hacer Nuestra Mision_Plan Anual
El EspíRitu Correcto Para Hacer Nuestra Mision_Plan AnualEl EspíRitu Correcto Para Hacer Nuestra Mision_Plan Anual
El EspíRitu Correcto Para Hacer Nuestra Mision_Plan Anual
 
Schritt für Schritt: Keyword-Recherche mit Gratis Tools
Schritt für Schritt: Keyword-Recherche mit Gratis ToolsSchritt für Schritt: Keyword-Recherche mit Gratis Tools
Schritt für Schritt: Keyword-Recherche mit Gratis Tools
 
Enero2009
Enero2009Enero2009
Enero2009
 
Narrativas Digitales II
Narrativas Digitales IINarrativas Digitales II
Narrativas Digitales II
 
AñO 2009 Poniendo Tu Vida En Las Manos
AñO 2009 Poniendo Tu Vida En Las ManosAñO 2009 Poniendo Tu Vida En Las Manos
AñO 2009 Poniendo Tu Vida En Las Manos
 
Minimalism lifestyle
Minimalism lifestyleMinimalism lifestyle
Minimalism lifestyle
 
Ost 1 04040 85
Ost 1 04040 85Ost 1 04040 85
Ost 1 04040 85
 
Scrum full
Scrum fullScrum full
Scrum full
 
Lab view with vernier
Lab view with vernierLab view with vernier
Lab view with vernier
 
Instructions MINOX Wildfire DTC 650 | Optics Trade
Instructions MINOX Wildfire DTC 650 | Optics TradeInstructions MINOX Wildfire DTC 650 | Optics Trade
Instructions MINOX Wildfire DTC 650 | Optics Trade
 
Risiko Datensicherheit - eine unterhaltsame Sightseeing Tour
Risiko Datensicherheit - eine unterhaltsame Sightseeing TourRisiko Datensicherheit - eine unterhaltsame Sightseeing Tour
Risiko Datensicherheit - eine unterhaltsame Sightseeing Tour
 
Xhtml und Websitegestaltung
Xhtml und WebsitegestaltungXhtml und Websitegestaltung
Xhtml und Websitegestaltung
 
Lombardium-Skandal: Sitzverlegung der Fondsgesellschaften
Lombardium-Skandal: Sitzverlegung der FondsgesellschaftenLombardium-Skandal: Sitzverlegung der Fondsgesellschaften
Lombardium-Skandal: Sitzverlegung der Fondsgesellschaften
 

Ähnlich wie Mobile Games mit Windows Azure

Chatbot Hackathon Slidedeck
Chatbot Hackathon SlidedeckChatbot Hackathon Slidedeck
Chatbot Hackathon Slidedeck
Allgeier (Schweiz) AG
 
Dev Day 2024: Fabian Zillgens - Entwicklung einer Infrastruktur für maschinel...
Dev Day 2024: Fabian Zillgens - Entwicklung einer Infrastruktur für maschinel...Dev Day 2024: Fabian Zillgens - Entwicklung einer Infrastruktur für maschinel...
Dev Day 2024: Fabian Zillgens - Entwicklung einer Infrastruktur für maschinel...
emmaberlin1
 
2006 - Basta!: Web 2.0 mit asp.net 2.0
2006 - Basta!: Web 2.0 mit asp.net 2.02006 - Basta!: Web 2.0 mit asp.net 2.0
2006 - Basta!: Web 2.0 mit asp.net 2.0
Daniel Fisher
 
Einführung in Microsoft Azure und seine Funktionalitäten
Einführung in Microsoft Azure und seine FunktionalitätenEinführung in Microsoft Azure und seine Funktionalitäten
Einführung in Microsoft Azure und seine Funktionalitäten
POINT. Consulting GmbH
 
Azure WorkshopPart1 Intro
Azure WorkshopPart1   IntroAzure WorkshopPart1   Intro
Azure WorkshopPart1 Intro
Oliver Michalski
 
Azure Data Factory – Data Management für die Cloud
Azure Data Factory – Data Management für die CloudAzure Data Factory – Data Management für die Cloud
Azure Data Factory – Data Management für die Cloud
inovex GmbH
 
Searchbot
SearchbotSearchbot
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Andreas Wissel
 
Uwe Ricken – IT-Tage 2015 – Workshop: MS SQL Server Optimierung
Uwe Ricken – IT-Tage 2015 – Workshop: MS SQL Server OptimierungUwe Ricken – IT-Tage 2015 – Workshop: MS SQL Server Optimierung
Uwe Ricken – IT-Tage 2015 – Workshop: MS SQL Server Optimierung
Informatik Aktuell
 
Hybrid cloud iaa-s_office-365-azure_sharepoint-konferenz-wien-2013_ankbs_mich...
Hybrid cloud iaa-s_office-365-azure_sharepoint-konferenz-wien-2013_ankbs_mich...Hybrid cloud iaa-s_office-365-azure_sharepoint-konferenz-wien-2013_ankbs_mich...
Hybrid cloud iaa-s_office-365-azure_sharepoint-konferenz-wien-2013_ankbs_mich...Michael Kirst-Neshva
 
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und behebenPimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
David Schneider
 
Java in the Cloud - am Beispiel der Google App Engineg
Java in the Cloud - am Beispiel der Google App EnginegJava in the Cloud - am Beispiel der Google App Engineg
Java in the Cloud - am Beispiel der Google App Engineg
gedoplan
 
Webinar: Azure Virtual Desktop in der Praxis
Webinar: Azure Virtual Desktop in der PraxisWebinar: Azure Virtual Desktop in der Praxis
Webinar: Azure Virtual Desktop in der Praxis
A. Baggenstos & Co. AG
 
Von Applets zu Web Components: Robuste Design Systems mit Storybook und Angular
Von Applets zu Web Components: Robuste Design Systems mit Storybook und AngularVon Applets zu Web Components: Robuste Design Systems mit Storybook und Angular
Von Applets zu Web Components: Robuste Design Systems mit Storybook und Angular
Andreas Wissel
 
Von Windows Forms zu Web Components: robuste und flexible User Experience mit...
Von Windows Forms zu Web Components: robuste und flexible User Experience mit...Von Windows Forms zu Web Components: robuste und flexible User Experience mit...
Von Windows Forms zu Web Components: robuste und flexible User Experience mit...
Andreas Wissel
 
Progressive Web Apps mit Angular
Progressive Web Apps mit AngularProgressive Web Apps mit Angular
Progressive Web Apps mit Angular
Jens Binfet
 
Azure Notebooks
Azure NotebooksAzure Notebooks
Azure Notebooks
TEitelberg
 
Best Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationBest Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationSamuel Zürcher
 
Android Apps mit Xamarin entwickeln
Android Apps mit Xamarin entwickelnAndroid Apps mit Xamarin entwickeln
Android Apps mit Xamarin entwickeln
André Krämer
 
SharePointCommunity.ch SharePoint Lösungen für die Zukunft
SharePointCommunity.ch SharePoint Lösungen für die ZukunftSharePointCommunity.ch SharePoint Lösungen für die Zukunft
SharePointCommunity.ch SharePoint Lösungen für die Zukunft
David Schneider
 

Ähnlich wie Mobile Games mit Windows Azure (20)

Chatbot Hackathon Slidedeck
Chatbot Hackathon SlidedeckChatbot Hackathon Slidedeck
Chatbot Hackathon Slidedeck
 
Dev Day 2024: Fabian Zillgens - Entwicklung einer Infrastruktur für maschinel...
Dev Day 2024: Fabian Zillgens - Entwicklung einer Infrastruktur für maschinel...Dev Day 2024: Fabian Zillgens - Entwicklung einer Infrastruktur für maschinel...
Dev Day 2024: Fabian Zillgens - Entwicklung einer Infrastruktur für maschinel...
 
2006 - Basta!: Web 2.0 mit asp.net 2.0
2006 - Basta!: Web 2.0 mit asp.net 2.02006 - Basta!: Web 2.0 mit asp.net 2.0
2006 - Basta!: Web 2.0 mit asp.net 2.0
 
Einführung in Microsoft Azure und seine Funktionalitäten
Einführung in Microsoft Azure und seine FunktionalitätenEinführung in Microsoft Azure und seine Funktionalitäten
Einführung in Microsoft Azure und seine Funktionalitäten
 
Azure WorkshopPart1 Intro
Azure WorkshopPart1   IntroAzure WorkshopPart1   Intro
Azure WorkshopPart1 Intro
 
Azure Data Factory – Data Management für die Cloud
Azure Data Factory – Data Management für die CloudAzure Data Factory – Data Management für die Cloud
Azure Data Factory – Data Management für die Cloud
 
Searchbot
SearchbotSearchbot
Searchbot
 
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
 
Uwe Ricken – IT-Tage 2015 – Workshop: MS SQL Server Optimierung
Uwe Ricken – IT-Tage 2015 – Workshop: MS SQL Server OptimierungUwe Ricken – IT-Tage 2015 – Workshop: MS SQL Server Optimierung
Uwe Ricken – IT-Tage 2015 – Workshop: MS SQL Server Optimierung
 
Hybrid cloud iaa-s_office-365-azure_sharepoint-konferenz-wien-2013_ankbs_mich...
Hybrid cloud iaa-s_office-365-azure_sharepoint-konferenz-wien-2013_ankbs_mich...Hybrid cloud iaa-s_office-365-azure_sharepoint-konferenz-wien-2013_ankbs_mich...
Hybrid cloud iaa-s_office-365-azure_sharepoint-konferenz-wien-2013_ankbs_mich...
 
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und behebenPimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
 
Java in the Cloud - am Beispiel der Google App Engineg
Java in the Cloud - am Beispiel der Google App EnginegJava in the Cloud - am Beispiel der Google App Engineg
Java in the Cloud - am Beispiel der Google App Engineg
 
Webinar: Azure Virtual Desktop in der Praxis
Webinar: Azure Virtual Desktop in der PraxisWebinar: Azure Virtual Desktop in der Praxis
Webinar: Azure Virtual Desktop in der Praxis
 
Von Applets zu Web Components: Robuste Design Systems mit Storybook und Angular
Von Applets zu Web Components: Robuste Design Systems mit Storybook und AngularVon Applets zu Web Components: Robuste Design Systems mit Storybook und Angular
Von Applets zu Web Components: Robuste Design Systems mit Storybook und Angular
 
Von Windows Forms zu Web Components: robuste und flexible User Experience mit...
Von Windows Forms zu Web Components: robuste und flexible User Experience mit...Von Windows Forms zu Web Components: robuste und flexible User Experience mit...
Von Windows Forms zu Web Components: robuste und flexible User Experience mit...
 
Progressive Web Apps mit Angular
Progressive Web Apps mit AngularProgressive Web Apps mit Angular
Progressive Web Apps mit Angular
 
Azure Notebooks
Azure NotebooksAzure Notebooks
Azure Notebooks
 
Best Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationBest Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL Installation
 
Android Apps mit Xamarin entwickeln
Android Apps mit Xamarin entwickelnAndroid Apps mit Xamarin entwickeln
Android Apps mit Xamarin entwickeln
 
SharePointCommunity.ch SharePoint Lösungen für die Zukunft
SharePointCommunity.ch SharePoint Lösungen für die ZukunftSharePointCommunity.ch SharePoint Lösungen für die Zukunft
SharePointCommunity.ch SharePoint Lösungen für die Zukunft
 

Mobile Games mit Windows Azure

  • 1. Mobile Games mit Microsoft Azure Jürgen Gutsch
  • 2.
  • 3. Jürgen Gutsch • Developer, Consultant und Trainer bei der YooApplications AG in Basel • Stolzer Papa von drei Kindern • Blogger, Autor von Fachartikeln • Speaker auf Konferenzen und User Groups • User Group Leader des .NET-Stammtisch Konstanz- Kreuzlingen • .NET-Begeisterter Softwareentwickler • Webentwickler • Open Source und ALT.NET Enthusiast • Clean Code Developer
  • 5. Wir suchen Dich! Die YooApps bietet fünf interessante Positionen, die es zu besetzen gilt. Trifft eines der fünf Profile unter: www.yooapps.com/jobs auf dich zu, so sende uns noch heute deine Unterlagen an jobs@yooapps.com! • Software Engineer im Bereich .Net (80-100%) • Unity3D Game Developer (80-100%) • Web- oder Mobile Developer (80-100%) • Projektleiter / Kundenberater (80-100%) • User Experience Designer / Konzepter (80-100%)
  • 8. Das Game • Kräuteranbau auf einem Feld • Pflegen und Hegen der Kräuter • Ernten und Verarbeiten der Kräuter • Verkaufen und Sammeln der Kräuter • Nutzung von Gutscheincodes • Geo-Interaktion => Felder an echten Geopositionen • Standortabhängige Feldqualität • Reales Wetter am Standort des Feldes • Highscore • Push-Benachrichtigung
  • 11. Konzept • Rundenbasiert • Beliebig viele Runden pro Spieler • Mehrere Felder pro Runde • Krauter, Geräte und Felder kosten Geld • Verkauf von Kräutern bringt Geld • Aktionen bringen Punkte • Ziele des Spiels: • Von allen Kräutern eine bestimmte Menge an Ricola zu senden um echtes Kräuterzucker zu erhalten • In der Gesamt-Highscore so weit oben wie zu sein.
  • 12. Anforderungen • Stabilität • Ausfallsicherheit • Skalierbarkeit • Performance • Wartbarkeit • Ausführliches Logging • Spielhistorie
  • 13. Zahlen • Über 17.500 App Downloads • Knapp 25.500 Felder • Über 13.000 Spieler • Über 4.500 aktive Spieler • Davon Über 2.500 sehr aktive Spieler (>50.000 Punkte) • Etwa 6.000 Events pro Spielrunde und Spieler • Ca. 54.000.000 Einträge (Stand März 2014)
  • 14. Infrastruktur • Compute-Instanzen / Web Roles mit • REST Schnittstelle zur Kommunikation mit den Clients • Spiellogik zum Großteil auf dem Server • Background Services / Worker Role • Für Push-Nachrichten und Schädlingsberechnung • Relationale Datenbank für Veränderbare Daten • Nutzerdaten, Highscore • Bestellungen (von Kräuterzucker) • Objektdatenbank für nicht veränderbare Daten • Spielaktionen • Nur hinzufügen von einzelnen Daten • Schnelles Lesen von vielen Daten
  • 15. Microsoft Azure 2 Web Roles 1 Worker Roles Table Storage SQL Database Windows Azure Cache
  • 16. CQRS Pattern • Die Spielrunde ist das Aggregate • Unsere Hauptdomäne in der alle Aktionen stattfinden • Alle Interaktionen finden in einer Spielrunde statt • Background-Service und User führen Aktionen aus • Azure Table Storage wird als Event Store verwendet • Snapshots werden im Azure Cache abgelegt • Eigentlich „Event Sourcing + Commands“ statt CQRS • Querying findet auf dem Snapshot aus dem Eventstore statt und nicht auf einer denormalisierten Datenbank
  • 17. Exkurs: CQRS Pattern Quelle: CAP-Theorem: http://de.wikipedia.org/wiki/CAP-Theorem • Konsistenz: Alle Knoten sehen zur selben Zeit, dieselben Daten. • Verfügbarkeit: Alle Anfragen an das System werden stets beantwortet. • Partitionstoleranz: Das System arbeitet auch bei Verlust von Nachrichten, einzelner Netzknoten oder Partition des Netzes weiter. CAP-Theorem
  • 18. Exkurs: CQRS Pattern Quelle: SQRS Journey: http://msdn.microsoft.com/en-us/library/jj591573.aspx
  • 19. Exkurs: CQRS Pattern Quelle: http://www.gridshore.nl/2009/12/21/cqrs-made-easy-with-cqrs4j
  • 20. Exkurs: CQRS Pattern Event Store Aggregate Version Event Details GR1 1 Field Added GEO=lat,long;Name=MyField; GR1 2 Quadrant Plowed Q=a1,a2,a3,a4,… GR2 1 Field Added GEO=lat,long;Name=MyField GR1 3 Quadrant Seeded Seed=pepermint;Q=a1,a2,a3,a4 GR2 2 Quadrant Plowed Q=b2,b3,c2,c3 GR2 3 Quadrant Seeded Seed=pepermint;Q=b2,b3,c2,c3 GR3 1 Field Added GEO=lat,long;Name=MyField GR1 4 Quadrant Weeded Q=a1,a2,a3,a4 … … … …
  • 21. Fragen / Diskussion / Kontakt Zeit für Fragen und Diskussion jetzt … … oder jederzeit: juergen@gutsh-online.de Twitter: @sharpcms FB//:juergen.gutsch Skype//:juergen.gutsch