The PHP world is spinning quite fast these days. There’s a lot to keep up with. You can’t be an expert in all subjects, so you need a way to find out what’s relevant for you and your team. Which approaches to software development would be useful? Which programming paradigms could help you write better code? And which architectural styles will help your application to survive in this quickly changing world? In this talk I’ll help you answer these questions by taking a bird’s-eye view. I will quickly guide you along some of the most fascinating topics in modern PHP development: DDD, BDD, TDD, hexagonal architecture, CQRS, event sourcing and micro-services. We’ll see how these things are related to each other, and how understanding and applying them can help you improve your software projects in many ways.
28. What changes?
We don’t design with the database in mind
(we design the objects)
We don’t calculate change sets anymore
(we only touch one aggregate)
29. So far, much of DDD is just
“better programming”
30.
31. Ubiquitous
Language
The language spoken by both software
developers and business people
Prevents translations between business
and implementation domain language
central to DDD
32. Core Domain
The aspect of the business domain that is distinctive
Good software should make a big difference here
34. Bounded Context
There is a boundary for domain models
The meaning and relevance of concepts ends
at the boundary
Allows for separate teams to work on a model
64. class Entity
{
private $information;
public function changeInformation($information)
{
$this->information = $information;
}
public function getInformation()
{
return $this->information;
}
}
command function
query function
66. class Entity
{
private $information;
public function changeInformation($information)
{
$this->information = $information;
}
}
class ReadModel
{
private $information;
public function getInformation()
{
return $this->information;
}
}
command function
query function
74. Look into CQRS and ES because:
Your “reads” will be more efficient
Your reports/statistics/… are very valuable for you/your clients
It fits very well with DDD
It makes your application ready for the next challenge…
87. Most importantly: it should fit within your organisation
Cross-functional teams
Different ways of cooperation (Context Map)
A microservice architecture offers scaling
options for your developer team
88. Ignore all the jokes on Twitter and look into this cool thing
90. Who are they?
The people at company X?
Teams who use Y in production?
People who have a Google Friday?
Companies with picknick tables and fake grass?
People with a Raspberry Pi
continuous deployment
pipeline?