layers shared domain (entities, services, data-access) application (domain clients, command and queries) infrastructure (implementations)