Wir freuen uns, euch die inzwischen sechste Ausgabe der SymfonyLive in Deutschland zu präsentieren! Bereits im letzten Jahr waren wir mit mehr als 300 Teilnehmern ausgebucht und durften eine tolle Zeit mit euch genießen.

Wednesday 5th April 2017

09:30
5
Breaking the Monolith: Einführung in Microservices
Workshop by Frank Stelzer (8 hours, 30 minutes)

Vor vielen Jahren wurden Applikationen noch monolithisch aufgebaut. Die komplette Funktionalität wurde in einer einzigen großen Applikation abgebildet, welche dann häufig schnell zu einem großen unwartbarem Etwas mutierte. Seit einiger Zeit kann man den Trend weg von diesen großen Applikationen und hin zu der Aufspaltung in viele kleine Dienste erkennen. Diese Dienste, allgemein Microservices genannt, sind kleine, entkoppelte und demnach auch gut wartbare Applikationen. In größeren Firmen kann man durch die Einführung von Microservices die Verantwortung eines Produkts aufspalten und kleine Teile davon auf die einzelnen Entwickler-Teams übertragen. In dem Workshop werden wir uns zunächst eine Symfony Applikation anschauen und gemeinsam dessen Funktionalität in kleinere Dienste aufspalten. Danach werden wir die Dienste auf unterschiedliche Arten integrieren, so dass man am Ende keinen Unterschied mehr zu der monolithischen Applikation feststellen kann.

3
Symfony Best Practices
Workshop by Christopher Hertel (8 hours, 30 minutes)

Wie baut man ein einfaches Symfony-Projekt auf? Symfony ist für seine Flexibilität bekannt und wird für die verschiedensten Zwecke benutzt. Angefangen bei Microsites, über Enterprise-Anwendungen, die Millionen von Request beantworten, bis hin zur Basis von anderen Frameworks. Wir geben Tipps zum Aufbau von Standard-Anwendungen mit Symfony, die sich bei unserer Arbeit mit einer Vielzahl von Kundenprojekten in den letzten Jahren als sinnvoll herausgestellt haben.

3
Refactoring & Extracting Domain Code
Workshop by Kore Nordmann (8 hours, 30 minutes)

Die Anforderungen an Software ändern sich stetig und entsprechend ändert sich die eigene Softare auch immer weiter. Entwickler streben danach die Software an die geänderten Anforderungen anzupassen – egal ob sie technischer oder geschäftlicher Natur sind. Ohne große kontinuierliche Sorgfalt im ganzen Prozess enden wir immer wieder bei Software die irgendwann sehr schwer zu warten ist. Selbst das Beheben von kleinen Fehlern kann zu einem großen Problem werden. Wenn das passiert sollte spätestens mit dem Refaktorisieren von Software begonnen werden. Mit Refaktorisieren ist die Technik gemeint die internen Strukturen von Source-Code zu verbessern ohne das Verhalten der Software zu ändern. Wir können so Probleme beheben und Seiteneffekte ausräumen während die Software weiter wie zuvor ihren Dienst verrichtet. Der positive Effekt sind einfachere Änderungen und entsprechend günstigere Weiterentwicklung der Software – und oft sogar schnellerer Code: Wie stelle ich sicher dass die Funktionalität nicht beeinträchtigt wird? Einfache Refaktorisierungs-Techniken Welchen Status wollen wir mit der Software erreichen? Was sind die üblichen Probleme mit gewachsenem Code? Welche Tools können uns die wichtigen und problematischen Stellen aufdecken? Fortgeschrittene Refaktorisierungs-Techniken Separierung zwischen Domain- & Infrastruktur-Code

0
Doctrine ORM Basics
Workshop by Marco Pivetta (8 hours, 30 minutes)

In diesem Workshop vermittelt ein Doctrine Core Entwickler die Grundlagen des ORMs und richtet sich an PHP Entwickler, die das ORM als Einstieg in die PHP Enterprise Entwicklung kennen lernen wollen. Teilnehmer sollten bereits objektorientiert in PHP zu arbeiten und eine Entwicklungsumgebung mitbringen, in der Composer, PHP 5.5, die PDO Extension und MySQL lauffähig installiert sind. Wir beschäftigen uns unter anderem mit Installation, Konfiguration, Konzepte wie Entities, Mapping, Unit of Work, Entity State, Lazy Loading, DQL, Schemata und Grundlagen des Association Mapping.

0
Drupal für Symfony-Entwickler
Workshop by Florian Loretan (8 hours, 30 minutes)

Seit Version 8 verwendet Drupal mehrere Symfony-Komponenten und -Konzepte. Dadurch bietet das weltweit bekannte CMS jetzt eine gewisse Vertrautheit für Symfony-Entwickler und viele haben sich schon zur Implementierungs ihres Projektes für Drupal entschieden. Dennoch bringt ein Drupal-Projekt einiges an Komplexität mit sich und Themen wie Projektplanung, Deployments oder generelle Best Practices bleiben oft unklar. In diesem Workshop werden wir uns solche Themen genauer anschauen, um euch einen schnelleren Einstieg beim nächsten Drupal-Projekt zu ermöglichen.

0
Sicher ist nur das Amen in der Kirche - Web Security Workshop
Workshop by Andreas Sperber (8 hours, 30 minutes)

Sicherheit von Webanwendungen ist nicht erst seit den großen Hacks von Yahoo, MySpace oder Dropbox ein Thema. Doch in jüngster Zeit werden Angriffe immer komplexer und Anwendungen müssen entsprechend geschützt werden. Symfony als Framework erleichtert Entwicklern die Umsetzung von Dingen wie Authentifikation und bietet einige Sicherheitsfeatures. Um andere Schutzmaßnahmen müssen sich Entwickler selbst kümmern. Der Workshop motiviert mit Live Hacking-Beispielen und zeigt wie man in Symfony Absicherungsmaßnahmen wie z. B. Zwei-Faktor-Authentifikation oder einen Brute Force-Schutz umsetzt.

Thursday 6th April 2017

09:30
1
Breaking the Monolith: Einführung in Microservices
Workshop by Frank Stelzer (8 hours, 30 minutes)

Vor vielen Jahren wurden Applikationen noch monolithisch aufgebaut. Die komplette Funktionalität wurde in einer einzigen großen Applikation abgebildet, welche dann häufig schnell zu einem großen unwartbarem Etwas mutierte. Seit einiger Zeit kann man den Trend weg von diesen großen Applikationen und hin zu der Aufspaltung in viele kleine Dienste erkennen. Diese Dienste, allgemein Microservices genannt, sind kleine, entkoppelte und demnach auch gut wartbare Applikationen. In größeren Firmen kann man durch die Einführung von Microservices die Verantwortung eines Produkts aufspalten und kleine Teile davon auf die einzelnen Entwickler-Teams übertragen. In dem Workshop werden wir uns zunächst eine Symfony Applikation anschauen und gemeinsam dessen Funktionalität in kleinere Dienste aufspalten. Danach werden wir die Dienste auf unterschiedliche Arten integrieren, so dass man am Ende keinen Unterschied mehr zu der monolithischen Applikation feststellen kann.

1
Basic CQRS und Event Sourcing: Von Konzepten zur Anwendung
Workshop by Marco Pivetta (8 hours, 30 minutes)

CQRS und Event Sourcing sind herausfordernd, wenn man sich zum ersten Mal mit ihnen beschäftigt - insbesondere, wenn man bei Null startet. Dieser Workshop bietet einen Überblick über die Grundlagen von CQRS und ES, sowie ihren Vorteilen und Fallstricken. Wir werden basierend auf CQRS und ES eine Anwendung modellieren und implementieren, und uns dabei mit Themen beschäftigen wie: Analyse der Domain Komponenten der Architektur Data Flow Synchronous/Asynchronous Dispatching Aggregates und Domain Logik Projections Scaling Testing

0
Sicher ist nur das Amen in der Kirche - Web Security Workshop
Workshop by Andreas Sperber (8 hours, 30 minutes)

Sicherheit von Webanwendungen ist nicht erst seit den großen Hacks von Yahoo, MySpace oder Dropbox ein Thema. Doch in jüngster Zeit werden Angriffe immer komplexer und Anwendungen müssen entsprechend geschützt werden. Symfony als Framework erleichtert Entwicklern die Umsetzung von Dingen wie Authentifikation und bietet einige Sicherheitsfeatures. Um andere Schutzmaßnahmen müssen sich Entwickler selbst kümmern. Der Workshop motiviert mit Live Hacking-Beispielen und zeigt wie man in Symfony Absicherungsmaßnahmen wie z. B. Zwei-Faktor-Authentifikation oder einen Brute Force-Schutz umsetzt.

1
REST Services with Symfony
Workshop by Tim Glabisch (8 hours, 30 minutes)

Webservices werden mittlerweile in sehr vielen Bereichen der IT zur Integration unterschiedlicher Anwendungen verwendet. Die Klasse der REST-Webservices spielt dabei eine besondere Rolle, da REST sich auf die Grundlagen von HTTP stützt, einfach verständlich ist und leicht in bestehende Anwendungen zu integrieren ist. In diesem Workshop bringen wir den Teilnehmern sowohl die theoretischen Grundlagen von REST, als auch die praktische Umsetzung mit Symfony näher. Mit praxisnahen Beispielen werden Themen wie Serialisierung, Content-Negotiation und die Sicherheit von REST-Webservices erklärt und durch realistische Übungsaufgaben verdeutlicht.

2
Going Further With Symfony
Workshop by Christian Flothmann (8 hours, 30 minutes)

In diesem Training steigen wir tiefer in die Symfony Standard Edition ein. Die Teilnehmer lernen komplexere Aspekte von Symfony kennen. Themen sind: Services im Dependency Injection Container definieren, Bundle-Konfigurationen selbst erstellen, sowie Sicherheit und Authentifizierung in Symfony Anwendungen.

1
Testing 101
Workshop by Benjamin Eberlei (8 hours, 30 minutes)

Kontinuierliches & automatisiertes Testen ist essentiell für die Entwicklung moderner Software. Es ist bekannt dass die Anzahl von Fehlern in Software dadurch drastisch reduziert wird. Die verschiedenen Ansätze zu Testen haben jeweils ihre eigenen Vor- und Nachteile und damit je nach Szenario alle ihre eigene Berechtigung. Der erste Schritt ist es die verschiedenen Test-Strategien kennen zu lernen, dann können die wesentlichen Techniken erlernt werden. Das involviert die Verwendung von PHPUnit in ihrem Projekt und wie man die verschiedenen Test-Typen damit umsetzen kann. Mit den Tests kann dann neu geschriebene und existierende Software getestet werden so dass diese möglichst keine Fehler mehr aufweist: Die Grundlagen von Unit-Tests mit PHPUnit erlernen Test-Doubles und Integration-Tests erlernen Lernen wie man funktionale Tests mit PHPUnit und Mink entwickelt Den richtigen Test-Mix für das eigene Team & Projekt finden Tests für das eigene Projekt entwickeln

Friday 7th April 2017

09:10 Technische Schulden tun weh! Wie man sie erkennt und beseitigt.
Keynote by Carola Lilienthal (40 minutes)

Fast jedes Softwaresystem wird mit guten Vorsätzen aber unter schwierigen Bedingungen entwickelt. Deadlines, unterschiedliche Qualifikationen und Missverständnisse im Entwicklungsteam führen dazu, dass die Architektur des Systems erodiert und Schritt für Schritt technische Schulden aufgebaut werden. Bis das ganze System zu einem unordentlichen großen Knäul verwoben ist und jede Anpassung zu einer unkalkulierbaren Kostenschraube wird. Weder dem Entwicklungsteam, noch dem Management macht ein System in einem solchen Zustand Freude. In diesem Vortrag zeige ich, wie man Sourcecode organisieren und weiterentwickeln kann, um das Entstehen und Ansteigen von technischen Schulden zu verhindern. Dabei werdet ihr sehen, welche Prinzipien helfen, technische Schulden zu vermeiden und wie sie durch geeignetes Refactoring aus der Welt geschaffen werden können. Basis aller Empfehlungen werden Beispiele aus den nunmehr über 100 Analysen sein, die ich an unterschiedlichsten Softwaresystemen durchführen durfte.

10:00 Erwarte die Ausnahmen – Elegante Fehlerbehandlung
Talk by Bastian Hofmann (40 minutes)

Auch die beste Testabdeckung einer Web Applikation verhindert nicht, dass Fehler und Bugs in der Produktionsumgebung auftreten können, insbesondere bei Datenbank Problemen oder Lastspitzen. Deshalb ist es wichtig, Fehler und Probleme frühzeitig zu erkennen, um diese schnell beheben zu können. In diesem Talk werde ich effiziente Wege wie z.B. Deployment Strategien, Canary Environments oder Circuit Breaker vorstellen um Fehler messen, loggen und dann elegant behandeln zu können. Ziel ist, den Einfluss auf Gesamtstabilität und User-Experience der Applikation so gering wie möglich zu halten.

10:40
1
Kaffeepause (30 minutes)

Kaffee & Snacks

11:10
14
Build and ship a feature on trivago
Talk by Christoph Reinartz (40 minutes)

In dieser Session zeige ich wie wir einen A/B Test in unserem Kernprodukt, der auf Symfony basierten trivago Hotelsuche, implementieren. Der Vortrag zeigt den Lebenszyklus eines Features beginnend von der Task-Erstellung, über die eigentliche Implementierung hin zu Testing und Code Review. Nach erfolgter Prüfung werden wir das Feature releasen und den A/B Test aktivieren. Neben der technischen Seite der Implementierung gehe ich auch auf den Workflow sowie die Engineering Culture in unserem large scale environment ein.

12:00 Business-Workflows in Symfony-Anwendungen modellieren
Talk by Christian Flothmann (40 minutes)

Komplexe Geschäftsprozesse in Code zu fassen kann sehr schnell komplex und unübersichtlich werden - und in der Folge zu schwer zu wartender Software führen. Dieser Talk wird eine theoretische Einführung in das Thema Workflow Nets und State Machines bieten, sowie praktisch zeigen, wie sich Prozesse mit der Workflow Komponente in einem Symfony Projekt nutzen lassen.

12:40
3
Mittagessen (1 hour, 30 minutes)

Speisen & Getränke

14:10 Ansible Tips 'n' Tricks
Talk by Lukas Sadzik (25 minutes)

Jemand sagte mal zu Lukas "Sei faul oder dumm, aber nie beides zur selben Zeit". Deshalb mag er clevere Automatisierungstools wie Ansible. Ob vom Raspberry Pi zuhause bis hin zum mehrere Dutzend Instanzen umfassenden Serverfarm, Ansible etabliert sich immer mehr zum Quasi Standard der Provisionierung. Es ist simpel zu lernen und erste schnelle Erfolge lassen in der Regel nicht lange auf sich warten. Aber wie geht es weiter? Der Talk zeigt ein paar Kniffe, nützliche Patterns und zeigt, wie man gern gemachte Fehler beim alltäglichen Gebrauch von Ansible vermeidet.

14:40 Learn Redis the hard way ... in production
Talk by Andy Grunwald (25 minutes)

Für unser Hauptprodukt, die trivago Hotelsuche, benutzen wir die NoSQL Datenbank Redis sehr ausgiebig. Die Use cases variieren: Caching, temporäre Speicherung der Daten bevor diese in eine andere Datenbank verschoben werden oder selbst als typische Datenbank für Hotel Meta Informationen inkl. Persistenz. Das Frontend der Hotelsuche ist in PHP geschrieben. Dies mit einer Redis Datenbank zu verbinden ist nicht die Herausforderung. Es wird jedoch zu einer bei steigendem Traffic. In diesem Talk erzählen wir euch die Story, wie wir (auf dem harten Weg) gelernt haben Redis effizient und richtig zu benutzen. Inklusive unseren Fehlschlägen und unseren Erfahrungen.

15:10 Was Symfony für IT-Sicherheit tut und was nicht
Talk by Andreas Sperber (40 minutes)

Symfony ist ein mächtiges PHP-Framework, mit dem Entwickler komplexe Webanwendungen realisieren können. Gerade diese komplexen Anwendungen haben oft auch ein hohes Bedürfnis an Sicherheit, da über sie beispielsweise Finanztransaktionen abgewickelt oder sensitive Daten gespeichert werden. Das Framework unterstützt den Entwickler dabei sehr einfach Module wie Authentifikation und Autorisierung zu implementieren und bringt von Haus aus Komponenten wie CSRF-Schutz für Formulare oder Output-Escaping in Templates mit sich. Doch lässt sich damit eine sichere Webanwendung zum Stand der Angriffstechnik realisieren? Der Vortrag zeigt auf, was durch Symfony für IT-Sicherheit getan wird und was Entwickler für sichere Webanwendungen zusätzlich beachten müssen. Die aktuellen Angriffstechniken sind nicht neu, das zeigt auch der Talk. Leider muss man hinzufügen, weil Webanwendungen heute eigentlich sicherer sein könnten.

15:50
0
Kaffeepause (45 minutes)

Getränke & Snacks zur Stärkung

16:30 Dependency Management ist mehr als "composer update"
Talk by Nils Adermann (40 minutes)

Du hast Composer schon so oft benutzt, aber wie genau kennst du deine Abhängigkeiten wirklich? Schaffst du es aus jeder kniffligen Situation? In diesem Vortrag geht es um das gesamte Spektrum von Dependency Management: Von der Analyse der Risiken, die Software von Dritten für geschäftskritischen Code birgt, z.B. durch unerwartet Kompatibilitätsbrüche, bis hin zu praktischen Tips für die Benutzung von Composer im echten Leben. Zum Beispiel: Wie geht man bei Merge-Konflikten einer composer.lock Datei vor, wenn Kollegen und man selbst unterschiedliche Änderungen an Abhängigkeiten vorgenommen haben.

17:20 The more testing you do
Talk by Jeffrey McGuire, Sebastian Bergmann (40 minutes)

Obwohl wir ans Testen "glauben" und "wissen", dass es beim Liefern besserer Qualität hilft, tun sich viele von uns schwer, Testen in ihren Arbeitsalltag zu integrieren. Warum? Wie bekommen wir technische und nicht-technische Projektbeteiligte ins selbe Boot, wenn es darum geht, gute Software zu entwickeln? Und wie beteiligen wir sie aktiv an diesem Prozess? In diesem Vortrag diskutieren Sebastian Bergmann, Autor von PHPUnit, und Jeffrey A. "jam" McGuire, Evangelist bei Acquia, wie das Einführen gefolgt von konsequenter Anwendung von Testmaßnahmen dazu führt, dass die Softwareentwicklung bessere Ergebnisse bei niedrigeren Gesamtkosten liefert und wie sich die Vorteile des Testens über die Zeit entfalten.