intermediate
Service Layer
Размещайте application use-case orchestration в services, когда controllers, jobs и consumers используют один business workflow.
Service layer хранит application use-case workflows для controllers, CLI jobs и consumers — place order, approve refund, sync inventory. Координирует repositories, domain rules, transactions и интеграции, не превращаясь во вторую доменную модель из getters.
На интервью: распределение логики между controller, service и entity. Anemic vs rich domain и где уместна оркестрация.
Типовые ошибки: service classes на тысячи строк; services знают HTTP; дублирование workflow в controllers и workers.
Компромисс — гибкость против сложности: знайте, когда достаточно более простого пути.
Чеклист:
- Один метод service — один business use case.
- Инварианты в entities или domain services.
- Controllers — тонкий translation layer.
- Общие workflows вынесены из дублирующих entry points.