Comprendre la structure architecturale hexagonale conventionnelle pour les applications Go
L’architecture hexagonale (ou « ports et adaptateurs ») est un modèle d’architecture logicielle populaire que vous pouvez appliquer lors de la création de vos applications Go. En l’utilisant, vous pouvez améliorer l’évolutivité, la maintenabilité et la testabilité de votre application.
Cette architecture permet de séparer la logique métier des dépendances externes et de l’infrastructure, ce qui rend votre application flexible et plus facile à maintenir.
Qu’est-ce que l’architecture hexagonale ?
L’architecture hexagonale divise les applications en trois couches principales :
- Les Couche d’application abrite la logique de base de l’application, indépendamment de toute dépendance à l’égard de tiers. La couche d’application doit contenir votre logique d’entreprise, vos modèles de domaine et vos services d’application.
- La couche d’application Couche ports et adaptateurs abrite les adaptateurs qui interagissent avec les applications existantes. Les ports sont des interfaces qui définissent les opérations pour votre application, tandis que les adaptateurs sont des implémentations de ces interfaces. Les adaptateurs peuvent être des bases de données, des API HTTP, des courtiers en messages ou tout autre système externe.
- La couche d’infrastructure abrite la mise en œuvre des adaptateurs. La couche d’infrastructure devrait inclure des bases de données, des courtiers de messages et d’autres systèmes externes.
Avantages de l’architecture hexagonale
L’architecture hexagonale est populaire pour les avantages suivants qu’elle offre.
Évolutivité et maintenabilité du projet
La division de vos applications permet une base de code modulaire et découplée qui facilite l’évolution et la maintenance de votre application.
Vous pouvez supprimer les adaptateurs sans affecter la logique de base et modifier la logique de base sans affecter les adaptateurs. Cela signifie que vous pouvez facilement remplacer les adaptateurs sans réécrire l’ensemble de votre application.
Testabilité et facilité d’intégration
L’architecture hexagonale favorise la testabilité puisque vous pouvez écrire des tests unitaires pour la logique de base sans simuler de dépendances externes. Vous pouvez utiliser des doubles de test, tels que des fakes ou des stubs, sans avoir à configurer une base de données ou un courtier de messages.
L’architecture hexagonale facilite également l’intégration de votre application avec d’autres systèmes. Comme les adaptateurs sont séparés de la logique de base, vous pouvez les réutiliser dans d’autres applications ou pour des microservices. Vous pouvez également exposer les API du port de votre application pour qu’elles soient utilisées par d’autres systèmes.
Flexibilité et adaptabilité à l’évolution des besoins
L’architecture hexagonale offre une flexibilité et une adaptabilité à l’évolution des besoins. Comme la logique de base est indépendante des adaptateurs, vous pouvez facilement modifier ou étendre la fonctionnalité de l’application sans affecter les adaptateurs.
Vous pouvez faire évoluer votre application au fil du temps, en vous en tenant à des systèmes externes spécifiques.
Go et l’architecture hexagonale
Au fond, l’architecture hexagonale consiste à séparer la logique métier de l’application de l’infrastructure, de sorte que vous puissiez remplacer les dépendances sans affecter la logique principale de l’application, ce qui facilite la maintenance et le test de l’application.
L’application Go hexagonale typique utilise quatre répertoires principaux : cmd, interne, pkg et vendeur.
Les cmd contient les principales applications du projet. Le code que vous écrivez ici appellera généralement des fonctions des fichiers des répertoires pkg et internal.
Le répertoire interne doit contenir le code d’une application privée que vous ne voulez pas que les utilisateurs importent dans leur application. Le compilateur Go applique le modèle de disposition interne, et vous pouvez avoir autant de répertoires internes dans d’autres répertoires que vous le souhaitez. Vous n’êtes pas limité à un répertoire interne de premier niveau.
Les pkg doit contenir le code de la bibliothèque que vous souhaitez que les applications externes importent et utilisent. Bien que l’utilisation du répertoire pkg soit une pratique courante, elle n’est pas universellement acceptée ou appliquée.
Les fournisseur doit contenir les dépendances de l’application (gérées manuellement ou automatiquement). Vous pouvez utiliser le répertoire go mod vendor pour créer un répertoire /vendeur afin d’exploiter les fonctionnalités que Go offre aux vendeurs.
Mise en œuvre de l’architecture hexagonale en Go
La structure des fichiers de votre projet est importante lors de la mise en œuvre de l’architecture hexagonale dans n’importe quel langage, y compris Go.
Voici un exemple de structure de fichier pour la mise en œuvre de l’architecture hexagonale en Go :
Les pkg contient les ports d’entrée et de sortie de votre application dans cet exemple. Vous définirez les interfaces des ports d’entrée et de sortie dans ces fichiers.
Le répertoire interne contient le domaine d’application et les cas d’utilisation. C’est dans ces fichiers que vous écrirez la logique métier de votre application.
Le répertoire adaptateurs contient le code d’infrastructure qui connecte votre application à la base de données et à l’API.
Configuration de la structure des fichiers de l’architecture hexagonale
La mise en place de la structure de fichiers de l’architecture hexagonale de votre projet peut être fastidieuse, mais vous pouvez écrire un script bash pour automatiser le processus de création des répertoires.
Exécutez cette commande dans le répertoire de travail de votre projet pour créer un script bash, hexagonal.sh et lui accorder les droits de lecture, d’écriture et d’exécution :
Entrez ce code bash dans hexagonal.sh pour créer la structure de fichiers dans votre répertoire de travail actuel :
Vous pouvez exécuter ce script bash avec la commande suivante :
Le programme bash crée les dossiers et les sous-dossiers afin que vous puissiez créer des fichiers et écrire la logique commerciale de votre application.
L’architecture hexagonale est pratique pour créer des applications complexes
La mise en œuvre de l’architecture hexagonale peut prendre du temps, mais les avantages l’emportent sur le coût à long terme. En séparant les préoccupations et en rendant votre code plus modulaire, vous pouvez facilement maintenir et tester vos applications.
Il existe de nombreux autres modèles architecturaux, chacun présentant des avantages et des inconvénients pour la création d’applications flexibles et performantes. Il s’agit notamment de l’architecture MVC (modèle, vue, contrôleur), très répandue pour la création d’applications web.
S’abonner à notre lettre d’information
Qu’est-ce que l’architecture hexagonale en go ?
L’architecture hexagonale, également connue sous le nom d’architecture de ports et d’adaptateurs ou d’architecture propre, est un modèle d’architecture logicielle qui met l’accent sur la séparation des préoccupations entre la logique métier centrale d’une application et les systèmes externes avec lesquels elle interagit.
Qu’est-ce qu’une structure d’architecture hexagonale ?
L’architecture hexagonale est un modèle architectural permettant de construire des systèmes logiciels testables, découplés, flexibles et maintenables. L’architecture hexagonale est un modèle qui vous aide à vous concentrer sur le domaine commercial tout en passant moins de temps sur les aspects techniques.
Quel est un exemple de cas d’utilisation de l’architecture hexagonale ?
Voici quelques exemples de cas d’utilisation de l’architecture hexagonale : Une application bancaire qui nous permet d’envoyer de l’argent d’un compte à un autre. Un système qui nous permet de demander un prêt, de procéder à une vérification et de recevoir une mise à jour lorsque notre demande est actualisée.
Qu’est-ce que l’architecture hexagonale dans les microservices ?
L’architecture hexagonale est un modèle d’architecture qui permet de concevoir des applications logicielles autour de la logique du domaine afin de l’isoler des facteurs externes. Les principes DDD peuvent être traduits en une conception architecturale, devenant ainsi une excellente approche pour les microservices.