Vrstvená aplikace
Kde patří odpovědnost a transakce
- UI: HTTP, Console nebo message handler
- Application: use case a transakční hranice
- Domain: pravidla, entity a value objects
- Infrastructure: databáze, fronta a framework
Způsob práce
Architekturu nevolím podle názvu vzoru, ale podle složitosti problému. Cílem jsou čitelné hranice, bezpečné změny a řešení přiměřené velikosti aplikace.
U větších a dlouhodobě rozvíjených aplikací odděluji UI, Application, Domain a Infrastructure. Doménová pravidla pak nejsou přilepená na framework, databázi ani konkrétní API a jednotlivé části mají jasnější odpovědnost.
To ale neznamená, že každá část aplikace potřebuje plnou Clean nebo hexagonální architekturu. U jednoduchého problému s několika vstupy a bez složitých pravidel bývá přímé service-based řešení čitelnější a levnější na údržbu.
Neznáte některý z pojmů? Přečtěte si stručné vysvětlení ve slovníku.
Vývoj přístupu
Dříve
Složitější části systému
Dnes
Pragmatická volba
Hranice a závislosti
Vrstvy nejsou samoúčelné. Pomáhají ukázat, kudy smí téct závislosti: UI volá aplikační use case, use case používá doménu a technické detaily implementují rozhraní, která aplikace potřebuje.
Přístup upravuji podle rizika změny, délky života aplikace, počtu integrací i schopnosti týmu architekturu skutečně udržovat.
Vrstvená aplikace
Port a adaptér
Veřejná ukázka
Principy, které používám
Rád pomohu vyhodnotit, kde architektura přinese skutečný užitek, a kde je lepší zachovat jednoduché a čitelné řešení.