Change Data Capture : Patterns, Outils & Architecture
Le Change Data Capture (CDC) est le pilier de l'intégration de données moderne. Plutôt que d'interroger des tables entières de manière répétée, le CDC détecte et propage uniquement les lignes modifiées. Résultat : latence réduite, charge base de données allégée et une piste d'audit fiable de chaque mutation.
Comparaison des Méthodes CDC
| Méthode | Mécanisme | Latence | Charge DB | Conscience du Schema | Risque de Perte |
|---|---|---|---|---|---|
| Log-based | Lecture du journal de transactions (WAL/binlog) | Très faible (secondes) | Minimale | Élevée — capture les DDL | Faible |
| Trigger-based | Des triggers écrivent dans une table miroir | Faible (quasi temps réel) | Moyenne — écritures supplémentaires | Moyenne | Faible |
| Query-based (timestamp) | Interroge les lignes où updated_at > last_sync | Moyenne (minutes) | Élevée | Aucune | Moyenne — suppressions manquées |
| Query-based (diff) | Compare les snapshots entre exécutions | Élevée (heures) | Très élevée | Aucune | Moyenne |
| Dual-write | L'application écrit en DB + bus d'événements | Très faible | Faible sur DB | Niveau application | Élevé — risque de cohérence |
Le CDC log-based est le standard industriel pour les systèmes de production. Il lit le flux de réplication natif de la base, sans impact sur les performances de requêtes.
Panorama des Outils
| Outil | Type | Sources | Destinations | Modèle Tarifaire | Idéal Pour |
|---|---|---|---|---|---|
| Debezium | Open source (Kafka Connect) | PostgreSQL, MySQL, MongoDB, Oracle, SQL Server | Kafka, Pulsar | Gratuit | Équipes avec expertise Kafka |
| AWS DMS | Service managé | 20+ relationnels/NoSQL | S3, Kinesis, Redshift, RDS | Par heure d'instance | Migrations AWS-native |
| Fivetran | SaaS | 300+ connecteurs | Entrepôts, lacs | Tarification par ligne | Équipes low-ops |
| Airbyte | Open source / Cloud | 350+ connecteurs | Entrepôts, lacs | Gratuit / usage | Flexibilité + communauté |
| Striim | Plateforme entreprise | Oracle, SAP, mainframes | Multi-cloud | Licence | Modernisation du legacy |
Architecture de Référence : Pipeline CDC Log-Based
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Base Source │────▶│ Connecteur │────▶│ Kafka │────▶│ Connecteur │
│ (Postgres) │ WAL │ Debezium │ CDC │ Topics │ │ Sink │
└──────────────┘ └──────────────┘ └──────┬───────┘ └──────┬───────┘
│ │
┌──────▼───────┐ ┌──────▼───────┐
│ Traitement │ │ Entrepôt │
│ Stream │ │ de Données │
│ (Flink) │ │ (Iceberg) │
└──────────────┘ └──────────────┘
Pattern Outbox pour les Microservices
Le pattern transactional outbox résout le problème du dual-write. L'application écrit les événements métier dans une table outbox au sein de la même transaction. Le CDC surveille ensuite cette table et publie les événements vers Kafka.
Métriques Clés à Surveiller
| Métrique | Cible | Importance |
|---|---|---|
| Retard de réplication | < 5 secondes | Lectures obsolètes en aval |
| Disponibilité du connecteur | > 99.9% | Les interruptions causent des pertes |
| Débit d'événements | Selon la charge | Les goulets d'étranglement cascadent |
| Échecs de changement de schéma | 0 | Les changements cassants arrêtent les pipelines |
Ressources
- Documentation Debezium
- Martin Kleppmann — "Retourner la Base de Données"
- AWS DMS Bonnes Pratiques
- Gunnar Morling — Pattern Outbox
:::