🏛️ Clean Architecture

👩‍💻 Maîtrise : Intermédiaire
📅 Depuis : 2024
🎯 Rôle : Structuration de projets backend et réflexion sur la séparation des responsabilités

📌 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 :

J’ai prévu de poursuivre ma formation via des projets techniques personnels et des lectures.