Architecture
Diagramme des couches d'architecture propre montrant les quatre couches concentriques : Entités (domaine), Cas d'utilisation (application), Adaptateurs d'interface (contrôleurs, présentateurs, repositories) et Frameworks & Drivers (serveur web, base de données, SDK cloud). Ce modèle représente la Clean Architecture d'Uncle Bob avec la règle de dépendance où les couches internes ne dépendent jamais des couches externes, garantissant que le modèle de domaine reste pur et indépendant du framework. Référence essentielle pour les architectes logiciels imposant des frontières architecturales.
Code FlowZap complet
External { # External Layer (Frameworks & Drivers)
n1: rectangle label:"Express/Fastify Web Server"
n2: rectangle label:"PostgreSQL Driver"
n3: rectangle label:"Redis Client"
n4: rectangle label:"AWS SDK"
n1.handle(bottom) -> Interface.n5.handle(top) [label="HTTP Request"]
n2.handle(bottom) -> Interface.n8.handle(top) [label="DB Connection"]
n3.handle(bottom) -> Interface.n8.handle(top) [label="Cache"]
}
Interface { # Interface Adapters Layer
n5: rectangle label:"Controller"
n6: rectangle label:"Presenter"
n7: rectangle label:"DTO Mapper"
n8: rectangle label:"Repository Implementation"
n5.handle(right) -> n7.handle(left) [label="Map Input"]
n7.handle(bottom) -> UseCase.n9.handle(top) [label="Request Model"]
n6.handle(top) -> External.n1.handle(bottom) [label="View Model"]
n8.handle(bottom) -> UseCase.n12.handle(top) [label="Implements"]
}
UseCase { # Use Cases Layer (Application)
n9: rectangle label:"Create Order Use Case"
n10: rectangle label:"Get Order Use Case"
n11: rectangle label:"Cancel Order Use Case"
n12: rectangle label:"Order Repository Interface"
n9.handle(bottom) -> Entity.n13.handle(top) [label="Call Domain"]
n10.handle(bottom) -> Entity.n13.handle(top) [label="Query"]
n11.handle(bottom) -> Entity.n14.handle(top) [label="Cancel"]
n9.handle(right) -> n12.handle(left) [label="Persist"]
n10.handle(top) -> Interface.n6.handle(bottom) [label="Output"]
}
Entity { # Entities Layer (Domain)
n13: rectangle label:"Order Aggregate Root"
n14: rectangle label:"Order Item Entity"
n15: rectangle label:"Money Value Object"
n16: rectangle label:"Order Status Enum"
n13.handle(right) -> n14.handle(left) [label="Contains"]
n14.handle(right) -> n15.handle(left) [label="Uses"]
n13.handle(bottom) -> n16.handle(top) [label="State"]
}
Pourquoi ce workflow ?
Frameworks and databases change frequently, but business rules should remain stable. Clean Architecture enforces the dependency rule—inner layers never depend on outer layers—ensuring that the most important code (domain logic) is the most stable and testable, while infrastructure details are easily replaceable.
Comment ça fonctionne
- Step 1: The Entities layer defines domain models, value objects, and business rules.
- Step 2: The Use Cases layer implements application-specific business logic.
- Step 3: The Interface Adapters layer converts data between use case format and external format.
- Step 4: The Frameworks & Drivers layer contains web servers, database drivers, and cloud SDKs.
- Step 5: Dependencies point inward: controllers depend on use cases, use cases depend on entities.
- Step 6: The repository interface is defined in the use case layer but implemented in the adapter layer.
Alternatives
Traditional MVC mixes concerns across layers. Hexagonal architecture is similar but uses different terminology. Vertical slice architecture organizes by feature instead of layer. This template provides the canonical Clean Architecture reference.
Key Facts
| Template Name | Couches d'architecture propre (Clean Architecture) |
| Category | Architecture |
| Steps | 6 workflow steps |
| Format | FlowZap Code (.fz file) |
Modèles associés
Architecture
Diagramme d'architecture hexagonale montrant la séparation nette entre le cœur de domaine, les adaptateurs entrants (REST, GraphQL, CLI, consommateurs de messages), les adaptateurs sortants (PostgreSQL, Stripe, email, Redis) et les interfaces de ports qui les connectent. Ce modèle visualise le pattern ports et adaptateurs où le cœur de domaine n'a aucune dépendance sur l'infrastructure, le rendant entièrement testable et agnostique technologiquement. Fondamental pour les équipes adoptant les principes d'architecture propre dans leur base de code.
Architecture
Diagramme d'architecture de passerelle API pour microservices montrant le routage des requêtes, l'authentification JWT, la limitation de débit, la découverte de services et l'agrégation des réponses à travers des services backend distribués. Ce modèle représente le point d'entrée de tout le trafic client dans un écosystème de microservices, appliquant les politiques de sécurité avant que les requêtes n'atteignent les services internes. Idéal pour les ingénieurs plateforme concevant une infrastructure API évolutive avec des préoccupations transversales centralisées.
Architecture
Diagramme d'architecture de maillage de services avec proxys sidecar Istio ou Linkerd gérant le chiffrement mTLS, les politiques de trafic, le disjoncteur et le traçage distribué à travers les microservices. Ce modèle visualise comment un maillage de services abstrait les préoccupations réseau du code applicatif, permettant une communication zero-trust entre les services. Essentiel pour les équipes adoptant une infrastructure de maillage de services pour améliorer l'observabilité et la sécurité.
Architecture
Diagramme d'architecture base de données par service où chaque microservice possède son propre magasin de données dédié, avec synchronisation événementielle via Kafka pour la cohérence des données inter-services. Ce modèle démontre le principe fondamental d'isolation des données des microservices, montrant comment PostgreSQL et MongoDB coexistent dans une stratégie de persistance polyglotte. Critique pour les architectes imposant l'autonomie des services tout en maintenant la cohérence à terme.
Architecture
Diagramme d'architecture de décomposition de microservices organisé par capacités métier : Identité, Catalogue produits, Tarification et Exécution des commandes, chacun avec des magasins de données et des API indépendants. Ce modèle montre comment découper un monolithe en services alignés sur les domaines métier, en utilisant un pattern Backend-for-Frontend (BFF) pour l'agrégation spécifique au client. Utile pour les architectes planifiant les frontières de microservices orientées domaine.
Architecture
Diagramme d'architecture de migration Strangler Fig montrant le remplacement incrémental d'un monolithe legacy par de nouveaux microservices, utilisant une couche de routage pour répartir le trafic entre l'ancien et le nouveau système. Ce modèle représente la stratégie de migration éprouvée où les nouvelles fonctionnalités sont construites en microservices tandis que les endpoints legacy sont progressivement retirés. Essentiel pour les équipes modernisant des systèmes legacy sans réécriture risquée en big-bang.