Phantasialand 2.-4. Mai 2018
German flag

 

Talks am 4. Mai

08:50

Welcome & Infos

Kaffeepause

Lunch

Kaffeepause

17:40

Ende & Infos

Keynote (English)

Fabien Potencier

TBA

Handle with Care: Verantwortungsvoller Umgang mit (Software-)Paketen

Matthias Pigulla

Mit Composer ist ein Tool im Symfony-Umfeld entstanden, das heute aus der PHP-Welt nicht mehr wegzudenken ist. Zum ersten Mal wurde es in PHP wirklich einfach möglich, Code in Pakete zu organisieren. Damit lässt sich die Wiederverwendung fördern und auch z.B. größere Anwendungen intern strukturieren.

Über die Jahre musste man mit internen und öffentlichen Bibliotheken und Bundles jedoch schmerzhaft lernen, dass Composer zwar die technischen Aspekte des Paketmanagements vereinfachen kann, die organisatorischen Herausforderungen für Paket-Manager und Release-Prozess aber unverändert bleiben.

In diesem Talk wird daher auf einige Entwurfsprinzipien auf Paketebene eingangen und erklärt, worauf man bei der Entwicklung von offenen oder internen Paketen achten sollte. Dabei wird es unter anderem um die Frage gehen, was die Schnittstelle eines Pakets ausmacht, welche Rolle die Release Policy spielt und wie genau SemVer eigentlich funktioniert.

Symfony + React = ?

Denis Brumann

Immer häufiger wird das Frontend moderner Anwendungen durch ReactJS/Angular/VueJS oder andere reine JS-Frontends umgesetzt. Symfony und PHP dienen dann als reine API-getriebene Backends. Häufig kommt die Frage auf, wie eine Symfony-Anwendung, die auf diesen Use Case zugeschnitten ist, aussehen sollte. Diese Frage wird in diesem Talk versucht zu beantworten.

Controller - jenseits von HTTP und Symfony

Hans-Christian Otto

Für viele Softwareentwickler gehört es zum guten Ton, Fachliches (z.B. die Abbildung von Geschäftsprozessen) und Technisches (z.B. die HTTP-Schnittstelle einer Anwendung) zu trennen. Häufig wird damit aber bei den Controllern aufgehört, oder reichen immer nur 1-2 Methodenaufrufe an eine tiefere Schicht weiter, und sind in erster Linie notwendiger „Boilerplate“. Und das, obwohl Symfony es ermöglicht, Controller zu entwickeln, denen man nicht ansieht, dass sie als HTTP-Controller fungieren. So kann man die gleichen Controller auch verwenden, um z.B. keine HTTP-Requests, sondern E-Mails oder Nachrichten aus Message-Queues zu beantworten. Die eigentlichen Controller beinhalten dabei nicht mal mehr einen Verweis auf Symfony. Das vereinfacht nicht nur Framework-Upgrades, sondern reduziert auch die Gefahr eines Vendor-Lock-Ins, was dem ein oder anderen Framework-Kritiker den Wind aus den Segeln nehmen dürfte.

Better Console Applications

Christopher Hertel

Console Applications sind – ob sie nun Bestandteil einer größeren (Symfony-) Anwendung, oder ein Standalone-Tool sind – häufig das Bash-Script der PHP-Entwickler. Dabei verlässt man gerne mal den sonst so sauberen Stil und hackt sich pragmatisch ans Ziel. Und das obwohl so manche schnelle Lösung doch länger im Projekt bleibt und dauerhaft maintained werden muss. Worauf man bei der Entwicklung von Console Applications achten sollte und mit welchen einfachen Tricks sich der Code verbessern lässt, wird in diesem Talk mit praktischen Beispielen verdeutlicht. Wie entkopple ich meinen Code von der CLI-Runtime, wie kann ich langlebige Prozesse optimieren und vieles mehr.

The Big Whoop! Apache Kafka mit Protobuf und Symfony

René Kerner

Heutzutage löst man die Aufteilung und Modularisation von großen monolithischen "Legacy"-Applikationen und Datenbanken mit HTTP Microservices. Trivago ist einen anderen Weg gegangen und nutzt Apache Kafka, Debezium und Stream Processing. Sie haben sich schon vor dem Release von Symfony 2.0.0, im Januar 2012, für die Nutzung von Symfony2 entschieden und ihre PHP-Applikationen basieren seitdem auf Symfony.

Der Talk zeigt, wie eine Stream-Architektur aufgebaut ist und wie man performant mit PHP und Symfony Google Protocol Buffer Nachrichten erzeugt und in einen Kafka Stream schreibt. Außerdem wird gezeigt, warum Trivago so von Streaming-Architekturen überzeugt ist und warum dieser Weg 1 Million mal schneller ist als HTTP Microservices.

Asynchronous Request Processing

Jan Gregor Emge-Triebel

Moderne Webanwendungen/ APIs müssen oftmals mit komplexen Aufgaben umgehen können. Dafür sind in der Regel viel Disk I/O oder Datenbankabfragen erforderlich. Jan Gregor zeigt wie und - viel wichtiger - warum solche Aufgaben asynchron abgearbeitet werden sollten. Es werden einige Messaging/ Queuing Libraries angesehen und die häufigsten Stolperfallen beleuchtet. Für viele PHP-Entwickler sind länger laufende Prozesse Neuland, was ganz eigene Risiken, aber auch Chancen bietet. Erst wenn diese geklärt sind, kann abgewogen werden, wo und wie solche Techniken in der eigenen Infrastruktur Platz haben.

Symfony Apps von dev nach prod mit GitLab CI

Stephan Hochdörfer

GitLab hat sich in den letzten Jahren zu mehr als "nur" einem web-basierten Git Repository Manager entwickelt. GitLab versteht sich heutzutage als DevOps Lifecycle Plattform. Doch was heißt das? In dieser Session wird Stephan einen Einblick geben, wie man GitLab und GitLab CI richtig einrichtet. Es wird gelernt, wie man mit GitLab CI eigene Build Pipelines aufsetzt, die Apps verifizieren, paketieren und automatisiert auf dev, stage und prod Umgebungen deployen.

Vorausschauende Sicherheits-Architektur

Bastian Hofmann

Eine Web Seite sicher und frei von Sicherheitslücken zu halten ist harte Arbeit, unabhängig davon ob man sich informiert und z.B. die OWASP Top 10 kennt. In diesem Vortrag werden Tools und Best Practices vorgestellt, die helfen, Sicherheitsprobleme vor einem Angreifer zu entdecken und sogar von vorneherein zu vermeiden.