Go with the Domain : Création de logiciels métier modernes en Go
Go with the Domain : Création de logiciels métier modernes en Go
Résumé :
Introduction
Le livre « Go with the Domain: Building Modern Business Software in Go » (auteurs : Robert Laszczak, Miłosz Smółka, 2021, 298 pages) n'est pas simplement un énième tutoriel sur la syntaxe de Go. C'est un guide pratique pour appliquer le Domain-Driven Design (DDD) et les principes de la Clean Architecture dans l'écosystème Go. À sa sortie, le livre a été l'un des premiers à relier systématiquement la philosophie de la conception pilotée par le domaine avec un Go idiomatique, en évitant les abstractions inutiles et le « sur-ingénierie ». Il s'adresse aux développeurs qui écrivent déjà en Go et souhaitent passer d'un « code qui fonctionne simplement » à des applications métier maintenables, testables et évolutives.
De quoi parle ce livre
Le livre est construit autour d'un exemple concret : un système de gestion de commandes (order management system). Les auteurs guident le lecteur à travers toutes les étapes : de l'identification des contextes délimités (Bounded Contexts) et de la modélisation des événements du domaine, à l'implémentation des repositories, services et couches de transport (HTTP, gRPC, files de messages). Une attention particulière est portée au caractère idiomatique du code : les auteurs montrent comment utiliser les interfaces de Go pour définir des ports et des adaptateurs, comment éviter le « modèle anémique » et comment organiser correctement les packages pour ne pas violer les limites du domaine. Chaque chapitre contient des exemples pratiques, des diagrammes et des comparaisons entre du code « mauvais » et « bon ».
Pour qui est ce livre
- Développeurs Go avec au moins 1 an d'expérience, souhaitant approfondir l'architecture.
- Architectes logiciels cherchant des modèles concrets pour implémenter le DDD en Go.
- Tech leads et team leads responsables de la conception de microservices.
- Développeurs passant d'autres langages (Java, C#) à Go et souhaitant appliquer le DDD sans « frameworks lourds ».
Ce que le lecteur apprendra
- Les bases du DDD appliquées à Go : Entity, Value Object, Aggregate, Domain Event, Repository, Factory.
- La Clean Architecture (architecture hexagonale) en Go : comment séparer le domaine, l'application et l'infrastructure.
- Les tests de la logique métier sans mocks, en utilisant des tests table-driven et des interfaces.
- La gestion des transactions et de la concurrence dans le contexte du DDD (pattern Unit of Work).
- L'intégration avec des systèmes externes via des ports et adaptateurs (HTTP, gRPC, Kafka).
- L'organisation du code dans un monorepo et les modules Go.
- La gestion des erreurs dans le domaine : création de types d'erreurs personnalisés, erreurs contextuelles.
- L'Event Sourcing et le CQRS — introduction de base et exemple d'implémentation.
Points forts
- Orientation pratique : le code du livre peut être immédiatement adapté à vos propres projets.
- Caractère idiomatique : les auteurs n'imposent pas un style Java, mais montrent à quoi ressemble le DDD « à la manière de Go » (petites interfaces, composition, dépendances explicites).
- Structure claire : chaque chapitre se termine par un résumé et une liste de « points à retenir ».
- Accent sur les tests : un chapitre entier est consacré aux tests du domaine et de l'infrastructure.
- Modernité : le livre utilise les modules Go, context.Context, middleware, generics (bien qu'avant la sortie de Go 1.18 — mais les auteurs donnent des conseils d'adaptation).
À qui est-il recommandé
Le livre est une lecture obligatoire pour tous ceux qui construisent en Go des systèmes métier complexes (ERP, CRM, fintech, logistique, marketplaces). Il sera utile aussi bien à ceux qui commencent tout juste à mettre en œuvre le DDD qu'aux praticiens expérimentés souhaitant voir le « juste milieu » entre un DDD pur et le pragmatisme de Go. Si vous en avez assez des « services fourre-tout » et que vous voulez écrire un code facile à modifier pour répondre aux nouvelles exigences métier, ce livre est fait pour vous.
Recommendations
Développement web en Swift (iOS/macOS) : des bases au déploiement
C++ et Docker : conteneurisation d'applications
Kotlin professionnel : techniques avancées
Test des applications PHP : des tests unitaires aux tests d'acceptation
Concurrency in Go. Développement d'applications parallèles en Go
TypeScript High Performance