Reimplementierung eines Onlineshops mit einer NoSQL-Datenbank in der Cloud

Weltweites Shopping auf der Couch

Weltweites Shopping auf der Couch

Reimplementierung eines Onlineshops mit einer NoSQL-Datenbank in der Cloud

Weltweites Shopping auf der Couch


Dieser Artikel startet eine Artikelserie, in der wir die vollständige Neuimplementierung des Goodgame-Studios-Onlineshops beschreiben werden.

In diesem Artikel gehen wir auf die grundsätzlichen Anforderungen und Designentscheidungen für die Reimplementierung des Onlineshops sowie die Konzeption einer skalierbaren Architektur auf der Grundlage aktueller PHP-Technologien ein. In weiteren Artikeln werden wir uns gezielt einzelnen technischen Herausforderungen widmen: Wie wir die weltweite Datenhaltung mittels einer NoSQL-Datenbank organisiert haben, wie wir die Infrastruktur und Architektur darauf ausrichten konnten, in der Cloud elastisch skalierbar zu funktionieren, und wie wir unser Performanceziel erreichen.

Das Setting

Goodgame Studios bietet kostenlose Onlinespiele im Web und auf mobilen Geräten an. Mittlerweile haben sich über 210 Mio. Nutzer für die Spiele registriert. Diese greifen aus 230 Ländern (Google Analytics) auf die Systeme zu und erzeugen 350 Mio. Dateiaufrufe pro Tag. Die Nutzer haben im Spiel die Möglichkeit, Dekorationen und Beschleunigungen mittels In-Game-Währung zu kaufen. Dafür gibt es einen weltweiten Onlineshop, in dem die Transaktionen zügig abgewickelt werden sollen. Über 28 Mio. Nutzer haben diesen Shop bereits benutzt.

Während die Spieleclients in ActionScript (Flash) und die Spieleserver in Java geschrieben sind, wurde der Onlineshop bewusst in PHP 5 entwickelt, um die Dynamik, Flexibilität und Performanz der Sprache auszunutzen.

Der ursprüngliche Onlineshop ist zusammen mit den ersten Spielen entstanden und war schnell an seine Grenzen gekommen. Die Architektur war nicht für die notwendigen Erweiterungen und Skalierung geeignet, sodass eine Reimplementierung geplant wurde. Dadurch konnten die neuesten Frameworks und Technologien genutzt werden, um für einen längeren Zeitraum und anspruchsvollere Anforderungen gewappnet zu sein.

Nicht funktionale Anforderungen für einen weltweiten Onlineshop

Die Anforderungen für aktuelle Webanwendungen sind hoch. Die Anwender erwarten neben einer hohen Usability und grafisch ansprechenden Gestaltung einen großen Funktionsumfang und schnelle Reaktionszeiten. Mittlerweile sind hohe Auflösungen bei den Clients weit verbreitet. Telefone, Tablets und Laptops haben bereits die vierfache Auflösung. Diese führen zu substanziell größeren Grafiken und damit einem hohen Transfervolumen für eine Seite. Gleichzeitig gilt die Richtschnur, dass eine Seite innerhalb von weniger als zwei Sekunden geladen bzw. benutzbar sein muss. Dies ist in technisch gut ausgebauten Gebieten erreichbar. Es bleibt aber trotzdem wenig Spielraum für unnötige Verluste. Der Seitenaufbau muss genau geplant werden, um das Ladeverhalten der Browser positiv auszunutzen. Wird die Distanz zwischen Server und Endanwender aber zu groß, dann erfordern bereits die technisch bedingten Latenzen eine darüber hinausgehende infrastrukturelle Lösung. Es lassen sich also z. B. Asien und Ozeanien nicht vernünftig über Server aus Europa bedienen.

Gleichzeitig ist es nicht sinnvoll, in technisch weniger weit entwickelten Gebieten gleich die hochauflösenden Grafiken auszuliefern, wenn bereits die Internetleitung zu knapp bemessen ist, um das Zwei-Sekunden-Limit für die gesamte Seite einzuhalten.

Die wesentliche Anforderung für den weltweiten Betrieb ist die Verteilung. Latenzen lassen sich nur durch Nähe wirksam klein halten. Deswegen ist es notwendig, den Onlineshop möglichst in der Nähe von relevanten Nutzergruppen zu platzieren. Der Shop muss also grundsätzlich mit mehreren Standorten funktionieren, um alle Kontinente anbinden zu können. Dabei geht es nicht nur um die Auslieferung der Webseiten und damit verbundenen Grafiken. Für einen Shop müssen auch Daten ausgewertet und gespeichert werden: Die Artikel für welches Spiel sollen angezeigt werden? Welche Sonderaktionen laufen gerade im betreffenden Land bezogen auf dieses Spiel? Welche Präferenzen hat der Anwender? Ist der verwendete Gutschein noch gültig? Deswegen sind nicht nur verteilte Webserver sondern auch verteilte Datenbanken nötig.

Eine weitere Anforderung ist die Skalierbarkeit. Damit der Shop auch in Spitzenzeiten mit hohem Anfragevolumen umgehen kann, bietet sich eine horizontale Skalierung an. Die Architektur sollte im Idealfall so gestaltet sein, dass mit ...