Допускается ли создание внешних зависимостей для доменного слоя

«Допускается ли создание внешних зависимостей для доменного слоя» — вопрос из категории Архитектура, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нет, доменный слой должен оставаться чистым и не зависеть от внешних сервисов, инфраструктуры или фреймворков. Это ключевой принцип чистой архитектуры. Все внешние зависимости (БД, HTTP-клиенты и т.д.) должны инжектироваться через интерфейсы в слои приложения/инфраструктуры.

Пример:

// Доменный слой
type OrderRepository interface {
    Save(order Order) error
}

// Инфраструктурный слой (Postgres реализация)
type PostgresOrderRepo struct {
    db *sql.DB
}

func (r *PostgresOrderRepo) Save(order Order) error {
    // Реализация с SQL-запросами
}

Такой подход обеспечивает тестируемость и возможность замены реализации без изменения доменной логики.