2. ▸ "Software architecture is about making fundamental
structural choices that are costly to change once
implemented."
▸ Paralela k architektuře budov - předpis pravidel, která by se
měla dodržovat
▸ "architektura po čestku" - dělej to takhle, protože to takhle
děláme už dlouho
Co je to softwarová architektura?
4. ▸ Agilita - umět rychle reagovat na měnící se požadavky
(byznys, technické, organizační)
▸ Škálovatelnost
▸ Testovatelnost (TDD)
▸ Transparentnost
▸ Framework agnostic modelová vrstva (DDD)
▸ Jednotná konvence (adresářová struktura, naming)
Co JÁ od architektury očekávám
5. ▸ Vysoce konkurenční startupové prostředí
▸ Pocit naplnění a radosti "uživatelů" (programátorů)
▸ Nestydět se za svou práci
▸ Continuous Deployment
▸ Léta praxe, pocitově je to takto fajn
Proč tyto požadavky?
6.
7. ▸ Aplikace nemá testy, protože se špatně testuje
▸ Aplikace je pomalá a optimalizace složitá
▸ Doručování funkcionalit trvá dlouho (přestřelené deadliny)
▸ Problematické upgrady kvůli kompatibilitě
▸ Extrémně náročně změny v tech stacku
Častá realita
8. ▸ Vrstvy s jasně definovanou zodpovědností
▸ CQRS (Doctrine DBAL + ORM)
▸ Command bus pattern (Symfony Messenger)
▸ DDD
▸ Co nejméně magie
▸ TDD
Moje oblíbená kombinace
11. CQRS je zkratka pro oddělení odpovědnosti příkazů a dotazů,
vzor, který odděluje operace čtení a aktualizace úložiště dat.
Implementace CQRS ve vaší aplikaci může maximalizovat
výkon, škálovatelnost a zabezpečení. Flexibilita vytvořená
migrací na CQRS umožňuje systému lépe se v průběhu času
vyvíjet a zabraňuje tomu, aby příkazy aktualizace způsobovaly
konflikty při slučování na úrovni domény.
CQRS
Command Query Responsibility Segregation
29. ▸ Entrypoint - vstupní bod aplikace
▸ Aplikační - předat data do domény + prezentace uživateli
▸ Doména - vaše byznys logika!
▸ Infrastruktura - implementace pro konkrétní technologii
Jasné zodpovědnosti vrstev
30. ▸ Vždy se snažit hlídat strojově v CI!!!
▸ Deptrac
▸ carlosas/phpat
▸ DaveLiddament/php-language-extensions
▸ Vlastní PHPStan extensions + custom rules
Nástroje a balíčky