Какую серверную архитектуру используешь

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

Ответ

Чаще всего использую чистую архитектуру (Clean Architecture) или гексагональную (Hexagonal). Они позволяют:

  1. Разделять слои (домен, приложение, инфраструктура)
  2. Делать код тестируемым
  3. Минимизировать зависимости

Пример структуры проекта:

/internal
  /domain    # бизнес-логика
  /app       # use cases
  /infra     # БД, внешние API

Для API предпочитаю REST или gRPC, иногда GraphQL для сложных фронтендов. Веб-фреймворк - Chi или Echo за их простоту и производительность.

Для микросервисов добавляю CQRS и Event Sourcing, если требуется масштабирование.