Web Developer Conference 2012 – Tag 2
Nach dem ersten Tag folgt natürlich noch der zweite Konferenztag der Web Developer Conference in Hamburg, hab es erst jetzt geschafft den zweiten Tag zusammenzufassen, damit ihr auch seht was ihr verpasst habt 😉
Session 2: David Zülke – Big Data mit Hadoop
Erstmal habe ich selbst etwas verpasst, denn den ersten Slot habe ich nicht sehen können, mein Tag begann mit dem Vortrag von David Zülke über Big Data mit Hadoop. Hadoop ist das Standard-Toolset um mit normaler Hardware einen großen Datencluster aufzubauen mit dem man Petabytes von Daten speichern und abfragen kann. Durch die Verteilung auf möglichst viele Clusternodes mit möglichst vielen Festplatten geht es hauptsächlich darum I/O Flaschenhälse zu verhindern, und Daten parallel zu schreiben und zu lesen. Beeindruckend sind die Zahlen von Facebook und Google: Facebook hat 2010 pro Tag 12 TB Daten in ihren Cluster gepumpt, und ca. 12,5Petabyte an Gesamtspeicher. Google bearbeitete 2007 pro Monat 400 Petabyte und schreibt täglich bis zu 1 Petabyte in ihren Cluster! Whao…
David hat noch weitere beindruckende Zahlen genannt, andere Firmen die stark auf Hadoop setzen, dann in 3-4 Slides kurz die Theorie von Map/Reduce gezeigt und dann in der Praxis Hadoop auf seinem Notebook installiert, Daten (400MB Accesslogs) importiert und dann eine Abfrage gestartet (Bytes pro IP-Adresse aufgelistet). Installation 3 Befehle, Mapper+Reducer schreiben (10 Zeilen), fertig, den Rest macht Hadoop. Das dauerte nicht länger als 5 Minuten und zeigt, wie einfach Hadoop (zumindestens die Standardfunktionen) zu benutzen ist. Und es skaliert fast linear. Yahoo hat mal (nur testweise) 25.000 Nodes aufgesetzt, Twitter nutzt es für Logging und Analysen, LinkedIn für Beziehungsgraphen und „folgende Personen könnten Sie kennen“ Berechnungen. Die New York Times hat als Mapper einen OCR-Scanning-Prozess genommen und massiv parallel alle alten Ausgaben eingescannt und digitalisiert innerhalb von 24 Stunden, entstanden sind 4TB Daten.
David ging noch kurz ein auf das darunter liegende HDFS Dateisystem, Datanodes und Namenodes und die verschiedenen Distributionen, und dass man die Mapper und Reducer auch mit HadooPHP schreiben kann.
Hadoop steht auf meiner Liste, werdet ihr bald weiteres zu hören hier im Blog.
Session 3: Stephan Hochdörfer – Große Systeme, lose Kopplung, Spaß bei der Arbeit
Nach einer kurzen Kaffeepause ging es weiter mit Stephan Hochdörfer, er zeigte wie man größere Systeme so erstellt dass sie einfach testbar, einzelne Module und Services leicht austauschbar sind und man dadurch auch schön skalieren kann. Grundprinzip ist die lose Kopplung, Abstraktion und Zwischenschichten an den passenden Stellen einzufügen. Horizontale und vertikale Trennung, Servicesklassen, Service-Locator und Dependency-Injection, SOA. Ein sehr guter Rundumschlag jeweils mit Argumenten und Veranschaulichung über das Thema, wer das gesehen und verstanden hat baut in Zukunft bessere komplexe Systeme.
Session 4: Bastian Hofmann – Echtzeit Monitoring und Logging
Im nächsten Vortrag von Bastian Hoffmann wurden einige Lösungen vorgestellt wie man mit einfachen Mitteln ein zentrales Logging aufsetzt und zentral wichtige System- oder Businesswerte erheben und messen kann. Angefangen beim Logging innerhalb der Applikation mit Monolog und dem apache_note Modul ging er darauf ein wie man gut loggt. Gerade bei verteilten Systemen (SOA) ist es wichtig Querverweise zu setzen, er präfertiert dafür eine CorrelationId oder TraceId, um einfach alle Einträge zu finden die zu einem Request/User gehören. Loggen wird man auch Dinge wie access-Logs, error-Logs, php-error-Logs, MySQL slow-query-Logs, Syslogs der Maschinen und noch einiges mehr. Dazu gehört natürlich auch eine möglichst exakte Synchronisation der Zeit auf allen Maschinen. Gesendet werden die Logs dann mittels logstash und per UDP an eine Message-Queue a la RabbitMQ. Diese leitet es dann weiter an logstash bzw. Graylog2 mit angeschlossenem elasticSearch. Damit hat man alle Logzeilen zentral und durchsuchbar gespeichert.
Systemmesswerte werden mittels Nagios erhoben, Businesswerte (Registrierungen, Kommentare, verkaufte Artikel, Umsätze) mittels statsD und Graphite gesammelt und visualisiert.
Dann ging Bastian noch auf A/B Testing ein, Feature-Flags und den (für mich neuen und interessanten) Bandit-Algorithmus.
Session 5: Nils Lauk – Javascript und UI-Patterns am Beispiel des XING Applicationstacks
Nach dem wieder hervorragenden Mittagessen (es gab zwar zwischenzeitlich Probleme mit der Bereitstellung, bei so vielen Leuten und so wenig Platz aber nicht verwunderlich) setzte ich mich in einen Vortrag von Xing über Javascript- und IU-Patterns. Da ich kein Frontendler bin habe ich mich etwas berieseln lassen und fand vor allem die Zahlen sehr interessant: 180 Millionen PIs im Monat, >30TB HTTP-Traffic im Monat, mehr als 40.000 gleichzeitige Nutzer, 75 Entwickler, 400 Hardwareserver + 400 virtuelle Server.
Eingegangen ist Nils Lauk vor allem auf Themen wie Objektorientiertes CSS, Wiederverwendbarkeit, themenbezogene Sprites, den Xing Requierer, den Preloader der JS/CSS und Bilder vorlädt während sich der Benutzer im Loginformular aufhält, und Javascript-Error-Logging mittels windows.onerror und Ajax-Backendrequest.
Session 6: Simon Hohenadl – Enwickeln ist gut, Releasen ist besser
AutoScout24 war auch auf der Konferenz vertreten und plauderte ein wenig aus dem Nähkästchen, wie in den letzten Jahren hingearbeitet wurde auf schnelleres und einfacheres Releasen, Continuous Delivery. Anhand des neuen Werkstattportals wurde gezeigt wie man sich langsam herantasten kann an einen wirklich agilen und schnellen Entwicklungsprozess, Customer-driven-development. Mit Branches arbeiten und diese live pushen verschiebt die Merging-Probleme nur nach hinten, man arbeitet also immer nur mit einem trunk der immer releasebar ist. Dazu ist viel Disziplin nötig, man sollte mit Feature-Flags arbeiten, Datenbank-Update und -Rollback Scripte gibt es nicht mehr dank MongoDB, Rollbacks gibt es insgesamt nicht mehr. Wenn etwas schiefgegangen ist wird es gefixt und neu ausgerollt (zur Not das neue Feature erstmal wieder deaktiviert).
Man benötigt auch eine möglichst vollständige Automatisierung um fehlerfreie 1-Klick-Deploys machen zu können, und die Buildlaufzeit sollte natürlich so kurz wie möglich sein. Es wird stark auf statische Codeanalyse gesetzt, Pair Programming, Lasttests, Monitoring um Fehler schnell zu sehen, zu lokalisieren und beheben zu können.
Keynote: Pierre Joye – On technologies and languages
Die Abschluss-Keynote mit Pierre Joye behandelte die Zukunft von Sprachen und Technologien allgemein. Er sagt HTML5 eine große Zukunft in allen Bereichen voraus, speziell im mobilen Bereich. Natürlich gebe es Probleme hier und da, aber auf Dauer möchte fast niemand native Apps für alle verschiedenen Betriebssysteme und Plattformen schreiben müssen. Wir müssen auch in anderen Bereichen wieder Dinge vereinfachen und vereinheitlichen, beispielsweise im Virtualisierungsbereich, wo man aktuell auch falles auf eine spezielle Plattform (Amazon) oder Virtualisierungssoftware (VMWare) zuschneidet und nachträglich Mühen hat wenn man mal wechseln möchte. Die Keynote hat auf jeden Fall den Namen Keynote verdient finde ich, in die Zukunft sehen, Ideen vermitteln, Denkanstösse geben, alles dabei.
Fazit
Und da war sie schon wieder vorbei, am dritten Tag mit den Workshops habe ich nicht teilnehmen können, insgesamt eine sehr gut organisierte Konferenz in einer Top Location, gute Speaker, leckeres Essen, an jedem Sitzplatz auch Tische (großartig!), für meinen Geschmack etwas zu wenig Platz außerhalb der Säle beim Mittagessen. Insgesamt auf jeden Fall empfehlenswert, freue mich schon auf nächstes Jahr!
Für alle, die einen Einblick bekommen möchten, es gibt eine Bildergalerie und ein Foto-Album bei Facebook, und auch Interviews gibt es.
sind 400 Hardwareserver + 400 virtuelle Server nicht ein wenig oversized bei 3 Millionen PI am Tag?
christian
24 Sep 12 at 23:26
Gibt es eigentlich irgendwo die Vorträge oder Slides zum Download? Ich habe den Event leider verpasst.
Richard
25 Sep 12 at 16:24
@christian: So genau kann ich das nicht beantworten, das sind sicher nicht alles nur Webserver sondern auch Reverse-Proxy-Caches, Job-Queues/Message-Queues, Mailserver, Datenbanken, Memcaches, Logserver und was man sonst noch so alles braucht. Und wenn für einen Rollout 50% der (Web?)Server heruntergefahren werden um die neue Version aufzuspielen und dann die beiden Gruppen zu tauschen, braucht man auch Luft nach oben, gerade für Lastspitzen Mittags oder Abends. Für Details, wofür die denn alle gebraucht werden, müßtest du dich direkt an Nils wenden.
@Richard: Es gibt für die Teilnehmer einen passwortgeschüzten Download (zip-Datei) mit aktuell 12 Präsentationen.
Einige Präsentationen gibt es aber auch auf Slideshare und Speakerdeck:
http://www.slideshare.net/shochdoerfer/groe-systeme-lose-kopplung-spa-bei-der-arbeit-wdc12
https://speakerdeck.com/u/bastianhofmann/p/advanced-javascript-creating-modern-web-applications
https://speakerdeck.com/u/bastianhofmann/p/measuring-and-logging-everything-in-real-time
https://speakerdeck.com/u/bastianhofmann/p/creating-scalable-web-applications
Michael Kliewe
25 Sep 12 at 16:40