Hexagonal Architecture — это архитектурный подход, который разделяет систему на несколько слоёв, каждый из которых выполняет свою функцию. Эти слои представляют собой «шестигранники», где внутренний слой (ядро) содержит бизнес-логику и данные, а внешние слои отвечают за взаимодействие с пользователем, доступ к данным и другие функции.
Основные принципы Hexagonal Architecture включают в себя:
- Ядро (Core) — внутренний слой, содержащий бизнес-правила и логику приложения. Этот слой не должен зависеть от внешних факторов, таких как пользовательский интерфейс или базы данных.
- Адаптеры (Adapters) — слой, обеспечивающий взаимодействие между ядром и внешними слоями. Адаптеры могут быть реализованы в виде библиотек, фреймворков или других компонентов.
- Порты (Ports) — интерфейсы, через которые ядро взаимодействует с адаптерами. Порты определяют, какие функции доступны для внешних слоёв.
- Внешние слои (External Layers) — слои, отвечающие за взаимодействие с внешними системами, такими как базы данных, очереди сообщений и т. д. Внешние слои могут быть реализованы с использованием различных технологий, таких как ORM, микросервисы и т. п.
- Граничные адаптеры (Boundary Adapters) — адаптеры, обеспечивающие взаимодействие между внешними слоями и системой. Граничные адаптеры могут быть реализованы в виде API, веб-сервисов и т. п.