Bienvenue sur FlowZap, l'application pour créer des diagrammes avec Rapidité, Clarté et Contrôle.

Architecture CDC (Change Data Capture) événementielle

Architecture

Diagramme d'architecture Change Data Capture utilisant Debezium pour lire les journaux de transactions de la base de données et publier des événements de changement vers Kafka, alimentant des consommateurs en aval qui mettent à jour les index de recherche, invalident les caches, chargent les entrepôts de données et écrivent les journaux d'audit. Ce modèle montre comment le CDC élimine les problèmes de double écriture en capturant les changements au niveau de la base de données sans modifier le code applicatif. Critique pour la synchronisation de données entre systèmes hétérogènes.

Code FlowZap complet

SourceDB { # Source Database
n1: circle label:"Data Write Operation"
n2: rectangle label:"Transaction Log (WAL)"
n3: rectangle label:"Commit to Database"
n1.handle(right) -> n2.handle(left)
n2.handle(right) -> n3.handle(left) [label="Persist"]
n2.handle(bottom) -> CDC.n4.handle(top) [label="Log Tail"]
}
CDC { # CDC Engine (Debezium)
n4: rectangle label:"Read Transaction Log"
n5: rectangle label:"Detect Change Event"
n6: rectangle label:"Serialize to Avro/JSON"
n7: diamond label:"Schema Changed?"
n8: rectangle label:"Update Schema Registry"
n9: rectangle label:"Publish Change Event"
n4.handle(right) -> n5.handle(left) [label="INSERT/UPDATE/DELETE"]
n5.handle(right) -> n6.handle(left) [label="Before + After"]
n6.handle(right) -> n7.handle(left)
n7.handle(right) -> n9.handle(left) [label="No"]
n7.handle(bottom) -> n8.handle(top) [label="Yes"]
n8.handle(right) -> n9.handle(left) [label="Registered"]
n9.handle(bottom) -> Consumers.n10.handle(top) [label="Kafka Topic"]
}
Consumers { # Downstream Consumers
n10: rectangle label:"Search Index Updater"
n11: rectangle label:"Cache Invalidator"
n12: rectangle label:"Data Warehouse Loader"
n13: rectangle label:"Audit Log Writer"
n10.handle(right) -> n11.handle(left) [label="Elasticsearch"]
n12.handle(right) -> n13.handle(left) [label="Snowflake"]
}
TargetDB { # Target Systems
n14: rectangle label:"Elasticsearch Index"
n15: rectangle label:"Redis Cache"
n16: rectangle label:"Data Warehouse"
n17: rectangle label:"Audit Database"
n10.handle(bottom) -> TargetDB.n14.handle(top) [label="Upsert Doc"]
n11.handle(bottom) -> TargetDB.n15.handle(top) [label="Invalidate"]
n12.handle(bottom) -> TargetDB.n16.handle(top) [label="Load"]
n13.handle(bottom) -> TargetDB.n17.handle(top) [label="Append"]
}

Pourquoi ce workflow ?

Application-level dual writes (updating a database AND publishing an event) are inherently unreliable—if either fails, data becomes inconsistent. CDC captures changes directly from the database transaction log, guaranteeing that every committed write is captured and published without modifying application code.

Comment ça fonctionne

  1. Step 1: Application writes data to the source database as normal.
  2. Step 2: Debezium tails the database transaction log (WAL) to detect changes.
  3. Step 3: Each INSERT, UPDATE, or DELETE is captured as a change event with before/after state.
  4. Step 4: Events are serialized and published to Kafka topics.
  5. Step 5: Downstream consumers update search indexes, invalidate caches, and load data warehouses.
  6. Step 6: Schema changes are detected and registered in the Schema Registry.

Alternatives

Application-level event publishing requires code changes and risks dual-write inconsistency. Polling-based CDC is simpler but adds latency. Debezium with Kafka Connect provides the most reliable log-based CDC. This template shows the complete CDC pipeline.

Key Facts

Template NameArchitecture CDC (Change Data Capture) événementielle
CategoryArchitecture
Steps6 workflow steps
FormatFlowZap Code (.fz file)

Modèles associés

Architecture du pattern Outbox pour messagerie fiable

Architecture

Diagramme d'architecture outbox transactionnel où les écritures de domaine et la publication d'événements se font dans la même transaction de base de données, avec un processus relais interrogeant la table outbox et publiant les événements vers un broker de messages avec livraison garantie. Ce modèle résout le problème de double écriture où la mise à jour d'une base de données et la publication d'un événement ne sont pas atomiques, garantissant une livraison d'événements exactement une fois sans transactions distribuées. Critique pour les architectures événementielles nécessitant une publication de messages fiable.

Architecture de passerelle API pour microservices

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 de maillage de services pour microservices

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 base de données par service pour microservices

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.

Décomposition de microservices par capacité métier

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 de migration Strangler Fig pour microservices

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.

Retour à tous les modèles