Разделение ответственности является одним из важнейших принципов используемых при проектировании программного обеспечения. Для соблюдения этого принципа наиболее удобным способом является разделение кода приложения на несколько уровней абстракции или слоев, каждый из которых выполняет свою строго определенную функцию.

Слой инфраструктуры (Infrastructure Layer)
Инфраструктура это внешний слой, через который происходит все взаимодействие приложения со внешним миром. В слое инфраструктуры располагается весь код работающий со внешними зависимостями приложения, такими как базы данных, сторонние сервисы, контроллеры API и др. Тут размещаются реализация репозиториев сущностей предметной области, адаптеры для работы с очередями сообщений и внешними системами, библиотеки обеспечивающие работу с сетью, файлами и даже с таймером компьютера. Тут же скрываются различные ORM и подобные вещи.
Слой приложения (Application Layer)
В слое приложения располагаются сервисы приложения, интерфейсы адаптеров и репозиториев с которыми эти сервисы работают. Сервисы приложения реализуют вспомогательную логику, обеспечивающую взаимодействие сущностей предметной области со внешним миром через адаптеры. Также в сервисах происходит управление жизненным циклом корней агрегации: получение их из репозитория, вызов методов сущностей, инициирование сохранения состояния и удаление из памяти. Сервисы приложения являются посредниками между инфраструктурой и сущностями предметной области изолируя их друг от друга. Слой приложения не имеет зависимостей от слоя инфраструктуры.
Слой логики предметной области (Domain Layer)
Слой логики предметной области, как видно из названия, содержит исключительно логику связанную с выполнением требований предметной области. Тут находятся все сущности, корни агрегации, объекты описывающие их состояния и другие вспомогательные объекты. Этот слой не имеет ссылок на другие слои и объекты этого слоя не обращаются напрямую к объектам других слоев. Это обеспечивает чистоту и полноту объектов предметной области, хотя и требует реализации дополнительной логики.