Откуда возникла гексагональная архитектура

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

Ответ

Гексагональная архитектура (или порты и адаптеры) предложена Алистером Кокберном в 2005 году. Основная идея — изолировать бизнес-логику от внешних зависимостей (UI, БД, API), сделав приложение легко тестируемым и заменяемым. В центре — доменный слой, а взаимодействие с внешним миром происходит через порты (интерфейсы) и адаптеры (реализации).

Пример:

// Порт (интерфейс)
interface UserRepository {
  save(user: User): Promise<void>;
}

// Адаптер (реализация для БД)
class DbUserRepository implements UserRepository {
  async save(user: User) {
    await db.save(user);
  }
}

// Доменный слой использует только порт
class UserService {
  constructor(private repo: UserRepository) {}

  async register(user: User) {
    await this.repo.save(user);
  }
}

Ключевые преимущества: гибкость, тестируемость (можно подменить адаптеры на моки), независимость от инфраструктуры.