На что похожа гексагональная архитектура в классических архитектурах

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

Ответ

Гексагональная архитектура (или порты и адаптеры) похожа на многослойную архитектуру, но с акцентом на изоляцию ядра приложения от внешних зависимостей.

  • Ядро (доменная логика) — центральный шестиугольник, не зависит от UI, БД или API.
  • Порты — интерфейсы для взаимодействия (например, UserRepository).
  • Адаптеры — реализации портов (REST API, GraphQL, база данных).

Пример:

// Порт (интерфейс)
interface UserRepository {
  getUser(id: string): Promise<User>;
}

// Адаптер (реализация для API)
class ApiUserRepository implements UserRepository {
  async getUser(id: string) {
    const response = await fetch(`/api/users/${id}`);
    return response.json();
  }
}

// Ядро (не знает о деталях реализации)
class UserService {
  constructor(private repo: UserRepository) {}

  async getUser(id: string) {
    return this.repo.getUser(id);
  }
}

Аналогия: чистый MVC, где модель (ядро) не зависит от контроллеров и представлений (адаптеров).