🏛️ Clean Architecture
📌 Définition
La Clean Architecture, popularisée par Robert C. Martin (Uncle Bob), est une approche d’architecture logicielle qui vise à rendre les applications plus maintenables, testables et indépendantes des frameworks, des bases de données ou de l’IHM. Elle repose sur le principe de séparation claire entre la logique métier (domaine), les cas d’usage (application) et les couches d’interface (contrôleurs, frameworks, UI). C’est une démarche aujourd’hui largement adoptée dans les projets complexes.
📂 Mes éléments de preuve
API des bénéficiaires effectifs – Challenge technique
Lors de ce projet individuel, j’ai structuré entièrement une API Spring Boot selon les principes de la Clean Architecture. La logique métier de calcul récursif des bénéficiaires a été isolée dans des services indépendants, tandis que les contrôleurs et adaptateurs REST étaient découplés. Cela m’a permis de bien différencier la logique de présentation, les cas d’usage et le cœur métier.
Projet Millenium – Respect de la séparation des responsabilités
Intégrée à une équipe de plusieurs développeurs sur le projet Millenium, j’ai été amenée à intervenir dans une architecture orientée microservices, où les principes de Clean Architecture et de Domain-Driven Design étaient en partie appliqués. J’ai contribué à maintenir cette séparation en travaillant sur des résolveurs GraphQL et des fonctions backend sans mélanger logique métier et présentation.
🧠 Mon autocritique
Je comprends bien les principes de la Clean Architecture : inversion des dépendances, règle d’indépendance,
isolation du domaine et découplage entre les couches. J’ai su les appliquer efficacement dans un projet personnel,
et respecter ces bonnes pratiques dans des projets collectifs.
Il me reste à consolider l’application de ces principes dans des architectures distribuées ou à grande échelle, où on fait tout en TDD et DDD. Il me reste encore à mettre en pratique ces concepts sur la partie frontend.
📈 Mon évolution dans cette compétence
Je souhaite approfondir ma maîtrise des architectures logicielles modernes, en particulier :
- Les patterns d'architecture hexagonale et en oignon
- La mise en pratique dans des projets réels Spring Boot ou Node.js
- L’association avec Domain-Driven Design (DDD) pour mieux modéliser les domaines métiers
- La mise en pratique en frontend