В последние годы гексагональная архитектура, то есть порты и адаптеры…
Kaan Baytan
В последние годы гексагональная архитектура, то есть порты и адаптеры, стала очень популярна среди крупных компаний, и это не случайно. Давайте кратко рассмотрим, почему это так хорошо работает.
Прежде всего, отметим, что гексагональная архитектура в основном состоит из 3-х слоев, четко отделенных друг от друга:
1. Домен
Это сердце системы.
Здесь находится вся бизнес-логика, и эта логика полностью независима от фреймворков, баз данных и API.
Домен обычно содержит:
Сущности — да, это не сущности в базе данных
Объекты-значения — неизменяемые объекты
Бизнес-правила
Доменные службы
Особые исключения
Основная идея: самая важная часть системы должна оставаться максимально чистой и стабильной.
2. Приложение
Этот уровень действует как своего рода «контроллер», который управляет вводом и выводом системы.
Обычно они находятся здесь:
Варианты использования
DTO и картографы
IN Ports — операции, входящие в систему
OUT Ports — исходящие операции на уровень инфраструктуры
Этот уровень позволяет избежать смешивания бизнес-логики с техническими деталями и сохраняет структуру системы более аккуратной.
3. Инфраструктура
Все технические подробности уже здесь:
Рамки
Базы данных
Очереди сообщений
ОТДЫХ
ГрафQL
SMTP
Интеграции с внешними системами
Этот уровень реализует адаптеры.
Благодаря адаптерам:
Можно переключиться с MySQL на MongoDB, не затрагивая уровень домена.
Запросы могут отправляться к внешним API.
Сообщения можно получать из очередей
Возможна работа с фреймворками
Технические детали не загрязняют внутренний бизнес-код
Благодаря подходу «Порты и адаптеры» инфраструктура становится одним из самых гибких уровней.
дать хастагту
#HexagonalArchitecture #PortsAndAdapters #SoftwareArchitecture #CleanArchitecture #DomainDrivenDesign #DDD #BackendDevelopment #SoftwareEngineering #SystemDesign #DomainLayer #ApplicationLayer #InfrastructureLayer #UseCase #CleanCode #SOLID #Microservices #ModularMonolith #Backend #Programming #Developer #КачествоКода #MaintainableCode
