Die inzwischen siebte Ausgabe der SymfonyLive in Deutschland findet ab dem 25.10.2017 in Berlin statt. Bitte bewertet, die von euch besuchten Workshops und Talks. Konstruktives Feedback ist für uns alle wichtig!

Wednesday 25th October 2017

09:30
5
Symfony4 Deep Dive
Workshop by Denis Brumann in Workshop-Raum (8 hours, 30 minutes)

With the release of Symfony4, both the architecture and the developer workflow get a major overhaul - in part, by the introduction of Flex, among other things. The new changes focus on enabling easier cloud deployments, while supporting both lean microservice setups as well as monolithic applications. During this workshop, we will create a new application using Flex, while touching all major new features: Project setup Use of the recipes and contrib recipes repositories Bundle-less architecture New components like Workflow, Cache and Dotenv Changes to the service container configuration Requirements: You should have a basic working knowledge of Symfony 2 or 3.

3
REST Services with Symfony
Workshop by Andreas Hucks in Workshop-Raum (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. Anforderungen: Du solltest grundlegende Kenntnisse in Symfony 2 oder 3 mitbringen.

1
Varnish in-depth
Workshop by Thijs Feryn in Workshop-Raum (8 hours, 30 minutes)

In this action-packed Varnish workshop, the mission is to bridge the gap between code and infrastructure from a web performance point of view. Varnish will be the primary tool to perform HTTP-based caching that will make our sites, applications & webservices bulletproof. The question is: do we adapt Varnish to our application code base or vice-versa? I won't answer that question, but instead we'll solve the problem by approaching it from both directions. By the end of this workshop, you'll be familiar with Varnish, how it behaves and how you can write VCL to ensure a good hit rate. Portability, control & developer empowerment is also important when we approach HTTP-caching from an application point of view. In this workshop, I'll also teach you how to write code that is cacheable by leveraging the power of HTTP. We’ll build a Symfony3 app, we’ll apply some HTTP best practices, some tips and tricks, and gradually the hit rate will improve. We’ll also use varnishlog, varnishtop to verify the success of our efforts. Requirements: You should have a basic working knowledge of Symfony.

0
Going Further With Symfony
Workshop by Lukas Sadzik in Workshop-Raum (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. Anforderungen: Du solltest grundlegende Kenntnisse in Symfony 2 oder 3 mitbringen.

2
Symfony Best Practices
Workshop by Christopher Hertel in Workshop-Raum (8 hours, 30 minutes)

Wie baut man ein einfaches Symfony4-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. Dieser Workshop baut bereits auf den Neuerungen in Symfony4 auf. Anforderungen: Du solltest Symfony bereits einmal ausprobiert haben, aber generell ist dieser Workshop für Einsteiger geeignet.

0
Doctrine ORM Basics
Workshop by Marco Pivetta in Workshop-Raum (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. Anforderungen: Dieser Workshop ist für Einsteiger geeignet.

Thursday 26th October 2017

09:30 Advanced Application Architecture
Workshop by Matthias Noback in Workshop-Raum (8 hours, 30 minutes)

In this workshop we'll take a slice of a pretty standard PHP project and gradually work our way towards an application that has a better architecture. "Better" meaning that: It will be easy to find out what the uses cases of the application are ("screaming architecture") It will be easy to find a place for every piece of the application ("layers") It will be easy to find out how users and other systems can interact with it ("ports & adapters") It will be easy to provide tests and automated acceptance criteria for it ("the testing pyramid") I'm sure you would like your project to have these properties! I'll show you all the little steps that will help you transform your application to this new level. Requirements: This workshops is aimed at advanced developers.

2
Learn To Test Like A Grumpy Programmer
Workshop by Chris Hartjes in Workshop-Raum (8 hours, 30 minutes)

In the middle of Web 3.0 it's become obvious that a very large percentage of developers are aware that there are tools available that allow them to write automated tests for the code they write. But you don't write tests. Never have. You feel a little bad about it but you tell yourself that it looks really tough to get into and you have a hard deadline that doesn't have any time for you to learn to use these tools. What if you could learn how to write tests from someone who has been using them for a long time and also knows how to explain it in a way that cuts down on the fear and anxiety while teaching you what you need to go to get started immediately? That's what Chris Hartjes, long-time PHP testing evangelist, wants to do for you. In this workshop Chris starts you off from the point of never having written a unit test and guides you through what tests really are. Then he will show you PHPUnit works and what features are the ones you really need to know. Next you will walk through using Test Driven Development using some code katas and leave with a solid, practical foundation that you can take back to your regular job and actually use. Testing your code is hard and might require you to relearn some closely-held practices. Let a grumpy programmer fix that for you! Please come with the following setup and ready: PHP 7.0.x (whatever the stable version is) PHPUnit (latest stable) Mockery (latest stable) Requirements: This workshops is aimed at developers staring out with testing.

Symfony4 Deep Dive
Workshop by Christian Flothmann in Workshop-Raum (8 hours, 30 minutes)

Mit dem Release von Symfony 4 wird die Architektur und der Entwicklungsworkflow modernisiert - was auch der Einführung von Symfony Flex zu verdanken ist. Im Fokus stehen dabei, das Deployment in Cloud-Umgebungen und die Unterstützung verschiedener Anwendungsgebiete von Prototyping über schlanke Microservice-Architekturen bis zu monolithischen Anwendungen. Im Rahmen des Workshops werden wir gemeinsam eine neue Anwendung mit Flex erstellen und dabei auf alle wichtigen Neuerungen eingehen: Aufsetzen eines neuen Projektes mit Symfony Flex Verwendung der Recipes und Contrib Recipes Repositories Anwendungsdesign ohne Bundles Verwendung neuer Komponenten wie Workflow, Cache und Dotenv Änderungen im Service Container Anforderungen: Du solltest grundlegende Kenntnisse in Symfony 2 oder 3 mitbringen.

1
Sicher ist nur das Amen in der Kirche - Web Security Workshop
Workshop by Andreas Sperber in Workshop-Raum (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. Anforderungen: Du solltest Symfony schon einmal benutzt haben. Kenntnisse der Security Layer in Symfony sind hilfreich, aber keine Voraussetzung.

2
Basic CQRS und Event Sourcing: Von Konzepten zur Anwendung
Workshop by Marco Pivetta in Workshop-Raum (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 Anforderungen: Ihr benötigt einen Laptop mit einem composer install ausgeführt gegen diese composer.json Dazu sollten PHP 7.1, PDO und PDO-SQLite bereits installiert sein. Ein SQLite Editor wird ebenfalls benötigt. PHPStorm besitzt einen integrierten Editor, andernfalls eignet sich http://sqlitebrowser.org/.

1
Breaking the Monolith: Einführung in Microservices
Workshop by Frank Stelzer in Workshop-Raum (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. Anforderungen: Du solltest grundlegende Kenntnisse in Symfony mitbringen. Wenn du dich bereits kurz mit Docker beschäftigt hast, ist das hilfreich, aber nicht zwingend.

Friday 27th October 2017

09:00
10
Keynote - Using Open Source for Fun and Profit
Keynote by Gary Hockin in Track 1 (1 hour)

10 years ago I was a lonely developer sitting in a small room quietly turning out code between 9am and 5pm, Monday to Friday. Fast-forward to now and you'll see me standing in front of audiences all around the world talking to developers about numerous topics."Why are you bragging like that at me?" I hear you ask. Because it could happen to you too. The question I always ask myself is "How the hell did that happen?!?!". The truth is that the only reason I've managed to advance my career so far in a decade is because of the people that make up the communities of open source projects. Not only do open source projects save you time and money, but the friendships and support groups that can be made within these communities is, frankly, staggering. Join me as I chart my journey from daily grind to conference speaker, and look at how you can leverage the power of open source to make real friends, real money, and real happiness.

10:00
2
Kaffeepause in Pausenraum (30 minutes)

Kaffee, Getränke & Snacks

10:30
3
Symfony Dependency Injection in 2017
Talk by Alexander M. Turek in Track 1 (45 minutes)

Die Dependency-Injection-Komponente hat in Symfony 3.3 eine bemerkenswerte Überarbeitung erfahren. Insbesondere die Funktionalitäten Autowiring und Service Discovery über PSR-4 sorgen dafür, dass unsere Service-Konfigurationen auf das wesentliche eingedampft werden können. Ein ehemaliger Autowiring-Skeptiker erklärt, wie er missioniert wurde.

8
CQRS und Event Sourcing Basics
Talk by Alexander Miertsch in Track 2 (45 minutes)

Moderne Web-Applikationen und Microservices in der Cloud stellen hohe Anforderungen an Entwickler und Systemarchitekten. CQRS und Event Sourcing helfen dabei die Komplexität verteilter Softwaresysteme zu meistern. Der Talk zeigt, wie PHP Entwickler mittels asynchroner Service-Kommunikation, klarer Kontextgrenzen und Domain-Driven Design robuste Applikationen mit einem hohen Business-Value entwickeln können, die skalierbar und leicht erweiterbar sind. Die prooph components bieten dafür die richtigen Werkzeuge und zusammen mit dem Symfony-Framework bilden sie ein perfektes Team.

11:30
9
Domain-Specific Assertions
Talk by Sebastian Bergmann in Track 1 (45 minutes)

Eine gemeinsame Sprache, die sowohl von den technischen, als auch von nicht-technischen Stakeholdern verstanden wird, ist unverzichtbar für die effektive Kommunikation in einem Software Projekt. Wenn man Ansätze aus dem Domain Driven Design und Test Driven Development kombiniert, kann diese "Ubiquitous Language" nicht nur im Businesscode, sondern auch in den Tests zur Anwendung kommen. In diesem Vortrag wird vermittelt, wie man Tests erstellt, die einfach zu schreiben und schnell auszuführen sind, und die zuverlässige Ergebnisse liefern. Das Publikum lernt, wie man eigene, angepasste Assertions implementiert, welche die Ubiquitous Language des Projektes verwenden.

2
Build, provision & deploy in the Cloud with Packer, Ansible & Terraform
Talk by Thijs Feryn in Track 2 (45 minutes)

In a continuous integration and continuous delivery context, it is hard to reliably deploy code to an environment. When code commits also imply changes to your stack, it gets even more tricky. In this presentation I'll show you how to build vendor-agnostic cloud images using Packer and how to provision the necessary software dependencies using Ansible, including your Symfony application. Once the image is in place, we'll use Terraform to deploy these images and create loadbalanced computing instances on various cloud environments in a single configuration format.

12:15
1
Mittagessen in Pausenraum (1 hour, 45 minutes)

Speisen & Getränke

14:00 Symfony Flex in Action
Talk by Christian Flothmann, Christopher Hertel in Track 1 (45 minutes)

Symfony Flex ist der neue heiße Scheiß in der Symfony Welt und ändert die Art und Weise wie Anwendungen gebaut werden. Als Entwickler muss ich mich jetzt genauer mit meinen Abhängigkeiten auseinander setzen, kann diese aber auch besser auf meine Anwendung abstimmen. Wir haben Symfony bei dem Schritt in die neue Flex-Epoche begleitet und zeigen Euch an einem konkreten Beispiel wie Anwendungsentwicklung jetzt aussehen kann.

6
Volltextsuche in Theorie und Praxis
Talk by Philipp Krenn in Track 2 (45 minutes)

Von aktuellen Anwendungen wird erwartet, dass sie eine leistungsstarke Volltextsuche zur Verfügung stellen. Doch wie funktioniert Suche überhaupt und wie integriere ich sie in meine Webseite oder Applikation? So schwierig ist das gar nicht und der Vortrag gliedert sich dafür in drei Teile: Wie Volltextsuche generell funktioniert und was die Unterschiede zu Datenbanken sind. Wie der Score beziehungsweise die Qualität von Suchresultaten berechnet wird. Wie Indizierung und Abfrage verschiedener Sprachen, die Suche nach Terms und Phrasen, boolsche Queries, Suggestions, Ngrams und mehr mit Elasticsearch funktionieren. Wir probieren sämtliche Queries live aus und sehen uns an, welche Möglichkeiten dir für deinen Anwendungsfall zur Verfügung stehen.

15:00
2
Monitoring und Metriken im Wunderland
Talk by Paul Seiffert, Dennis Benkert in Track 1 (45 minutes)

Bei Jimdo sammeln wir jede Menge Metriken über alle Teile unseres Systems. Dabei fallen Daten auf allen Ebenen des Systems an: Infrastruktur, System und Applikation. Wichtig ist, dass alle Entwickler zu jedem Zeitpunkt Einblick in die Echtzeit-Metriken ihrer Services nehmen können. Um das zu garantieren, haben wir uns einige Zeit mit der Integration von Prometheus in unsere Systeme beschäftigt. In unserem Talk werden wir sowohl über den Betrieb von Prometheus als auch über die Integrationen mit dem Rest der Jimdo-Plattform sprechen. Wir werden von Stolpersteinen und Tricks berichten, die wir gelernt haben, sowie einen Einblick in unserer Tool-Landschaft geben.

7
Praktische Anwendung des "Specification" Pattern mit Doctrine
Talk by Matthias Pigulla in Track 2 (45 minutes)

Aus Performancegründen ist es beim Einsatz von Doctrine oft notwendig, sich die einzelnen Use Cases der Anwendung näher anzuschauen und darauf optimiertes DQL zu schreiben. Das führt schnell zu großen Repository-Klassen. Oft enthalten sie für bestimmte Details auch duplizierten Code, und so ist schon bald nicht mehr klar, welche Methode eigentlich wofür genau gedacht war. Wenn sich dann noch die Anforderungen mit Auswirkung auf das DQL ändern, geht der Überblick komplett verloren und Business Rules werden nicht mehr konsistent angewendet. Einen möglichen Ausweg bietet das von Eric Evans und Martin Fowler beschriebene ""Specification Pattern"". Anhand von Beispielen aus Praxisprojekten möchte ich zeigen, wie wir durch die Einführung von Specifications den Wildwuchs in Repositories zurückschneiden konnten. Dabei gehe ich auch darauf ein, wie sich Unit Tests für die Specifications schreiben lassen und welche Strategien für das *Eager Loading* zur Verfügung stehen. Darüberhinaus ermöglichen Specifications strukturierte Suchabfragen in DQL auf Basis (komplexer) Formulare. In mandantenfähiger Software oder wiederverwendbaren Bundles helfen über den DI-Container eingesetzte Specifications dabei, das Kernmodell von kunden- und projektspezifischen Belangen freizuhalten.

15:45
0
2. Kaffeepause in Pausenraum (30 minutes)

Kaffee, Getränke & Snacks

16:15 Caching in Symfonyanwendungen - Ein Überblick
Talk by Denis Brumann in Track 1 (45 minutes)

Seit Version 3.1 hat Symfony eine eigene Cache-Komponente, die später um Tags und den Simple Cache erweitert wurde. In meinem Talk möchte ich die zugehörigen PSR-Standard kurz vorstellen und praxisnah, die Cache-Komponente vorstellen. Zusätzlich möchte ich das bereits etablierte HTTP-Caching vorstellen.

6
Protecting your API - The Past, The Present and The Future
Talk by Armen Mkrtchyan in Track 2 (45 minutes)

Building a secure API is one of the most common requirements in the market nowadays. Yet there are many strategies with their strengths and fallbacks, some simple, some complex. Let’s together walk through the existing strategies and take a look at a solution, that could, potentially, end this discussion once and for all.

17:15
7
Lessons Learned After 10 Years of Testing
Talk by Chris Hartjes in Track 1 (45 minutes)

Back when I was learning about how to test PHP code, I had to walk both ways uphill in the snow to get the information I needed. Over the past 10 years (has it really been that long?!?) I’ve learned a lot about not just testing but about code and people. In this talk I want to share what I wished I knew 10 years ago so you don’t have to suffer like I did.

Sulu - ein CMS auf Basis von Symfony
Talk by Thomas Schedler in Track 2 (45 minutes)

Es gibt immer mehr CMS, die Symfony Komponenten einbauen oder gleich auf dem kompletten Stack aufbauen. Sulu gehört zu den letzteren und erfreut sich immer grösserer Beliebtheit. Soweit so gut, nur was sind die Vorteile für die Entwickler? Wie können sie das Potential wirklich nutzen? Genau diese Fragen sollten nach diesem Vortrag beantwortet sein. Anhand von Sulu werden die unterschiedlichen Schnittstellen in das Symfony Ökosystem und deren Verwendung erklärt. Im Detail werden wir uns dem Thema Routing, Controllers und Events im Umfeld Symfony und Sulu widmen. Des Weiteren spielt der Service Container inklusive Compiler Pass, welches wohl eines der Hidden Features in Symfony ist, eine grosse Rolle, um das Zusammenspiel reibungslos zu ermöglichen.