Im letzten Jahr entstand für einen großen Kunden ein Mobile Game für iOS, das serverseitig auf Windows Azure basiert. Zum Einsatz kommen dabei Computer-Instanzen, Backup, Table Storage, SQL Database. Die Spiel-Logik wurde serverseitig mit CQRS umgesetzt, das für Azure ideal einsetzbar ist. Der Vortrag gibt einen Einblick in die Architektur und zeigt den Einsatz der gewählten Azure-Komponenten.
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.
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
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