International Php Conference und Webtec Conference 2012 – Tag 1

Auch dieses Jahr bin ich mal wieder auf der IPC und Webtec in Mainz und werde versuchen die Vorträge, die ich gesehen habe zusammen zu fassen und hier zu berichten.
Was auffällig ist, dass wie so oft viele Vorträge mit interessantem Titel gleichzeitig sind und ich hoffe, dass ich gut gewählt haben.

Dieses Mal gibt es pro Tag nur einen Artikel mit allen Vorträgen, die ich besucht haben.

Log everything
Erste Architektur war Flume plus selbst gehostetes Hadoop plus Hive und Qlikview. Jetzt wurde Flume durch Rabbit MQ und einen selbst geschrieben Consumer in Erlang ersetzt. Hadoop wird nun in Amazon S3 and EMR gehostet.
RabbitMQ läuft lokalen auf jedem Application Server und wird in die zentrale RabbitMQ synchronisiert.
Flume ist im Produktivbetrieb noch nicht wirklich stabil und muss zentral konfiguriert werden.
Die RabbitMQ Consumer sind selbst geschrieben in Erlang und kopiert die Daten in einen S3 Bucket. Ausserdem werden dort die Logs auch in eine Graylog Instanz kopiert.
Das Preprocessing der eingehenden Nachrichten erfolgt per Cascalog, welches intern Clojure benutzt. Damit werden die Log Messages z. B. in verschiedenen Verzeichnisse verschoben. Diese laufen innerhalb von Amazon Elastic MapReduce.
Die Auswertung erfolgt per Hive.

Resource-oriented Client Architecture
REST ist die Architektur des Webs.
Der State nur im Client zu halten ist die erstrebenswerte Vorgehensweise.
Wenn der Server Webseiten ausliefert sollte dies per ROCA erfolgen.
http://roca-style.org
RoCA sagt folgendes:
Eine Uri sollte etwas identifizieren. Diese sollte mit den Hauptinhalt der Seite bezeichnet werden.
Benutze die Browserfeatures und deaktiviere diese nicht. Z. B. den Back-Button
Applikationslogik sollte nur auf dem Server ablaufen, da der Client nicht vertrauenswürdig ist und ausserdem lassen sich dann auch mehrere Clients bedienen.
Keine Logik sollte auf Server und Client gleichzeitig implementiert werden.
Damit keine Applikationslogik auf dem Client.
Benutze HTML semantisch und Styling per CSS auf Elementbasis und nicht Seitenbasis.
Javascript und HTML sollten getrennt werden und Javascript sollte die Funktionalität lediglich anreichern. Z. B. bei Links kein JS in href und onclick. JS per handler hinzufügen. JQuery UI bietet sich hier an.
Ziel ist eine bessere Architektur in allen Schichten und nicht zwingend die Möglichkeit eine Webseite ohne Javascript zu bauen.

The Internet is your Application Blue Print
Die meisten Webapplikationen sind Monolithen.
Das Internet ist an sich entkoppelt und kommuniziert über klare Interfaces.
API, Webfrontend, Authentifizierung, Daten,… sollte getrennt werden und kann in unterschiedlichen Sprachen entwickelt sein und auf verschiedenen Servern gehostet sein.
Semantische Auszeichnung bringt neben besseren Suchergebnissen auch noch die Möglichkeit des inline Editing z. B. mit create.js
Möglichkeiten um SOA beherrschbar zu machen sind u. a. ESI, Message-Queues,…
Dependancy Management ist essentieller Bestandteil jeder Webapplikation. Z. B. mit Composer für PHP.

Rethinking the Architecture of a modern CMS
Auch CMS müssen entkoppelt werden in die drei Concerns Web Editing Tool, Web Framework und Content Repository.
Create.js ermöglicht das Editieren inline in der Seite.
http://createjs.org
Der Datenaustausch findet via RDF und JSON-LD statt. Alle Änderungen werden im local storage gespeichert.
Ist z. B. in Symfony CMF integriert.
Die Speicherung sollte standardisiert gegen Interfaces erfolgen, z. B. JCR. Damit lässt sich simpel beginnen und später zu einem performanterem Repository wechseln.
Nun lässt sich das CMS zwischen den beiden Schichten auch selbst implementieren. Zugriff auf das CR kann z. B. JCR per SQL2 erfolgen.

RESTful Http – Beyond the Intro Level
Die Identität (Uri) und die Repräsentation (Accept Header) sind klar getrennt.
Verlinkung auf andere Ressourcen ist ein Kernkonzept.
Don’t worry about Uri Design.
Aufteilung der Funktionalitäten erfolgt nach den Aktionen CRUD.
Als Webentwickler sollte man immer dem Post-Redirect-Get Paradigma folgen.
Keine Version in der Uri.
Es soll nur eine Uri benutzt werden. Der Einstiegspunkt. Von dort aus soll der Client die Uris vom Server erhalten oder anhand eines Rezepts, dass vom Server geschickt wurde, konstruieren.
Uris sollten nicht im Client hardcoded sein. Uris sollten vom Server konstruiert werden.
Service Documents enthalten die Links zu den Services bzw. Raoul Ressourcen. Diese können statische Dateien sein. Ausserdem können diese Consumer spezifisch sein. Das rel Attribut im Link identifiziert den Kontext bzw. die Aufgabe. Diese sind teilweise von iana.org spezifiziert.
Abhängig von den Links die der Client vom Server enthält kann dieser mögliche Aktionen ableiten: delete, editiert,…
Links auf z. B. nächste / vorherige Seite können durch das senden des Links im Header (RFC 5988) transportiert werden.
JSON Home ist ein weiterer Standard für Links.
Lose Kopplung funktioniert nur wenn sich alle daran halten.
Clients sollten sich nicht auf eine Uri Struktur verlassen.
Toleranz bei Empfänger und strikte Einhaltung von Standards beim senden ist eine gute Voraussetzung für erfolgreiche REST Kommunikation.
Nur die Entrypoints sollten Versionen haben und dann auf unterschiedliche Ressourcen verlinken. Alternativ dazu kann auch die Ressource zu einem Service Document hinzugefügt werden und es erfolgt paralleler Betrieb.
Auch die Dokumentation sollte per REST zur Verfügung gestellt werden und auch eine Verlinkung von und zu den Ressourcen sollte erfolgen. Und die beste Dokumentation ist die API mit Entrypoints selbst.

Varnish Cache
Kann auch als Loadbalancer eingesetzt werden.
Nach Möglichkeit sollte er in RAM cachen.
Cacht per se alles was GET ist und eine TTL > 0 hat.
Benutzt Http Header für Expiration and Validation.
Per vcl Config Datei lassen sich verschiedene Strategien für verschiedene Systeme, z. B. WordPress konfigurieren.
Darüber hinaus lassen sich für jeden Zustand Aktionen in der Konfiguration definieren. Damit lässt sich das Verhalten beliebig anpassen.
Loadbalancing kann nach mehreren Algorithmen wie Zufall oder Round Robin erfolgen.
Varnish cacht keine SSL Requests.
Durch den Saint Mode kann die Ausfallsicherheit im Backend erhöht werden.
Reinigen kann per Cli oder per http mit PURGE Header veranlasst werden. In einem Cluster kann dies z. B. via curl auf allen Servern erfolgen.
Apache Style Logging kann aktiviert werden. Standardmäßig erfolgt ein Logging lediglich in Shared Memory.
Varnishtop zeigt Echtzeit Informationen über die aktuellen Requests an.
Varnishstat zeigt Statistiken an.
Varnish funktioniert mit ESI.
Es können C Programme direkt in das Config File implementiert werden.
Ein Warmup anhand URLs in einer Textdatei wird out of the Box unterstützt.

Kursänderung? Ja, wirklich!
Das Ändern der Projektmethode setzt eine kulturelle Klärung voraus.
Die Firmenkultur ist die Basis für die Zusammenarbeit. Diese ist implizit: „Das haben wir schon immer so gemacht…“
Die Summe der Grundannahmen der Mitarbeiter macht die Firmenkultur aus.
Nicht gehaltene Liefertermine stellen für das Management den agilen Ansatz in Frage. D. h. agile Vorgehensweise funktionieren nur mit agilem Management.
Die Beantwortung der zentralen Fragen „wer ist der Kunde“ zusammen mit dem dem Management sollte mehr Klarheit bringen.
Eine Sache zusammen verändern schafft bessere Zusammenarbeit.

Der erste Cyberwar hat begonnen
Ziel von Stuxnet ist die Zerstörung der iranischen Atomanlagen.
Flame ist wohl auch von der USA und Israel entwickelt und wohl schon vor Stuxnet.
Gauss sollte die Beweise für die Unterstützung von Terroristen durch Banken liefern.
Problem ist, dass diese Schwachstellen auch von anderer Schadsoftware ausgenutzt werden.

ownCloud
Alternative zu Dropbox und Konsorten.
Ist ein Open Source Projekt.
Sehr viele Funktionen sind bereits eingebaut, wie z. B. Abspielen von Musik und Präsentationen im Browser.
Kann im eigenen Netz gehostet werden. Es gibt auch schon Hoster, die das anbieten.

Terms of Service – Didn’t read
http://tos-dr.info bewertet AGB verschiedener Webplattformen und weißt auf Probleme hin und vergleicht diese in verschiedenen Kategorien.
Ist ein Open Source Projekt.
Es gibt Browser-Extensions, die wenn man auf der Seite ist, das Rating anzeigen.

Saffire
Neue Programmiersprache.
Soll auf PHP und Python basieren.
Soll nächstes Jahr erscheinen.
Alles wird ein Objekt sein.
Utf 8 out of the Box.
Echte OO Sprache.
Threads Unterstützung nativ.
Compiled Bytecode.
FastCGI and CLI only.

Fazit
Ich bin positiv überrascht, dass die Qualität der Vorträge im Vergleich zu letztem Jahr deutlich gestiegen ist und hoffe, dass es morgen so weiter geht und ich nicht nur Glück hatte, in den guten zu sitzen. 😉

GD Star Rating
loading...

Kommentar verfassen