PHPCon Poland is the nationwide Polish conference intended for the community of PHP developers and technologies related to this programming language. The agenda will include six Friday's workshop paths of various topics and two lecture paths on Saturday and Sunday.

Friday 15th November 2019

10:00
0
Pisz testy - czyli praktyka tworzenia testów jednostkowych
Workshop by Adrian Piętka in Workshop E (4 hour)

Podczas warsztatu uczestnicy zapoznają się tematem testów jednostkowych wraz z ich praktycznym zastosowaniem podczas implementacji logiki biznesowej. Uczestnicy dowiedzą się czym są testy jednostkowe, jak je odróżniać od innych testów, kiedy i dlaczego warto je stosować. Nauczą się także pisać testy jednostkowe w oparciu o PHPUnit oraz zapoznają się z techniką TDD. Warsztat dedykowany jest dla początkujących osób, nie mających wcześniej styczności z tworzeniem testów jednostkowych. Wymagania względem uczestnika ograniczają się do: - znajomości podstaw PHP7, - własnego sprzętu z zainstalowanym: PHP, Git, dowolnym IDE (preferowany PHPStorm). Agenda: - Podstawy - czym są testy jednostkowe, co i kiedy warto testować na poziomie testów jednostkowych (30 min) - Testowanie logiki biznesowej - podstawy tworzenia testów jednostkowych (1h 30min) - Mockowanie zewnętrznych zależności (30 min) - TDD jako sposób na odwrócenie modelowania kodu (1h)

0
PHPSpec basics
Workshop by Dariusz Drobisz in Workshop D (4 hour)

Do you want to start doing BDD? An organization that you are working for are not ready for that big step? Start with yourself. Spec BDD is the way that you can start on your own and show other teammates profits from that approach. Especially when you can share with them well designed, tested code. During workshop, you will learn what are the main goals of using Spec BDD, how PHPSpec and Prophecy mocking library work and how to use them to design your code communication. Attendees will try in practice some basic and more complicated examples that will show them how to use PHPSpec in their each day work. Workshop for people who want to start their PHPSpec adventure. To get most out of the workshop you'll need own laptop with the newest version of PHP 7 and the general knowledge of OOP.

0
Sylius - rozwiązanie eCommerce na miarę Twoich potrzeb
Workshop by Łukasz Chruściel in Workshop H (8 hour)

W czasie warsztatu rozszerzymy wspólnie podstawową wersję Syliusa o produkty grupowane. Co więcej, pokażemy jak umożliwić dodawanie tych grup od razu do koszyka oraz stworzymy kilka domyślnych grup do bazowej konfiguracji nowego sklepu tak aby praca z nową funkcjonalnością była prostsza, a efekty Twojej pracy - szybciej widoczne. Warsztaty będą głównie nakierowane na pisanie kodu. Po warsztacie powinieneś być zaznajomiony z podstawami Syliusa, jak postawić swój pierwszy sklep na nim oraz jak rozszerzyć niektóre z jego funkcji. Czego się nauczysz: - zapoznasz się z architekturą oraz podziałem na Bundle ekosystemu Syliusa, - stworzysz CRUDowe API w kilka minut, - zapoznasz się z SyliusResourceBundle i stworzysz swojego pierwsze CRUDA, - dowiesz się jak w prosty sposób wygenerować CRUD do Admina z wykorzystaniem SyliusGridBundle, - nauczysz się jak używać komponentu State Machine w Syliusie, - jak usprawnić development projektu z użyciem fixturesów i SyliusFixturesBundle. Czego będziesz potrzebować: - zainstalowanego PHP 7.1, - zainstalowanego PHPStorm, - działającej wersji Sylius-Standard z użyciem Vagranta/Dockera lub lokalnie, - podstawowej wiedzy z Symfony.

0
REST easy with API Platform
Workshop by Antonio Perić-Mažar in Workshop F (8 hour)

We'll start by creating a fully-featured API in just a few minutes with API Platform, Symfony and Doctrine. The API will support pagination, data validation, access control, relation embedding, filters, and error handling. It will expose many formats (JSON-LD, Hydra, JSONAPI, HAL, JSON, XML, YAML, and CSV), will be documented with Swagger/OpenAPI and will have a nice UI done in React. Last but not least, the API will respond in a just few milliseconds thanks to its built-in invalidation-based cache mechanism. Then, we will use the ReactJS tools provided by the API Platform to consume the exposed Hydra documentation. In a few more minutes, we will get a Material Design administration interface (a la Sonata / EasyAdmin - but 100% client-side) built with React. Finally, we'll discover 2 nice code generators to bootstrap a SPA (React, Redux and React Router) and iOS and Android mobile apps (React Native). The specific Docker environment will be prepared before this workshop. You'll need to download and install it. Bring your laptop, favorite IDE and a basic Symfony knowledge.

6
Getting the Most Out of PHPStan
Workshop by Ondřej Mirtes in Workshop G (8 hour)

PHP is nothing like compiled languages. If you make a mistake, the program will crash when the line of code with the mistake is executed. When testing a PHP application, whether manually or automatically, developers spend a lot of their time discovering mistakes that wouldn’t even compile in other languages, leaving less time for testing actual business logic. PHPStan is a popular static analyser focused on finding bugs in your code. By leveraging the strength of PHP type system further enhanced in PHPStan itself, developers can create robust applications and discover bugs early in the development process. The aid the tool provides during refactoring is also indispensable. In this workshop, the attendees will learn how to install, configure and run PHPStan, and also receive tips how to write code so that PHPStan can be as powerful as possible. They will also be able to write their own PHPStan rules and extensions. Just bring your laptop with PHP 7.1+ and Composer installed.

15:00
0
EventStorming Big Picture - Jak tego używać z głową
Workshop by Paweł Rekowski in Workshop J (4 hour)

EventStorming staje się coraz popularniejszą metodą planowania prac w IT oraz rozwiązywania problemów. Dlaczego? Bo to działa! W swojej karierze miałem przyjemność moderować już kilkanaście sesji Big Picture - czyli pierwszego etapu EventStormingu, którego uczyłem się od samego mistrza - Alberto Brandoliniego, twórcy tej metody. W trakcie tego warsztatu, podziele się z Tobą swoim doświadczeniem z wykorzystania ponad 100 metrów papieru i kilku tysięcy kolorowych karteczek. Nauczysz się jak stosując proste techniki, możesz w ciągu jednego dnia sprawić, że wszyscy w Twojej firmie będą rozumieć co tak na prawdę dzieje się w projekcie (co nie jest takie oczywiste :P) Poznasz techniki oraz tricki, których darmo szukać w jeszcze niedokończonej książce "Introducing EventStorming" oraz poczujesz na własnej skórze czym EventStorming jest i dlaczego jest tak bardzo skuteczny! Na warsztacie nie będzie ci potrzebny laptop ani telefon. Zapraszam serdecznie :)

0
Strangling your legacy code with PHPSpec
Workshop by Dariusz Drobisz in Workshop D (4 hour)

Do you like legacy code that you have to work with? He hopes not. He wants you to strangle it. Slowly. The same way as it slows down your work. And PHPspec is ready to help you with that. Removing old, badly designed and untested code is one of the hardest parts of developers work. Especially when you want to repair everything at once. In this workshop, you will learn how you can change the code with a lot of dependencies and mixed layers piece by piece to tested part of the system that is easy to maintain. Some design patterns usage examples will be also included during this workshop. To get most out of this workshop you'll need own laptop with the newest version of PHP 7. Also, the knowledge of OOP and the basic knowledge of PHPSpec will work for you.

0
Twoja droga do CI/CD: ucz się, adaptuj, ulepszaj
Workshop by Arkadiusz Kondas in Workshop E (4 hour)

Ten warsztat to wprowadzenie do świata ciągłej integracji i ciągłego dostarczania oprogramowania. Zaczniemy od wdrożenia nowoczesnych narzędzi do naszego projektu. Uczestnicy otrzymają prosty legacy projekt z którym będą pracowali przez cały czas trwania warsztatów. W kolejnych krokach zbudujemy pipeline integracyjny i wdrożeniowy z wykorzystaniem serwera Buddy.Works. Uczestnictwo w warsztatach zapewni odpowiednią dawkę wiedzy pozwalającą wdrożyć nowoczesne procesy DevOps w swoich organizacjach. Czego się nauczysz: - umiejętności pracy zespołowej z rozproszonym repozytorium kodu - integracji narzędzi z środowiska PHP (testy, statyczna analiza itp.) z serwerem CI/CD (Buddy.Works) - jak automatycznie umieszczać kod na produkcji - jak wdrażać procesy Continuous Integration / Continuous Deployment w swoim zespole - poznasz cztery kluczowe metryki które charakteryzują zespoły o wysokiej wydajności - dowiesz się jak zbudować pipeline wdrożeniowy który nie będzie powodował przerw na produkcji Czego będziesz potrzebować: - zainstalowanego PHP w wersji co najmniej 7.2, - zainstalowanego IDE (polecany PHPStorm), - zainstalowanego composera i gita.

Saturday 16th November 2019

09:15
4
Strict programming in PHP
Talk by Gabriel Caruso in Green Path (40 minutes)

This talk will address several points in our codes that we can improve it to make it more stringent, avoiding false positives, points that have not been tested and have actually written code that complies with our business rules, avoiding unnecessary bugs. We will work with PHP 7 types, the identical operator, weak comparison functions and counters, and more.

1
Feature Toggle - Zarządzanie zmianami w Continuous delivery
Talk by Karol Kreft in Blue Path (40 minutes)

Wdrożenie continuous delivery w zwinnych projektach nasuwa pytanie - czy wraz z szybkim dostarczaniem nowych funkcji systemu mamy możliwość ich prostego wyłaczenia gdyby zaszła taka potrzeba? A może chcemy wdrożyć eksperymentalny Proof of Concept by przekonać się, że będzie miał spodziewaną wartość dla klientów/użytkowników naszej aplikacji/serwisu? Implementacja Feature Toggle pozwala te i inne, również bardziej skomplikowane scenariusze, realizować szybko i możliwie bezboleśnie. Podczas prezentacji przedstawię na czym polega ta technika, zaprezentuje korzyści, które z niej wynikają oraz pokażę szerszy kontekst w którym najczęściej znajduje zastosowanie.

10:00
4
EventStorming jako wstęp do walki z Legacy Codem
Talk by Paweł Rekowski in Green Path (55 minutes)

Wyobraź sobie aplikacje mającą kilka milionów linii kodu, rozwijaną przez ostatnie 7 lat gdzie wszystko jest pomieszane, poplątane i nikt tak naprawdę nie wie co się dzieje. Rozwijanie jej graniczy z cudem, a biznes musi coraz dłużej czekać na naprawy bugów i nowe ficzery. Zanim zaczniesz wielki refactoring najpierw musisz zrozumieć co ten potwór w ogóle robi. Idealnie do tego nadaje się EventStorming - metoda stworzona przez Alberta Brandoliniego, u którego miałem przyjemność uczyć się w ramach EventStorming Master Class w Mediolanie. Z tej prezentacji dowiesz się: - Jak skutecznie przeprowadzić EventStorming dla projektu Legacy? - Jak sensownie podzielić potwora na konteksty? - Jak podzielić odpowiedzialność między zespołami? - Co jest najważniejsze podczas sesji "Big Picture"? - Czego możesz się nauczyć z warsztatów, które "nie wyszły" i co to tak naprawdę znaczy? - Jakie trudności pojawią się w prowadzeniu warsztatu w środowisku międzynarodowym (Polska vs Rumunia)? - Dowiesz się czego nie znajdziesz w książce Alberto i czego nauczyłem się podczas wizyty w Mediolanie - i wiele więcej. Wszystko na bazie moich doświadczeń w eMAG, ponad 100 metrów papieru i kilku tysięcy przyklejonych post-itów.

4
How your PHP application can get hacked, and how to prevent that from happening?
Talk by Antti Rössi in Blue Path (55 minutes)

You’ve probably heard about the likes of XSS, CSRF, SQL Injection, RCE, Man-in-the-middle attack, and LFI. Very few of the developers out there have actually witnessed first-hand what exploiting any of the mentioned vulnerabilities looks like, and therefor don’t necessarily realise what the possible implications of being hacked can be. In this talk we’ll exploit some commonly known vulnerabilities and misconfigurations that can occur to a PHP (Laravel) application running on a Linux-based host. By learning to think like a hacker you’ll be able to develop more secure applications with Laravel, and to keep yourself, your clients, and your users data safe.

11:30
1
Event Sourcing na przykładzie PROOPH
Talk by Arkadiusz Prościak in Green Path (55 minutes)

CQRS i Event Sourcing zdobywają coraz większą rzeszę zwolenników. Podczas prezentacji „pogrzebiemy” ORM-y, po to by zachwalić idee przechowywania danych jako serii zdarzeń a widoków danych jako projekcji. Następnie przyjrzymy się ciemnym stronom tego rozwiązania. To wszystko tylko po to, aby ostatecznie samemu ocenić na przykładach kodu, czy taka architektura i framework pomoże rozwiązać któryś z naszych codziennych problemów.

3
Reaktywny PHP
Talk by Arkadiusz Kondas in Blue Path (55 minutes)

Programowanie sterowane zdarzeniami (event-driven) jest znane i używane w aplikacjach klient/serwer oraz bibliotekach asynchronicznych. ReactPHP (zbliżony do node.js lub Python Twisted), przenosi PHP na nowy poziom prędkości ze wszystkimi niezbędnym do tego funkcjami. Podczas prezentacji wprowadzę pojęcie event loop, non-blocking IO i programowania asynchronicznego w PHP, a także przedstawię sposoby gdzie ta technika może przydać się w twoim stosie technologicznym. Czego nauczysz się z tej prezentacji: - zrozumiesz różnice pomiędzy blocking a non-blocking IO - poznasz bibliotekę ReactPHP i jej podstawowe komponenty - zobaczysz przykładowe zastosowania asynchronicznego programowania w PHP - poznasz alternatywy dla biblioteki ReactPHP

12:30
2
What can PHP Foreign Function Interface do for you?
Talk by Bohuslav Simek in Green Path (40 minutes)

Next PHP version (7.4) will bring a lot of new exciting features. One of them is PHP Foreign Function Interface extension built directly into the core. But what problems exactly this extension is trying to solve? Does this mean that we no more need to write PHP extension if we want to use an existing library? In this talk, we will together discover the way how to easily call almost any C library directly from PHP. Why we want to do this. How to overcome common pitfalls and most importantly when to use approach and when not. What you'll learn from this talk: - how to call C code from PHP without the necessity of writing an extension in any compiled language? - how to quickly prototype simple PHP wrapper around C library? - how to overcome common pitfalls? - when to use this approach and when not?

6 Things I Learned as a Lead Developer
Talk by Gábor Nádai in Blue Path (40 minutes)

Being a Lead Developer is a fun, interesting and responsible adventure. Becoming one is not something that happens from one day to the next. It is something that you grow into by raising your voice, taking action and responsibility. I've learned many things working as a Lead Developer, but I'd like to share 6 things, which were the most important for me.

13:15 Your team vs kebab place vs F1 pitstop. Theory of constraints - primary DevOps element - explained!
Talk by Konrad Otrębski in Blue Path (40 minutes)

We will have a look at and analyze workflows that are present in classic kebab place and Formula 1 pitstop. We will compare them with development team in a typical software company. Presentation will explain basic concepts of the Theory of constraints and will show you how you can magnify flow of work at your team to get things done!

14:15
3
Dwanaście zasad budowania systemów o wysokiej dostępności
Talk by Kamil Porembiński in Green Path (40 minutes)

Prezentacja opowiada o 12 kluczowych zasadach budowania systemów oraz aplikacji wysokodostępnych (High availability). W swojej prelekcji poruszę takie tematy jak monitorowanie infrastruktury, skalowanie oraz zasada skalowania (pionowe/poziome), wykorzystanie technologii, backup, restore, testowanie oraz wybór rozwiązań. Poruszone również zostaną tematy związane z redundancją oraz disaster recovery

15:00 2nd hardest thing in computer science
Talk by Pawel Lewtak in Green Path (25 minutes)

Have you heard about the two hardest things in computer science? It's cache invalidation and naming things. I want to focus on the second one. Let's see common examples of both good and bad naming. What's the common part of each of them? What's makes names good? Can we settle on good enough or should we aim for perfect names? I'll show some of good and bad practices so you'll be able to recognize both of them when you make code review for your peers. Naming is one of the two hardest things in CS, so I don't claim to be right about everything but I'm open to discussion and happy to learn from you as well.

3
git log: 10 najprzydatniejszych komend by dowiedzieć się wszystkiego o projekcie
Talk by Grzegorz Byrka in Blue Path (25 minutes)

Z początku git log (i shortlog) stworzono jako źródło informacji o ostatnich commitach i merge'ach. Ale narzędzia te są znacznie potężniejsze niż tylko to. Zaczniemy od kilku podstawowych zapytań, pobawimy się ich opcjami by zobaczyć, jak można je wykorzystać w codziennej pracy. Następnie zaprezentuję kilka bardziej złożonych komend, które uważam za najprzydatniejsze.

15:30 Why choose legacy?
Talk by Pawel Lewtak in Green Path (25 minutes)

Most people would rather work on a greenfield project than a legacy one. On one hand, you have the freedom to choose a new language/framework/library to use and have fun learning that. On the other hand, there's an existing project, maybe old one, that skipped a few updates of libraries, maybe not using latest features your language of choice gives you. I'll share my experience and show you why I like working with legacy projects, what's interesting in them for me, how I improve as a developer working with them. Hopefully, that'll allow you to enjoy working with legacy a bit more and hate it a bit less next time.

1
Jak rozpoznać Reptiliana w biurze - poradnik praktyczny
Talk by Tomasz Ferfecki in Blue Path (25 minutes)

Czy twoja praca nie przynosi ci satysfakcji? Zaczyna Cię dotykać wszechobecny chaos? Może musiałeś zostać dłużej w biurze, przez co nie masz czasu na skorzystanie z benefitów? A może środowe owoce przyszły w czwartek? Jeżeli na przynajmniej jedno z powyższych pytań odpowiedziałeś twierdząco, to może być znak, że w twoim otoczeniu zalęgli się Reptilianie. Odkryj, w jaki sposób możesz pokrzyżować ich złowieszcze plany zniszczenia twojego projektu.

16:00 Adventures in MySQL - 10 Awesome features you're probably not using
Talk by Liam Wiltshire in Blue Path (55 minutes)

If you've been in development for a while and you're anything like me, you probably still use MySQL in the same way as you did in the 3.x days - let's be honest, when was the last time you cracked open the MySQL documentation? However, things have moved on, and these days there are some pretty awesome features in MySQL, from document store to spatial support and more, that would make your life easier, and your app faster - things that you could - or even should - be using. Join Liam and discover what this modern MySQL looks like, and how you might use it to improve your applications.

1
Be nice, help the person who hacks your servers to get your data
Talk by Srdjan Vranac in Green Path (55 minutes)

Where are your credentials and secrets stored? In .env files or in environment variables, or even worse in config files? Are your primary AWS keys shared amongst developers? Do you still have SSH keys from former employees on your servers? If your answer is "Yes" to one or more of these questions you probably haven't heard the term "secrets management". In this talk we will look into managing secrets in development and operations, and expose the problems related to them. I will give you an overview of the current state of techniques to mitigate these problems and we'll take a brief look at how an open source tool like Hashicorp Vault can provide a solution to managing secrets in the years to come.

17:30
2
Zwinnie czysta architektura
Talk by Michał Cisz in Green Path (55 minutes)

Słyszałeś o świętym Graalu: o encjach, kontekstach, DDD i czystej architekturze. Widziałeś jak idea SOLID-nego kodu przegrywała w starciu z deadline’ami. Czas to zmienić! Na konkretnym przykładzie biznesowym odnajdziemy zwinności, ukryte w koncepcji czystej architektury. Zobaczysz progresywną ewolucję komponentów aplikacji, które dzięki iteracyjnej pracy z kodem zaadaptujesz do timeboxów używanych w metodykach agile. Przekonaj się sam, że framework, baza danych i siec www to szczegóły, a spryt doprowadzi Cię do pokrycia testami na poziomie 100%.

3
Everyday tools that make my work easier
Talk by David Ostrožlík in Blue Path (55 minutes)

Tools we use daily to ease development of e-commerce framework for building big e-commerce projects. In Shopsys Framework we have been using PHP and Symfony to build big e-commerce projects for several years. We also use many tools and techniques to ensure a high quality of code and features. We will show you tools that we use to build the application, check coding-standards, test our code, run these checks on our continuous integration server etc., and how we use them in our development process from beginning to end. In the end, you will get new ideas about how to make your work more efficient, easier and fun.

18:30 Serverless PHP
Talk by Sebastian Grodzicki in Green Path (55 minutes)

#serverless nie był do tej pory gorącym tematem w świecie PHP, ponieważ żaden z dostawców usług chmurowych nie wspiera natywnie PHP w środowisku tego typu. Pod koniec zeszłego roku AWS udostępniło dwie nowe usługi (Lambda Runtime API oraz Lambda Layers), które pozwalają na samodzielne dodanie PHP do środowiska typu #serveless. Podczas prezentacji omówię poszczególne elementy takiej architektury oraz pokażę kod PHP działąjacy na AWS Lambda.

"We need a bigger boat" - Introduction to application scaling
Talk by Liam Wiltshire in Blue Path (55 minutes)

At one time or another, every developer comes across the same problem - their application starts getting slower, then starts falling over, then isn't available at all. Often, this comes down to too many users, too much stored data - in other words a scaling problem. Looking at a range of options, from horizontal and vertical scaling, to caching, sharding and optimisation, Liam will discuss approaches to scaling that can be used on new applications, and also some that can be retro-fitted to existing applications.

Sunday 17th November 2019

10:00
4
Making architecture explicit
Talk by Herberto Graca in Green Path (55 minutes)

The Big Ball of Mud is the most serious problem I see in the majority of the code bases I look at. But why do we keep falling into that trap? What are the root problems behind it? How can we avoid, escape, and stay out of it? In this talk, you will learn about the architecture mental map I use to answer these questions. We will briefly revisit a few established software development and architecture ideas and see how you can put them in your service, exemplifying with some bits of code and tooling, to help keep the mud out of your application. The main topics of the talk are: - The Big Ball of Mud problem - Overview of DDD, Hexagonal, Onion, Screaming, Clean, CQRS - How to organise the code base to reflect architecture boundaries - How to enforce the architecture boundaries

1
Antybohaterowie projektów IT
Talk by Przemysław Krzywania in Blue Path (55 minutes)

Ludzi z IT przedstawiamy jako bohaterów ratujących świat, ale czy na pewno ma to sens?

11:30
2
Zastosowanie GraphQL w agregacji i dostarczaniu danych w architekturze mikroserwisów.
Talk by Konrad Karauda in Green Path (1 hour, 25 minutes)

Konrad opowie o zastosowaniu technologii GraphQL w oparciu o Node.JS, w celu agregacji, cacheowania, oraz dostarczania danych do frontendu w architekturze mikro serwisów. Zalety, wady, możliwości skalowania, oraz poprawa bezpieczeństwa architektury dzięki zamaskowaniu mikroserwisów odpowiedzialnych za poszczególne działania.

3
Package Everything
Talk by Bruno Ramalho in Blue Path (40 minutes)

Building PHP packages and best practices. Focus on the basic concept of composer and related best practices by using a real example of a big project without composer that was refactored to be modular. How to take advantage of open source packages.

12:15
3
Becoming a tech lead - Lesson learned
Talk by Jayesh Kawli in Blue Path (40 minutes)

It's always more challenging to work as a leader compared to working as an individual contributor. Through this talk, I am going to share my experiences going through this transition which will be useful for other people moving along the same path. I will share some facts about shifting mindsets, working towards making team better and increasing efficiency. As a leader, one also has to become a mentor to coach their junior team members while balancing pace and the learning opportunity. We will also touch upon topics such as learning from mistakes, using past sprints as a guideline and using custom-made benchmarks to gauge the effectiveness of overall work. This will also help to understand how to deal with project blockers, maintaining effective communication and better tickets estimates. Attendees of this session will take away the following: - shifting the mindset as one goes from being an individual contributor to become a tech lead, - balancing productivity and pace with equal opportunity for learning, - how to act as a mentor to make the team better, - learning from past sprints to make effective future sprints, - handling communication, being proactive and avoiding blockers.

13:00
5
DDD, CQRS, ES, Hexagonal... i Symfony
Talk by Tomasz Kowalczyk in Green Path (55 minutes)

Dość często rozmawiamy na temat architektury naszych projektów i tego, w jaki sposób dostarczyć z ich pomocą jak najlepiej działające rozwiązanie z najwyższą jakością techniczną. Niestety nie rozmawiamy aż tak często na temat środowiska, w którym to robimy - frameworka - który dość często determinuje ilość pracy wymaganej do wdrożenia. W tej prelekcji zaprezentuję w jaki sposób Symfony może zostać wykorzystany w kontekście dowolnego rozwiązania archtekturalnego - m.in. DDD, CQRS, Event Sourcing, Hexagon - i jak dobrze pasuje on w każdym z tych przypadków. Oczywiście rozwiązanie idealne nie istnieje, jednak niektóre narzędzia są zaprojektowane tak, by pozwolić nam przejąć wystarczającą kontrolę nad projektem, a Symfony jest zdecydowanie jednym z takich narzędzi.

0
Distributed Domain Destruction - Adventures in building distributed systems
Talk by Srdjan Vranac in Blue Path (55 minutes)

The project has grown enough that it requires refactoring, and extracting pieces of it to be distributed to different machines and places. Of course it should work like a well oiled mechanism, but it may not... at first. For the last three years I have been building, maintaining and fighting a few projects that make use of distributed computing, parallel processing, message brokers, queues and workers. This is one of those "from the trenches" talks, where I will regale you with tales about the series of unfortunate events that may happen as your application grows in complexity. Tales like disk space fluctuations, importance of logging, NoSql problems, restructuring your order of execution in code for performance gains, short sighted albeit logical architectural decisions that will cost you in the long run. Come hear about the agony you will experience when it starts falling apart, and the thrill you will feel when everything is running juuust right.