Clean architecture
Principes fondamentaux de la clean architecture
Formalisée par Robert C. Martin, la clean architecture repose sur une règle structurante : la règle de dépendance. Les dépendances ne pointent que vers l'intérieur, des couches techniques vers la logique métier, jamais l'inverse. Le domaine métier ignore totalement la façon dont les données sont stockées ou affichées.
Elle s'organise généralement en couches concentriques :
- Entités : règles métier essentielles, indépendantes de toute application.
- Cas d'usage (use cases) : logique applicative orchestrant les entités pour un besoin précis.
- Adaptateurs d'interface : conversion des données entre les cas d'usage et le monde extérieur (controllers, présentateurs, gateways).
- Frameworks et pilotes : couche la plus externe (base de données, framework web, services tiers), considérée comme un détail interchangeable.
L'inversion de dépendance (interfaces définies par le métier, implémentées par la couche technique) permet de remplacer une base de données ou un framework sans toucher au cœur applicatif.
Bénéfices et coûts pour un projet sur mesure
La clean architecture vise la durabilité d'un système qui doit évoluer pendant des années : ERP, plateforme métier, logiciel propriétaire. Son intérêt augmente avec la complexité métier et la durée de vie attendue du projet. Sur un développement simple ou jetable, sa rigueur peut représenter un surcoût injustifié.
| Critère | Architecture en couches stricte (clean) | Architecture monolithique couplée |
|---|---|---|
| Logique métier | Isolée, indépendante du framework | Mêlée au framework et à la base de données |
| Testabilité | Élevée : le cœur se teste sans infrastructure | Faible : tests dépendants de la base et du framework |
| Changement de technologie | Localisé à la couche externe | Impacte l'ensemble du code |
| Coût initial | Plus élevé (abstractions, interfaces) | Plus faible au démarrage |
| Coût d'évolution à long terme | Maîtrisé | Croissant avec la dette technique |
Le compromis se résume ainsi : la clean architecture déplace une partie de l'effort vers le démarrage du projet pour réduire le coût des évolutions futures.
Mise en œuvre concrète
Adopter la clean architecture ne dépend pas d'un langage ou d'un framework particulier : elle s'applique aussi bien en PHP, Java, TypeScript que dans une application mobile. Quelques repères pratiques :
- Définir les interfaces côté métier : les contrats (repositories, services externes) appartiennent au domaine, leurs implémentations à la couche technique.
- Garder les entités pures : aucune annotation de framework ni dépendance d'ORM dans le cœur métier.
- Faire transiter des objets dédiés entre les couches plutôt que d'exposer directement les modèles de base de données.
- Mesurer le bon dosage : appliquer la rigueur là où la complexité métier le justifie, sans sur-architecturer les parties triviales.
Cette discipline structure un code dont la valeur, la logique métier, reste protégée des changements technologiques qui surviennent inévitablement sur la durée de vie d'un logiciel.
Questions fréquentes
Vous voulez un logiciel testable et évolutif sur le long terme ? L'architecture y est pour beaucoup.
Voir nos logiciels sur mesureDéfinitions liées