Auch in diesem Jahr machten wir uns wieder auf den Weg in unsere Hauptstadt, um an der SymfonyLive teilzunehmen. Und auch in diesem Jahr kehrten wir wieder begeistert zurück. Sowohl die Organisation, als auch die Vorträge waren hervorragend.
Unter den vielen Vortragshaltern und Teilnehmern waren für uns viele bekannte Gesichter, so dass der Wissensaustausch in nahezu familiärer Umgebung stattfand. Alleine für das Networking stellt die SymfonyLive für uns ein wichtiges Branchentreffen dar.
Als Neuerung wurden in diesem Jahr erstmals drei parallele Vorträge gleichzeitig durchgeführt. Den Themen E-Commerce und CMS wurde sich ausschließlich im Track 3 gewidmet.
Nachfolgend einige Highlights aus unserer Sicht:
A) Keynote von Dr. Janina Loh über den Trans- und Posthumanismus
Beeindruckend startet die Keynote von Dr. Janina Loh von der Universität Wien, die uns Begriffe wie Trans- und Posthumanismus, Mind-Uploading, sowie Mensch x.0. vorstellte. Der Ihrer Einschätzung nach bekannteste und relevanteste Begriff ist der Transhumanismus. Hier soll der Mensch durch Technologien zu einem besseren, weiterentwickelten Super-Menschen transformiert werden; also im Endeffekt durch genetische Veränderungen, Implantate und andere körperliche Modifikationen. Der Mensch würde sich dann so weiterentwickeln, dass er zwar immer noch Mensch genannt wird, aber an sich mehr eine Art eines posthumanen Menschen darstellen wird; gruselig.
.
B) „Statische Code Analyse in PHP“ von Benjamin Cremer
In seinem Vortrag “Statische Code Analyse in PHP” hat Benjamin Cremer unterschiedliche Fehlertypen in der Programmierung angesprochen:
- logische Fehler
- syntaktische Fehler
- Compile Time Fehler
Im Detail widmete sich sein Vortrag speziell der Problematik der Compile Time Fehler. Hier wurde der ganze „Lifecycle“ dieser Fehler behandelt:
- Wie entstehen solche Fehler überhaupt?
- Wie kann man sie überhaupt finden?
- Welche Tools können bei der Fehlerfindung helfen?
- Wie kann man den Code auf diese Fehlerart testbar machen?
Ein extrem spannender Vortrag!
.
C) „Dayuse.com – Challenges to Scale an Innovative Worldwide Business“ von Hugo Hamon
Hugo Hamon, ein ehemaliger Sensiolabs-Ausbilder, berichtete uns von seiner Erfahrung über den Upgrade-Prozess und der Skalierung eines immer größer werdenden Web-Portals: Dayuse.com.
Zuerst startete alles „ganz einfach“ mit dem Upgrade:
- von PHP 5.6 auf 7.2
- von Symfony 2.6 auf 3.4
Anschließend wurde mit Sentry.IO eine Exception Logging Software aufgesetzt, die dafür sorgte einen guten Überblick über Fehler innerhalb der Applikation zu erhalten.
In einem weiteren Schritt wurde der Code analysiert und so überarbeitet, dass er den aktuellen PHP und Symfony Standards entspricht.
Um den Rollout-Prozess zu vereinfachen, sowie die Code- und Software-Qualität zu verbessern, griff man auf das weltweit verbreitete Quality Control- und Deployment System Gitlab CI zurück.
Anschließend kam für die Frontend-Tests Panther – eine Testing und WebScraping Bibliothek für PHP und Symfony – zum Einsatz.
Da Dayuse.com in vielen Sprachen verfügbar ist, musste noch das Problem der Übersetzung gelöst werden. Hier griff Hugo auf das Übersetzungssystem Loco zurück.
Anschließend widmeten sich Hugo und sein Team dem Thema „Bildbearbeitung und-optimierung“. Gute Erfahrung machten sie mit Thumbor; einer Opensource-Lösung mit Symfony-Integration.
Zu guter Letzt wurde die User Experience durch eine überarbeitete interne Suche mittels der eingeführten ElasticSearch deutlich verbessert.
Ein durchaus beeindruckender Prozess, den Hugo hier vorstellte.
.
D) „In fünf Jahren wird es keine Tester mehr geben“ von Nils Langner
Weiter ging es mit dem beeindruckenden Vortrag von Nils Langer von LeanKoala, der mutig prophezeite, dass es in fünf Jahren keine Tester mehr geben würde. Begründet wurde dies wie folgt:
- Testen ist langweilig
- Trend geht bereits jetzt von „Teste alles auf „Teste nur das Wichtigste“
- Entwickler und Crowd beteiligen sich an den Tests
- Statische Code Analyse wird immer besser und reduziert die Komplexität des eingesetzten Codes
- Fehlerbehebung läuft immer schneller und wird im Livebetrieb vollzogen
Ich bin gespannt und checke diese These einmal in ein paar Jahren.
.
E) „Meine ehrliche Symfony-Anwendung“ von Christopher Hertel
Es ging Schlag auf Schlag weiter. In seinem Vortrag hat Christopher seine Erfahrungen mit Symfony Anwendungen bei diversen Projekten geschildert. Somit hatte er viele wertvolle Tipps und Tricks für uns:
- Dokumentation ständig aktualisieren – gilt immer und für alle Entwicklungen; daher umso wichtiger
- Mono-Repository statt Multi-Repository, bedeutet:
- vereinfachte Projekt-Struktur
- einfaches Onboarding von neuen Kollegen
- vereinfachtes Deployment
- verringerte Komplexität dank weniger Abhängigkeiten
- vereinfachte Code Reviews / Pull Requests
- Mono-Bundle statt Multi-Bundle, bedeutet:
- bin/console generate:bundle → DEPRECATED
- Bundle ist ein Symfony Extension Point – für den Container und Konfiguration und sollte auch nur dafür verwendet werden. Splits über
- Namespaces – dafür sind sie ja da 😉
- Bestehende Multi-Bundles zu Mono-Bundles migrieren
- Klassen sollen grundsätzlich klein gehalten werden – Stichwort Single Responsibility Prinzip
- Logik möglichst tief platzieren → Entity, Services.
Beispiel: UI-Tests sind ganz hoch, da sie langsam und teuer sind. Unit-Tests hingegen sind billig und schnell. Daher ist es schneller, einfacher und günstiger die Logik in den Entities und Services zu testen. - Boy-Scout-Rule: Hinterlasse Klassen schicker als man sie vorgefunden hat
- Software Development ist ein Team Sport: Umsetzungen sollen im Team vorgestellt und abgestimmt werden. Pull Requests und Code Reviews helfen dabei.
- Pair-Programming ist ein Super-Tool für den Wissens-Transfer im Team
.
F) „Everything about DNS you never dared to ask!“ von Ole Michaelis
In dem Vortrag von Ole Michaelis sind wir in die Welt der Domains, Registrys, Registrars und Registrants eingetaucht.
An einem ausgedachten Beispiel (frozen-chocolate.pizza) hat uns Ole vorgeführt wie eine Domain registriert und umgezogen wird, sowie wertvolle Tipps gegeben. Anbei einige Definitionen:
- Registry: ist die Organisation, die die Domains verwaltet, z.B. VeriSign verwaltet die .com-Domain
- Registrar: ist eine akkreditierte Organisation, die Domains verkauft, z.B. godaddy
- Registrant: ist eine Person oder ein Unternehmen, für die die Domain registriert wird
- eTLD: effective Top-Level-Domain oder auch Public Suffix List genannt → die Liste wird von vielen Browser Herstellern (Mozilla → Firefox, Google → Chrome/Chromium) benutzt, bspw. für das Highlighting der wichtigsten Teile der Domain, dem Eingrenzen von Cookies
- ccTLD: Country Code Domain: .de, .es, .fr
- gTLD: Generic Domain: .com, .org,
- new gTLD: New Generic Top-Level-Domain: .best, .capital
aber auch eigene gTLD, z.B. .pizza
Verantwortlich für die Vergabe ist die ICANN (Internet Corporation for Assigned Names and Numbers), welche das Technical Management der DNS RouteZone und des IP Adress Raums übernimmt.
.
G) „Automatisierte Review-Umgebungen mit GitLab-CI und Rancher“ von Daniel Badura
Zu guter Letzt lauschten wir noch Daniel Badura, der In seinem Vortrag erklärte, wie man ein voll automatisiertes System für Deployments, Code Review und sogar auch Testing bauen kann. Dafür wurden folgende Lösungen verwendet:
- GitLab
- CI → Continuous Integration: Git Push → Skripts, die das Projekt bauen und automatisch testen
- CD, hier gibt es zwei Optionen:
- Coninuous Delivery: Deployments werden automatisiert, aber dennoch manuell ausgeführt
- Continuous Deployment: Deployments werden automatisch angestoßen
- Docker zur Isolierung von Anwendungen mit Containervirtualisierung
- Rancher als Container Management Tool
- Traefik als open-source reverse proxy und load balancer für HTTP und TCP-basierte Applikationen
Der Ablauf wurde uns wie folgt erläutert:
Für den Staging Branch:
- Entwickler mergt seine Änderungen in den Staging Branch
- Dank der eingesetzten Tools wird automatisch ein System mit der benötigten Konfiguration erstellt
- Ebenso automatisch werden entsprechende Tests angestoßen
- Und auch die Benachrichtigungen, ob der entsprechende Prozess erfolgreich war oder nicht erfolgt automatisiert
Für den Feature Branch:
- Es werden separate Systeme aufgesetzt, die es ermöglichen nur das gewünschte Feature zu testen
- POCs und neue Features können separat entwickelt, gezeigt und wieder gelöscht werden → ohne den Code wieder rausmergen zu müssen
- jedes Deployment wird automatisch getestet
Dies waren die für mich beeindruckendsten Vorträge auf einer tollen SymfonyLive. Natürlich gab es abends auf der Party noch viele gute und interessante Gespräche, doch deren Inhalte teile ich euch nicht mit 😉