{"id":1843,"date":"2012-10-10T18:31:18","date_gmt":"2012-10-10T18:31:18","guid":{"rendered":"http:\/\/www.ollmetzer.com\/?p=1843"},"modified":"2012-10-10T18:31:18","modified_gmt":"2012-10-10T18:31:18","slug":"webmontag-berlin-68","status":"publish","type":"post","link":"https:\/\/www.ollmetzer.com\/?p=1843","title":{"rendered":"Webmontag Berlin #68"},"content":{"rendered":"<p>Das Thema des <a href=\"http:\/\/webmontag-berlin.de\/webmontag-berlin-68-tech-architectures-from-devs-to-devs\/\" title=\"Webmontag Berlin #68\" target=\"webmontag\">68. Webmontags<\/a> in Berlin lautete \u201cTech. Architectures (from Dev\u2019s to Dev\u2019s)&#8220;. Es ging um skalierbare IT Architekturen f\u00fcr webbasierte Anwendungen. In den R\u00e4umen der Mobile Suite in der Pappelallee in Prenzlauer Berg gab es drei interessante Vortr\u00e4ge von Berliner Startups zu h\u00f6ren.<\/p>\n<p><strong>Grosse Spielwelten<\/strong><\/p>\n<p>Knut Nesheim von Wooga sprach im ersten Vortrag von den Herausforderungen, die speziell Simulationsspiele f\u00fcr die Backend IT darstellen. Im Gegensatz zu einfacheren Casual und Mobile Games, die meist noch auf LAMP-\u00e4hnlichen Software Stacks laufen, ist hier das st\u00e4ndige Aktualisieren von Statusdaten die wichtigste Herausforderung. Interessanterweise l\u00e4uft selbst bei solch komplexen Spielen die Kommunikation zwischen Client und Server auf Basis von HTTP.<\/p>\n<p>Das best\u00e4ndige Aktualisieren der Daten durch die Clients verbietet den Einsatz einer Datenbank, da ein Cluster mit den ununterbrochenen Schreib- und Synchronisationsvorg\u00e4ngen \u00fcberforderte w\u00e4re.<\/p>\n<p>Wooga setzt stattdessen einen in Erlang programmierten Applicationserver ein, der pro User einen eigenen Prozess im Speicher h\u00e4lt, wobei jeder User seine eigene Maps hat. Die Antwortzeit liegt so bei bemerkenswerten 1ms. Pro Server k\u00f6nnen 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.<\/p>\n<p><strong>Entkopplung von Drittsystemen<\/strong><\/p>\n<p>Im zweiten Vortrag stellte Francis Varga von Cloudpark die f\u00fcr die technisch weniger anspruchsvollen Casual Games von Cloudpark verwendete IT Architektur vor. Die Server sind in PHP programmiert, wobei die Daten f\u00fcr das Spiel und das Tracking in getrennten CouchDB Instanzen verwaltet werden. Die gr\u00f6sste Herausforderung f\u00fcr 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.<\/p>\n<p>Cloudpark setzt zur Entkopplung von Spiel und externem Service auf einen \u201eRailgun\u201c 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.<\/p>\n<p><strong>Wer nicht misst, misst Mist<\/strong><\/p>\n<p>Im letzten Vortrag erz\u00e4hlte Bastian Hoffmann von ResearchGate viel \u00fcber 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.<\/p>\n<p>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\u00e4mtlichen, ben\u00f6tigten Javascriptcode mitbringen. So k\u00f6nnen bestimmte Seitenteile bequem nachgeladen werden (z.B. beim Bl\u00e4ttern von Ver\u00f6ffentlichungen in einem Nutzerprofil). Eine angefragte HTML-Seite wird aber trotz Modularisierung aus Performancegr\u00fcnden in einem St\u00fcck ausgeliefert.<\/p>\n<p><strong>Fazit<\/strong><\/p>\n<p>Alles in Allem war es ein recht informativer Abend, bei dem f\u00fcr drei sehr unterschiedliche webbasierte Anwendungen jeweils passende Systemarchitekturen vorgestellt wurden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das Thema des 68. Webmontags in Berlin lautete \u201cTech. Architectures (from Dev\u2019s to Dev\u2019s)&#8220;. Es ging um skalierbare IT Architekturen f\u00fcr webbasierte Anwendungen. In den R\u00e4umen der Mobile Suite in der Pappelallee in Prenzlauer Berg gab es drei interessante Vortr\u00e4ge von Berliner Startups zu h\u00f6ren. Grosse Spielwelten Knut Nesheim von Wooga sprach im ersten Vortrag [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-1843","post","type-post","status-publish","format-standard","hentry","category-development"],"_links":{"self":[{"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/posts\/1843","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1843"}],"version-history":[{"count":0,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/posts\/1843\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1843"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1843"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1843"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}