3 Tage PHP-Summit 2012 in Berlin
Zum ersten Mal war ich beim PHP-Summit, zur Adventszeit in Berlin im Park-Inn am Alexanderplatz. Doch vor der Reise der erste Schock: In der Macbook-Tasche aus der Firma fehlt die Hälfte des Netzkabels, und auf die Schnelle habe ich keines auftreiben können. Also ohne Ladekabel los, am Sonntag Nachmittag. Wie man die Bahn kennt ging es auch direkt schief, der Regionalexpress kam 20 Minuten verspätet und ich verpasste den ICE. Na toll, erstmal weiter mit der nächsten Regionalbahn, um dort dann einen Alternativ-ICE zu nehmen. Außer etwas Kälte halb so wild, genug Zeit hatte ich ja. Nach knapp 6,5 Stunden (statt geplanter 4 Stunden) kam ich dann in der Hauptstadt an, und nach etwas Verwirrung wie groß „der Alexanderplatz“ ist fand ich auch das Hotel (ziemlich groß und hoch, trotzdem mußte ich eine Viertelstunde rumlaufen und suchen). Check-In, noch kurz auf den Weihnachts-Markt für ein Abendessen, und dann ein unruhiger Schlaf bis zum Start des Events.
Tag 1
Morgens beim Frühstück stieß ich auch durch Zufall auf 3 der 4 Speaker, die auch interessante Bahn-Anreise-Geschichten vom Vorabend zu erzählen hatten.
In der ersten Session die ich besucht habe hat Arne Blankerts einige Best Practices zum Besten gegeben. Wir Teilnehmer konnten dabei Schwerpunkte setzen bzw. Themen aussuchen die uns besonders interesssierten, darunter der Einsatz von nginx in Verbindung mit PHP-FPM, wie man aus Git eine nützliche Versionsinfo bekommt zusätzlich zum relativ unhantlichen SHA1-Hash, XDebug und xhprof wenn es um Performance-Profiling geht, wie man Datenbank-Schema und -Daten migrieren kann je nach Einsatzzweck (mit oder ohne Downtime), oder wie eine sehr einfache und schnelle Möglichkeit aussieht, Anwendungsdaten mittels DOMDocument zu speichern und wieder zu laden.
Auch den Nachmittag über, die nächsten 3,5 Stunden, saß ich bei Arne. Thema war diesmal alles rund um die korrekte Fehlerbehandlung. Was tut man mit Warnings, wie fängt man sie generell ab (set_error_handler()), wie wandelt man sie um in Exceptions, wie kann man selbst User-Warnings triggern, wie kann man einige Fatal-Errors abfangen (register_shutdown_function()), wie baut man seine Exception-Strukturen am besten auf. Da DOMDocument eines seiner Lieblingstools zu sein scheint zeigte er wie man damit Fehler in Formularen anzeigen sowie die bereits eingegebenen Daten wieder anzeigen kann, generisch und in wenigen Dutzend Zeilen Code.
Auch gab er den Tipp, eventuell von Anfang an darüber nachzudenken ob man später im Fehlerfall Teile der Webseite leicht abschalten können möchte, beispielsweise wenn die User-Datenbank nicht erreichbar ist blendet man das Login-Formular aus, sodass die Seite benutzbar bleibt. Solch ein selektives Deaktivieren (Feature Switch) kann auch später bei Überlastung oder kurzzeitiger Maintenance interessant sein.
Es gibt aber nicht nur Fehler und Probleme in der Applikation, auch bei der Hardware bzw. der Infrastruktur muss man über Fehlervermeidung und -behandlung nachdenken.
Abends war Kris Köhntopp zu Gast und berichtete in seiner unnachahmlich-sympatischen Geschichtenerzähler-Art von der Arbeit bei booking.com. Eine hoch-agile Entwicklung, Experimente, Feature-Switches, Schrott-Code der zu 95% (wenn er kein Geld bringt) wieder weggeworfen wird, extremes Monitoring, größtmögliches Vertrauen in die Mitarbeiter (jeder darf jederzeit Live pushen) und ca. 30 Deployments pro Tag. Bei einem jährlichen Wachstum von 70% stösst man jedes Jahr an neue Grenzen und bewerkstelligt unglaubliche Mitarbeiter-Wachtumszahlen. Ich kannte den Vortrag bereits, trotzdem war es wieder höchst amüsant ihm zuzuhören.
Tag 2
Der zweite Tag begann bei mir mit der Session über die wichtigsten Entwurfsmuster von Stefan Priebsch. Alle Beispiele hat Stefan, ähnlich wie Arne am Vortag, mit möglichst viel Live-Coding unterstützt und direkt gezeigt, wie Factories bzw. Dependency-Injection-Container aussehen, was Decorator und Mediatoren sind und wie das Repository-Pattern genutzt werden kann. Alle Pattern kann ich gar nicht mehr aufzählen, mir fällt noch ein dass das Proxy-Pattern noch vorgestellt wurde, und Lazy Loading und Lazy Initialisation gezeigt wurden. Das Singleton-Anti-Pattern durfte natürlich auch nicht fehlen.
Am Nachmittag besuchte ich den zweiten Teil über PHPUnit von Sebastian Bergmann, in dem es vor allem darum ging, Probleme der Teilnehmer kennenzulernen und zu lösen, die diese beim Testen hatten. Sebastian erzählte von einem Kulturschock in Indien, wo auf ein Projekt einfach mal 500 Entwickler geworfen werden, und wo bei Bugs einfach neu programmiert statt gefixt wurde. Tests seien da völlig fehl am Platze. Er berichtete von Projekten mit 100.000 globalen Konstanten, von Entwicklern die PHP nach Assembler-Stil programmieren (Parameter für eine Funktion werden in globale Variablen gepackt, in der Funktion dann genutzt, und statt eines Rückgabewertes wird das Ergebnis zurück in globale Variablen geschrieben), sehr amüsante Geschichten.
Weiter ging es mit einigen Bytekit-Beispielen, diversen Test-Smells, dem Konzept des Technical Depts, und dem Profiling-Visualisierungs-Tools gprof2dot.
In der Night-Session stellten Fridel Detzner und Boris Erdmann von Jimdo ihre Erfolgsgeschichte vor, und welch großen Anteil daran Kanban, Kultur und Kaizen haben. Agilität gehört auch hier zum höchsten Gut, um so erfolgreich zu sein und so schnell wachsen zu können. Das Thema war höchst interessant, was sich auch an vielen (gewollten) Zwischenfragen zeigte. Friedel und Boris erzählten wie Kanban eingeführt und zur Erfolgsgeschichte wurde, wie die einzelnen Teams alle unterschiedliche Boards nutzen und wie sich die Prozesse mit der Zeit weiterentwickeln. Anhand von einfachen Regeln, die aber auch nicht in Stein gemeißelt sind, verbessert man sich ständig und bewältigt auch ein unglaubliches Wachstum von einer Hand voll Entwicklern am Anfang auf über 120 international arbeitenden Mitarbeiter innerhalb von 5 Jahren.
Direkt im Anschluss bin ich mit Fabian, einem Leser des Blogs, zum Abendessen ins Brauhaus Mitte, wo wir mehrere Stunden fachsimpleten (tolles Wort!), über Technik im Allgemeinen, Politik (Amerika, Piratenpartei in Berlin), Konzerne, Datenkraken, Konferenzen, Shopsysteme, einfach kreuz und quer interessante Themen diskutierten und austauschten. Vielen Dank Fabian, war ein sehr interessanter und inspirierender Abend!
Tag 3
Am nächsten Morgen kam ich etwas verspätet in die Session von Sebastian zum Thema Git. Vorteile und Unterschiede zu SVN, warum man ohne Git nicht mehr programmieren möchte, vieles mit Live-Beispielen auf der Shell. Leider nur kurz angeschnitten wurden Befehle wie bisect, rebase und reset, über wie ich gern noch mehr erfahren hätte. Gegen Ende zeigte er noch nach einer Frage eines Teilnehmers seine Shell ZSH, die „Entwickler-Shell“, die ich mir zuhause mal angucken werde.
Der Summit endete für mich mit der Security-Session von Arne, in der er zeigte wie Angreifer allgemein zugängliche Informationen über ein System herausfinden und dann für Angriffe verwenden. Zum Einsatz kamen Reverse-DNS, whois, NMap und natürlich der Browser. Anhand eines extra unsicher programmierten Systems zeigte er SQL-Injection und XSS bzw. allgemein fehlende oder fehlerhafte Input-Validierung, welche Infos in HTTP-Headern stehen, warum offene MySQL-Server-Ports keine gute Idee sind, weshalb man Software wie phpMyAdmin nicht aus dem Internet erreichbar installieren sollte, warum man ein VPN nutzen möchte, was Firewalls und gutes Monitoring (und Alerting) leisten können, warum man auch über physische Sicherheit und Zugang zur Hardware nachdenken sollte, und dass man sich bei Backups auch einige wichtige Fragen stellen sollte.
Rückreise
Nach der Verabschiedung bin ich schnell zum Bahnhof, ich wollte zur Sicherheit ein wenig eher Richtung Berlin Hauptbahnhof fahren, um nicht erneut den ICE zu verpassen, 6 Minuten Umstiegszeit im Winter sind einfach zu wenig wenn man einen ICE erwischen muss. So fuhr ich bereits 30 Minuten eher als geplant zum Hauptbahnhof, und wie sich herausstellen sollte war das eine gute Idee, denn der eigentlich gebuchte RE hatte mal wieder 25 Minuten Verspätung, und der ICE fuhr pünktlich.
2013 findet der nächste PHP-Summit in München statt, vielleicht sehen wir uns ja dort!
Wo sind die Zwischenüberschriften??? 🙂
Chris
13 Dez 12 at 14:40
Danke für die Erinnerung, hab welche eingefügt. Ob ich das je lerne und dran denke wenn ich unter Zeitdruck schreibe? 😉
Michael Kliewe
13 Dez 12 at 15:32
Dafür haste mich ja, wohin kann ich die Rechnung schicken? *g*
Chris
13 Dez 12 at 16:13
[…] 2012 konnte ich dabei sein in Berlin und habe auch über den Summit gebloggt. Ob ich es jetzt im März schaffe weiß ich noch nicht, eventuell kollidiert das mit einem […]
PHP-Summit März 2013 + Ticketverlosung + Jahresabos PHP-Magazin | PHP Gangsta - Der PHP Blog mit Praxisbezug
1 Feb 13 at 13:20
[…] diesmal in der Weihnachtszeit ein PHP-Summit in Berlin statt. Letztes Jahr war ich vor Ort, den Blogartikel dazu habt ihr ja sicher alle gelesen. Dieses Jahr sind 12 Trainer mit 18 Workshops zu allen […]
PHP-Summit Rabatt sowie 3-Tages-Ticket und PHP-Magazine zu verlosen! | PHP Gangsta - Der PHP Blog mit Praxisbezug
18 Okt 13 at 15:25
[…] PHP-Summit in Düsseldorf werde ich dieses Jahr wieder teilnehmen, 2012 war ich bereits beim Summit in Berlin dabei und hab es sehr genossen, kein reiner Frontalunterricht sondern Workshops mit direktem […]
3 Konferenzen, 15% Rabatt-Codes, und 6 Abos! | PHP Gangsta - Der PHP Blog mit Praxisbezug
22 Jul 14 at 13:22