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

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.

Code FlowZap complet

Gateway { # API Gateway
n1: circle label:"Client Request"
n2: rectangle label:"Route to Service"
n15: rectangle label:"Aggregate Responses"
n16: circle label:"Return to Client"
n1.handle(right) -> n2.handle(left)
n2.handle(bottom) -> UserService.n3.handle(top) [label="User Data"]
n2.handle(bottom) -> OrderService.n7.handle(top) [label="Order Data"]
n15.handle(right) -> n16.handle(left)
}
UserService { # User Service
n3: rectangle label:"Handle User Request"
n4: rectangle label:"Query User DB"
n5: rectangle label:"User PostgreSQL"
n6: rectangle label:"Return User Data"
n3.handle(right) -> n4.handle(left)
n4.handle(right) -> n5.handle(left) [label="SELECT"]
n5.handle(right) -> n6.handle(left) [label="Result"]
n6.handle(top) -> Gateway.n15.handle(bottom) [label="User JSON"]
}
OrderService { # Order Service
n7: rectangle label:"Handle Order Request"
n8: rectangle label:"Query Order DB"
n9: rectangle label:"Order MongoDB"
n10: rectangle label:"Return Order Data"
n7.handle(right) -> n8.handle(left)
n8.handle(right) -> n9.handle(left) [label="find()"]
n9.handle(right) -> n10.handle(left) [label="Documents"]
n10.handle(top) -> Gateway.n15.handle(bottom) [label="Order JSON"]
}
EventBus { # Event Bus (Kafka)
n11: rectangle label:"Publish Domain Event"
n12: rectangle label:"Event Topic"
n13: rectangle label:"Consume Event"
n14: rectangle label:"Sync Read Model"
n11.handle(right) -> n12.handle(left) [label="UserUpdated"]
n12.handle(right) -> n13.handle(left) [label="Subscribe"]
n13.handle(right) -> n14.handle(left) [label="Update Denormalized"]
}

Pourquoi ce workflow ?

Sharing a single database across microservices creates tight coupling, schema change conflicts, and performance bottlenecks that defeat the purpose of microservices. The database-per-service pattern ensures each service owns its data, enabling independent deployment, technology-appropriate storage choices, and fault isolation.

Comment ça fonctionne

  1. Step 1: Each microservice owns a dedicated database optimized for its access patterns.
  2. Step 2: The User Service uses PostgreSQL for relational data; the Order Service uses MongoDB for document storage.
  3. Step 3: Cross-service data needs are fulfilled through event-driven synchronization via Kafka.
  4. Step 4: When a user updates their profile, a UserUpdated event is published to the event bus.
  5. Step 5: The Order Service consumes the event and updates its denormalized user data.
  6. Step 6: The API Gateway aggregates responses from multiple services for client queries.

Alternatives

Shared databases are simpler but create deployment coupling and single points of failure. Database-per-service with synchronous API calls creates latency chains. This template shows the event-driven approach that balances autonomy with data consistency.

Key Facts

Template NameArchitecture base de données par service pour microservices
CategoryArchitecture
Steps6 workflow steps
FormatFlowZap Code (.fz file)

Modèles associés

Architecture événementielle Publish-Subscribe

Architecture

Diagramme d'architecture événementielle publish-subscribe avec broker de messages Kafka ou RabbitMQ, sérialisation d'événements, partitionnement de topics, livraison fan-out vers plusieurs consommateurs et gestion des erreurs via file de lettres mortes. Ce modèle représente le pattern fondamental de messagerie asynchrone où producteurs et consommateurs sont entièrement découplés via un broker de messages. Essentiel pour les architectes construisant des systèmes événementiels faiblement couplés et évolutifs.

Architecture événementielle par chorégraphie

Architecture

Diagramme d'architecture de chorégraphie événementielle où les microservices se coordonnent par événements sans orchestrateur central, avec les services Commande, Paiement, Inventaire et Expédition réagissant aux événements de domaine les uns des autres. Ce modèle représente le pattern de coordination décentralisée où chaque service ne connaît que ses propres responsabilités et publie des événements pour que d'autres les consomment. Idéal pour les équipes favorisant l'autonomie des services plutôt que le contrôle centralisé des workflows.

Architecture IA-Native Event-Driven Kafka

Architecture

Une architecture IA agentique event-driven qui remplace l'orchestrateur central par des topics Kafka/PubSub : les agents s'abonnent, réagissent et publient de nouveaux événements. Cela aligne les systèmes multi-agents avec la chorégraphie microservices éprouvée et est idéale pour les systèmes temps réel, haut débit et les configurations 'maillage d'agents'.

Orchestration IA - Maillage Event-Driven (Kafka-First)

Architecture

Une architecture maillage d'agents event-driven utilisant un broker d'événements style Kafka. Plusieurs agents s'abonnent à des topics (commandes, alertes, analytique), traitent les événements indépendamment, et publient les résultats sur le bus. Idéal pour le traitement d'événements temps réel et architectures de services découplés.

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 Backend-for-Frontend (BFF) pour microservices

Architecture

Diagramme d'architecture Backend-for-Frontend avec des couches BFF séparées pour les clients web et mobile, chacune optimisant les réponses API pour sa plateforme spécifique tout en partageant des microservices backend communs. Ce modèle montre comment éviter les API universelles en adaptant l'agrégation des données et l'optimisation des charges utiles par type de client. Recommandé pour les équipes servant plusieurs plateformes frontend depuis un backend microservices partagé.

Retour à tous les modèles