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.