Where Clean Architecture breaks in real systems

You're using Clean Architecture. The hard part is getting the implementation decisions right: ▪ Should ORM entities be part of the domain? ▪ Where should business logic live? ▪ How should external systems be integrated without leaking into the core? ▪ When is an abstraction useful—and when is it over-engineering? In real systems, this is where teams struggle.

Where teams get it wrong

𝟭. 𝗢𝗥𝗠 𝗲𝗻𝘁𝗶𝘁𝗶𝗲𝘀 𝗺𝗶𝘀𝘁𝗮𝗸𝗲𝗻 𝗳𝗼𝗿 𝘁𝗵𝗲 𝗱𝗼𝗺𝗮𝗶𝗻 𝗺𝗼𝗱𝗲𝗹 ORM entities and repository interfaces get treated as the domain, because Clean Architecture and the ORM use the same words. So the system looks decoupled — but the domain is still tied to the database, and the day the ORM changes, the change ripples everywhere. 𝟮. 𝗕𝘂𝘀𝗶𝗻𝗲𝘀𝘀 𝗹𝗼𝗴𝗶𝗰 𝗳𝗼𝗿𝗰𝗲𝗱 𝗶𝗻𝘁𝗼 𝗺𝗲𝗺𝗼𝗿𝘆, 𝘀𝗼 𝘁𝗵𝗲 𝘀𝘆𝘀𝘁𝗲𝗺 𝗴𝗲𝘁𝘀 𝘀𝗹𝗼𝘄 The rule "the database is only for I/O" is applied everywhere, so bulk updates get pulled into the application layer. So the database is barred from the very work it does best, and the system pays for it in performance. 𝟯. 𝗧𝗵𝗲 𝗱𝗼𝗺𝗮𝗶𝗻 𝗰𝗼𝘂𝗽𝗹𝗲𝗱 𝘁𝗼 𝘀𝘆𝘀𝘁𝗲𝗺𝘀 𝘆𝗼𝘂 𝗱𝗼𝗻'𝘁 𝗰𝗼𝗻𝘁𝗿𝗼𝗹 A third-party response — a payment, shipping, or CRM DTO — is passed straight into the domain instead of being translated at the boundary. So when that external system changes its response, the break doesn't stop at the edge; it ripples through the core business logic.

What you'll learn ⚡

How to decouple the domain from the ORM

What actually belongs in the domain — instead of ORM as the domain; how to properly decouple from ORM entities & ORM repositories

How to design for performance

Where business logic should live — the application layer or the database, avoid forcing business logic and using databases effectively

How to decouple from external systems

How to keep systems you don't control from leaking into your core, which goes beyond just I/O decoupling

Who this is for

▪ Backend engineers using Clean Architecture ▪ Tech leads responsible for architecture decisions ▪ Teams whose systems are harder to change despite having "clean" layers **This session is for seniors. Not for beginners.**

How the session works

▪ Live backend code demo in Java (applicable to any tech stack) ▪ Architecture decisions explained step-by-step ▪ Live Q&A ▪ Recording included

Clean Architecture: Stop doing it wrong

Wed Aug 26, 5:00–6:30 PM (CEST)