Ответ
Гексагональная архитектура называется архитектурой портов и адаптеров, потому что она разделяет приложение на ядро (бизнес-логику) и внешние взаимодействия.
Порты — это интерфейсы, определяющие, как ядро может общаться с внешним миром (например, API для работы с базой данных или внешним сервисом). Они абстрагируют взаимодействие.
Адаптеры — это реализации портов, которые преобразуют внешние запросы в формат, понятный ядру, и наоборот. Например, REST-контроллер (адаптер) преобразует HTTP-запрос в вызов метода ядра.
// Порт (интерфейс)
interface UserRepository {
save(user: User): Promise<void>;
}
// Адаптер (реализация)
class MongoUserRepository implements UserRepository {
async save(user: User) {
await mongoClient.save(user);
}
}
Такое разделение делает приложение гибким: можно легко заменить адаптер (например, перейти с MongoDB на PostgreSQL), не меняя ядро.