Skip to content
Yassir Halaoui
Read in English

Compétence

Kafka, Debezium et des systèmes événementiels là où l’argent circule

Je conçois des pipelines d’événements pour des systèmes qui ne peuvent ni perdre un message ni l’appliquer deux fois : capture de changements sur PostgreSQL, outbox transactionnel et schémas Avro qui évoluent entre équipes.

En bref

Yassir Halaoui conçoit des systèmes événementiels avec Apache Kafka, Kafka Connect et la capture de changements Debezium, en s’appuyant sur le pattern outbox transactionnel et sur Avro avec Confluent Schema Registry. Sur une plateforme de paiement multi-pays, il a construit un pipeline CDC sur le write-ahead log de PostgreSQL, avec un heartbeat qui fait avancer le replication slot pour que le WAL ne sature jamais le disque.

Où je l'ai utilisée

  1. Pluxee · depuis 2025

    Conception du pipeline de capture de changements d’une plateforme multi-pays de gestion de bénéficiaires : outbox transactionnel, Debezium 2.4 lisant PostgreSQL via pgoutput, Kafka, et Avro avec Confluent Schema Registry pour l’évolution des schémas.

  2. Pluxee · depuis 2025

    Ajout d’un heartbeat qui fait avancer le replication slot pour que des tables calmes ne bloquent pas le write-ahead log, et provisioning Terraform des topics Kafka et de leurs rôles.

  3. CIH Bank · 2017 à 2022

    Utilisation de la messagerie IBM MQ dans des services bancaires en production.

  4. RevealTogether

    Des événements temps réel sur WebSockets adossés à Redis, qui poussent les votes et l’instant de la révélation vers chaque invité connecté.

Tout ce que couvre ce domaine

Streaming
  • Apache Kafka
  • Kafka Connect
  • Debezium (CDC)
  • IBM MQ
Contrats
  • Avro
  • Confluent Schema Registry
  • OpenAPI
Patterns
  • Outbox transactionnel
  • Consommateurs idempotents
  • Dead letter topics
  • Architecture événementielle
  • Domain-Driven Design
Temps réel
  • WebSockets
  • Redis

En profondeur

Du CDC sur une base qui ne vous appartient pas

La panne qui fait tomber Debezium vient rarement du connecteur. C’est le replication slot qui bloque le write-ahead log de PostgreSQL jusqu’à remplir le disque, sur une base très active dont les tables capturées sont justement calmes. Un heartbeat qui écrit dans une table capturée toutes les quelques secondes fait avancer le slot, et c’est la première chose que j’ajoute.

Le exactly-once est une conception, pas un paramètre

Kafka livre au moins une fois. Pour que ce soit sûr, l’enregistrement de déduplication et le changement d’état doivent être validés dans la même transaction, les effets de bord passer par un outbox, et la clé être une clé métier plutôt qu’un UUID inventé par le producteur.

Des schémas qui survivent à un sprint

Entre équipes, je pars d’une compatibilité FULL_TRANSITIVE, je donne une valeur par défaut à chaque nouveau champ et je retire les champs sur plusieurs trimestres plutôt qu’en un sprint. Le registry protège le format. Parler à l’équipe qui consomme protège tout le reste.

Questions

Pouvez-vous nous aider à mettre en place Kafka avec Debezium ?

Oui. J’ai fait tourner Debezium sur PostgreSQL avec pgoutput en production. L’installation est la partie facile ; le heartbeat, la surveillance des slots et l’accord avec l’équipe qui possède la base sont ce qui le fait tenir.

Outbox transactionnel ou capture de changements ?

Si vous possédez l’application qui écrit les données, une table outbox vidée par un poller est souvent plus simple à exploiter. Le CDC vaut son coût quand on ne peut pas modifier l’application qui écrit. Dans les deux cas, il faut des consommateurs idempotents en aval.

Pourquoi notre WAL PostgreSQL grossit-il avec Debezium ?

Presque toujours à cause d’un replication slot inactif ou en retard. Debezium n’avance le slot que lorsqu’il valide un offset : des tables capturées calmes sur une base active bloquent donc le WAL. Ajoutez une action heartbeat qui écrit dans une table capturée, et une alerte sur le WAL retenu par slot.

Le traitement exactly-once est-il possible avec Kafka ?

De bout en bout, on obtient en pratique une livraison au moins une fois et un consommateur idempotent. C’est atteignable et fiable : valider le marqueur de déduplication avec le changement d’état, et faire passer les effets de bord par un outbox.

Notes de terrain

Réalisations

Compétences liées