Гексагональная архитектура — это подход к проектированию, в котором бизнес-логика изолирована от внешнего мира: базы данных, UI, API, очередей и сторонних сервисов. Главная идея проста: приложение должно работать независимо от того, как к нему подключаются и куда оно пишет данные.
Зачем нужна гексагональная архитектура
Проблема многих систем — логика “прилипает” к фреймворку, ORM или конкретной БД. В итоге:
- код сложно тестировать 🧪
- замена инфраструктуры становится дорогой
- появляется сильная связность
- бизнес-правила размазываются по контроллерам и сервисам
Hexagonal Architecture решает это за счёт разделения ответственности.
Ключевые элементы
- Core / Domain — сердце системы: сущности, use case’ы, правила бизнеса
- Ports — интерфейсы, через которые ядро общается с внешним миром
- Adapters — реализации этих интерфейсов для конкретных технологий
Проще говоря:
ядро говорит “мне нужен репозиторий заказов”, а адаптер уже решает, будет это PostgreSQL, MongoDB или внешний API.
Какие бывают порты
- Inbound ports — вход в систему: REST-контроллеры, GraphQL, CLI, события
- Outbound ports — выход из системы: БД, email, брокеры сообщений, внешние сервисы
Как это выглядит на практике
Например, есть сценарий: создать заказ.
- Контроллер HTTP принимает запрос
- Передаёт его в use case через inbound port
- Use case валидирует данные и применяет бизнес-логику
- Для сохранения заказа обращается к outbound port
- Конкретный adapter записывает данные в БД 💾
Важно: ядро не знает ни про Spring, ни про Django, ни про PostgreSQL.
Преимущества
- Тестируемость — ядро легко покрывать unit-тестами без БД и сети
- Гибкость — можно менять инфраструктуру без переписывания логики
- Чистая архитектура — меньше зависимости от фреймворков
- Поддерживаемость — проще развивать проект и подключать новые интерфейсы ⚙️
Когда использовать
- проект долгоживущий
- есть сложная бизнес-логика
- важны автотесты
- ожидается смена интеграций или каналов доступа
Для маленького CRUD-сервиса такая архитектура может быть избыточной. Но для enterprise-систем, fintech, e-commerce и SaaS это часто оправданное решение 🚀
Частая ошибка
Гексагональная архитектура — это не просто “разбить проект по папкам”. Суть не в структуре каталогов, а в направлении зависимостей: инфраструктура зависит от ядра, а не наоборот.
Итог
Ports & Adapters помогает строить приложения, где бизнес-логика живёт отдельно от технологий. Это делает систему устойчивее к изменениям, упрощает тестирование и снижает цену технических решений в будущем.
👀 В конце дня выигрывает не самый модный стек, а архитектура, которую можно без боли развивать.
Подборку каналов про IT — стоит посмотреть: там архитектура, backend, DevOps и практические разборы.