Le principe de l'architecture hexagonale est de séparer les préoccupations métier de la logique technique. Dans cette architecture, le cœur de l'application est constitué par le domaine, également appelé noyau ou hexagone. Le domaine est entouré par des ports et des adaptateurs qui communiquent avec le monde extérieur. Les ports sont des interfaces qui définissent les services que l'application doit fournir, tandis que les adaptateurs sont des implémentations concrètes de ces interfaces.
L'architecture hexagonale favorise la modularité et la réutilisabilité du code en isolant le domaine de la logique technique. Le domaine est indépendant de l'infrastructure technique (base de données, framework, etc.) et des entrées/sorties (interface utilisateur, API, etc.). Cela permet de faciliter le test du code métier sans avoir à simuler l'environnement technique.
L'architecture hexagonale encourage également la séparation des responsabilités et la clarté du code. En utilisant des interfaces clairement définies pour les services, il est plus facile de comprendre comment l'application est censée fonctionner, ce qui facilite la maintenance du code à long terme.
Enfin, l'architecture hexagonale permet de favoriser l'évolutivité du code. En isolant le domaine, il est plus facile de changer l'implémentation des ports et des adaptateurs sans affecter le code métier. Cela permet également d'ajouter des fonctionnalités à l'application sans avoir à modifier le code métier existant.
En résumé, l'architecture hexagonale est un style d'architecture logicielle qui favorise la séparation des préoccupations métier et techniques. Elle permet de rendre le code plus évolutif, maintenable et testable en isolant le domaine du reste de l'application.