Основные проблемы использования слоистой архитектуры в разработке программного обеспечения:
- Взаимозависимость модулей в бизнес-слое. 5 Каждый доменный сервис может свободно зависеть от любого другого, что приводит к сложной и запутанной сети связей. 5
- Явные и неявные циклические зависимости. 5 Они могут привести к бесконечной рекурсии и взаимной блокировке, что усложняет отладку и изменение поведения доменных сервисов. 5
- Отсутствие общего состояния. 5 В такой архитектуре каждый доменный сервис моделирует лишь часть процесса и хранит только часть его состояния. 5 В результате для отладки состояния процесса разработчику необходимо либо держать всю систему в уме, либо прибегать к использованию дополнительных инструментов. 5
- Сложность рефакторинга. 5 Высокая связность и сложность взаимодействий между компонентами делают любые изменения проблематичными, так как до конца не ясно, как изменения в одном модуле повлияют на другие и систему в целом. 5
Преимущества использования слоистой архитектуры:
- более простая реализация по сравнению с другими подходами; 4
- чёткое разделение ответственности; 3
- возможность независимой разработки каждого слоя; 3
- простота тестирования. 3