В каких областях может быть использована hexagonal architecture?

В каких случаях можно использовать шестиугольную архитектуру вместо чистой архитектуры?
  • 12 февраля 2024 г. 13:49
Ответы на вопрос 2
Шестиугольная архитектура, также известная как Ports and Adapters Pattern, представляет собой структуру проектирования программного обеспечения, которая стремится соединить внутреннюю бизнес-логику приложения (ее "домен") с различными другими компонентами программного обеспечения или внешними системами, такими как базы данных, веб-сервисы, интерфейсы пользователей и т.д. Это делается путем создания "портов" для входных/выходных операций и "адаптеров", которые изменяют данные для взаимодействия с этими "портами". Вот несколько областей, где шестиугольная архитектура может быть использована:

1. **Веб-приложения**: В сложных веб-приложениях, где требуется четкое разделение между уровнем представления и бизнес логикой.

2. **Микросервисы**: В архитектуре микросервисов для обеспечения независимости сервисов и упрощения тестирования через порты и адаптеры.

3. **Предприятий приложений**: Широкомасштабные корпоративные системы, требующие гибкой интеграции с множественными внешними системами и обеспечения безопасности, масштабируемости и мониторинга.

4. **Интеграция с сторонними сервисами**: Когда приложение должно взаимодействовать с различными внешними API или сервисами, адаптеры могут быть использованы для преобразования данных и протоколов.

Относительно вопроса о том, когда использовать шестиугольную архитектуру вместо "Чистой архитектуры" (Clean Architecture) — оба подхода имеют много общего и делают акцент на разделении бизнес-логики от внешних влияний. Главное отличие между ними заключается в том, что "Чистая архитектура" предлагает несколько более строгий набор правил организации зависимостей и слоев в приложении.

Вы можете использовать шестиугольную архитектуру, когда:

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

"Чистую архитектуру" можно выбрать, когда:

- Вы хотите следовать строгому слоистому подходу, где изменения в любом слое минимально сказываются на других слоях.
- Вам необходимо создать систему с сильным акцентом на независимости бизнес-правил от инфраструктуры и внешних агентов.
- Вы цените концепции, подобные инверсии зависимостей
Чистая архитектура - это просто идея, а не готовая архитектура. Гексагональная - частный случай чистой. 
В блоге Роберта Мартина первыми строками идет:
Over the last several years we’ve seen a whole range of ideas regarding the architecture of systems. These include:

Hexagonal Architecture (a.k.a. Ports and Adapters) by Alistair Cockburn and adopted by Steve Freeman, and Nat Pryce in their wonderful book Growing Object Oriented Software
Onion Architecture by Jeffrey Palermo
Screaming Architecture from a blog of mine last year
DCI from James Coplien, and Trygve Reenskaug.
BCE by Ivar Jacobson from his book Object Oriented Software Engineering: A Use-Case Driven Approach
Похожие вопросы