Webmontag Berlin #68
Das Thema des 68. Webmontags in Berlin lautete “Tech. Architectures (from Dev’s to Dev’s)”. Es ging um skalierbare IT Architekturen für webbasierte Anwendungen. In den Räumen der Mobile Suite in der Pappelallee in Prenzlauer Berg gab es drei interessante Vorträge von Berliner Startups zu hören.
Grosse Spielwelten
Knut Nesheim von Wooga sprach im ersten Vortrag von den Herausforderungen, die speziell Simulationsspiele für die Backend IT darstellen. Im Gegensatz zu einfacheren Casual und Mobile Games, die meist noch auf LAMP-ähnlichen Software Stacks laufen, ist hier das ständige Aktualisieren von Statusdaten die wichtigste Herausforderung. Interessanterweise läuft selbst bei solch komplexen Spielen die Kommunikation zwischen Client und Server auf Basis von HTTP.
Das beständige Aktualisieren der Daten durch die Clients verbietet den Einsatz einer Datenbank, da ein Cluster mit den ununterbrochenen Schreib- und Synchronisationsvorgängen überforderte wäre.
Wooga setzt stattdessen einen in Erlang programmierten Applicationserver ein, der pro User einen eigenen Prozess im Speicher hält, wobei jeder User seine eigene Maps hat. Die Antwortzeit liegt so bei bemerkenswerten 1ms. Pro Server können bis zu 20.000 Spieler aktiv sein, wobei die Maschinen nie bis an die Leistungsgrenze gefahren werden. Zu Beginn eines Spiels fragt der Client nach einem Server und Prozess und bleibt bei diesem (stickiness). In kurzen Zeitintervallen wird der Status des gesammten Spiels auf eine Datenbank gesichert.
Entkopplung von Drittsystemen
Im zweiten Vortrag stellte Francis Varga von Cloudpark die für die technisch weniger anspruchsvollen Casual Games von Cloudpark verwendete IT Architektur vor. Die Server sind in PHP programmiert, wobei die Daten für das Spiel und das Tracking in getrennten CouchDB Instanzen verwaltet werden. Die grösste Herausforderung für Cloudpark liegt in der Anbindung externer Dienste, wie E-Mail versenden, Facebook Social Graph API usw. Hier liegen die Antwortzeiten zwischen 300ms und 3s; im Schnitt bei 900ms.
Cloudpark setzt zur Entkopplung von Spiel und externem Service auf einen „Railgun“ genannten Server. Dieser nimmt die Anfragen des Applicationservers entgegen. Hier wird pro Anfrage ein Job im Beanstalk Daemon gestartet, der jeweils einen Job im AWS (Amazon Web Service) verwaltet.
Wer nicht misst, misst Mist
Im letzten Vortrag erzählte Bastian Hoffmann von ResearchGate viel über KPIs, Tracking und Monitoring. Interessant fand ich die Aussagen, dass man sich zu Beginn noch nicht ganz klar war, was das Ziel jeder einzelnen Seite sei und deshalb die KPIs nicht definieren und messen konnte. Erst wenn dies geschehen ist, kann man den Erfolg messen und herangehen, jede einzelne Seite in A/B Tests zu optimieren, wobe diese Tests serverseitig ausgespielt werden.
Research Gate nutzt im Grossen und Ganzen eine typische Web-Architektur mit Load-Balancer, Cluster von Application Servern, server- und clientseitigem Tracking. Technische Besonderheiten in meinen Augen waren der Einsatz von ActiveMQ zur zeitlichen Entkopplung von Aktionen und die Tatsache, dass die Ausgabe im Frontend in kleine, verschachtelte Komponenten unterteilt ist, die jeweils eine eigene URL haben und sämtlichen, benötigten Javascriptcode mitbringen. So können bestimmte Seitenteile bequem nachgeladen werden (z.B. beim Blättern von Veröffentlichungen in einem Nutzerprofil). Eine angefragte HTML-Seite wird aber trotz Modularisierung aus Performancegründen in einem Stück ausgeliefert.
Fazit
Alles in Allem war es ein recht informativer Abend, bei dem für drei sehr unterschiedliche webbasierte Anwendungen jeweils passende Systemarchitekturen vorgestellt wurden.