Перейти к основному содержимому

ADR-0015: Ports, Providers И Adapters

Статус

Accepted

Контекст

Сервисы используют PostgreSQL, Redis, Elasticsearch, ClickHouse, MassTransit и external providers. Без единых ports/adapters инфраструктурная логика попадет в handlers и domain models.

Решение

  • Application определяет ports.
  • Infrastructure реализует providers/adapters.
  • Provider DTO живут только в Infrastructure.Integrations.<ProviderName>.
  • Shared data access providers задают общие contracts для PostgreSQL, Redis, Elasticsearch, ClickHouse, object storage.
  • Domain получает только value objects и snapshots.

Последствия

  • External systems изолируются anti-corruption layer.
  • Тесты могут мокать ports без подмены domain behavior.
  • Provider-specific изменения не ломают Application/Domain.

Ссылки

  • Data Access Providers
  • Context Providers And Middlewares