В этой статье я хочу вкратце рассказать о концепции гексагональной архитектуры, также известной как шаблон портов и адаптеров.

Что это такое?

Шестиугольная архитектура основана на трех столпах или принципах.

  • Отдельные: на стороне пользователя, бизнес-логика и на стороне сервера;
  • Зависимости переходят от стороны пользователя и стороны сервера к бизнес-логике;
  • Мы соединяем границы приложения с помощью портов и адаптеров.

Порты

Порты обеспечивают всю связь с нашим основным приложением. Это интерфейсы, с которыми взаимодействуют наши внутренние компоненты, без информации о том, кто с ними подключается.

Адаптеры

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

Пример

В этом примере представьте, что REST API подключен к внешнему веб-приложению.

  • Внешний порт: запрос может иметь разные параметры и может ожидать разные форматы ответа. Мы можем создать адаптер для каждого внешнего отправителя;
  • Адаптер: он получает запрос, преобразует его в согласованный формат, определенный портом, и передает его внутреннему приложению.

Когда данные достигают внутреннего приложения, они уже в ожидаемом формате, и приложение работает с ними и возвращает ответ в формате, который ожидает порт.

  • Порт: порт перенаправляет ответ адаптеру, от которого он получил запрос.
  • Адаптер. Адаптер преобразует ответ в формат, подходящий для запрашивающей стороны.

Плюсы

  • Независимое решение для внешних сервисов;
  • Разделение бизнес-логики;
  • Легче протестировать.

Минусы

  • Более сложная архитектура, чем тривиальная (необходимость построения слоев);
  • Стоимость строительства и содержания.

Заключение

«Создайте свое приложение для работы без пользовательского интерфейса или базы данных, к которому вы можете запускать автоматические регрессионные тесты, развертывать, когда база данных недоступна, и подключать приложения без их участия». (Алистер Кокберн)

Это еще один способ создавать и изучать код и архитектуру приложений. Концепция изоляции помогает работать с микросервисами и другими решениями, которые следуют аналогичному шаблону.

Я надеюсь, что эта статья поможет вам. Спасибо!