Что такое Onion архитектура

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

Ответ

Onion архитектура — это подход к проектированию приложений, где зависимости направлены внутрь, к ядру системы. В центре находится доменный слой (бизнес-логика), который не зависит от внешних слоёв (инфраструктура, UI, БД).

Основные слои:

  1. Домен — чистые модели и бизнес-правила.
  2. Приложение — сценарии использования (use cases).
  3. Инфраструктура — реализация репозиториев, внешних сервисов.
  4. UI/API — контроллеры, HTTP-обработчики.
// Пример интерфейса репозитория в доменном слое
type UserRepository interface {
    FindByID(id int) (*User, error)
}

// Реализация в инфраструктурном слое
type PostgreSQLUserRepo struct { db *sql.DB }

func (r *PostgreSQLUserRepo) FindByID(id int) (*User, error) {
    // Запрос к БД
}

Плюсы:

  • Тестируемость (можно мокать зависимости).
  • Гибкость (замена инфраструктуры без изменения домена).
  • Чистота архитектуры.

Минусы:

  • Сложность для маленьких проектов.
  • Больше boilerplate-кода.