DDD, Hexagonal, Onion, Clean, CQRS, … How I put it all together Fundamental blocks of the system I start by recalling EBI and Ports & Adapters architectures. Both of them make an explicit separation of what code is internal to the application, what is external, and what is used for connecting internal and external code.