17 - Qualité et observabilité des flux event-driven
Sans observabilité, un système event-driven devient opaque. Dans une banque, cette opacité est un risque majeur: il faut mesurer la santé des flux, la latence de bout en bout et la qualité des traitements pour garantir la conformité et la continuité de service.
L’observabilité couvre trois dimensions: métriques, logs et traces. Elle doit être complétée par une discipline de qualité de données et de runbooks opérationnels.
Objectifs d’observabilité
- Détecter la dégradation avant l’incident.
- Comprendre le parcours d’un event de bout en bout.
- Mesurer la performance et la fiabilité.
- Garantir l’auditabilité des flux critiques.
En banque, ces objectifs sont liés aux SLA métiers: un virement instantané ne peut pas tolérer plusieurs minutes de lag.
Métriques essentielles
Côté Kafka
- Lag: différence entre production et consommation par groupe.
- Throughput: events/sec par topic.
- ISR: in-sync replicas, indicateur de réplication.
- Under-replicated partitions: signe de risque.
Côté consumer
- Processing time par event.
- Commit latency.
- Error rate.
- Rebalance frequency.
Côté business
- Temps moyen de traitement d’un virement.
- Taux d’échec de saga.
- Nombre d’events compensés.
Tracing distribué
Les traces permettent de reconstituer le chemin complet d’un event. Les
identifiants clés sont:
- correlation_id: lie les events d’un même flux.
- causation_id: relie un event à sa cause.
Dans une banque, le tracing permet de justifier qu’une décision a été prise selon un flux conforme (ex: KYC -> AML -> ledger).
Logs structurés
Les logs doivent être structurés (JSON, key/value) pour être corrélables
avec les métriques. Chaque log critique doit inclure:
- event_id
- correlation_id
- service
- timestamp
Sans ces champs, reconstituer un incident est presque impossible.
Décomposition de la latence end-to-end
Pour comprendre les temps de traitement, il faut découper la latence en segments: - Latence producer: du code applicatif à l’ACK Kafka. - Latence broker: écriture sur disque et réplication. - Latence consumer: temps entre l’arrivée et le traitement. - Latence métier: transformation et effets de bord.
Dans une banque, cette décomposition permet d’identifier si un retard vient du broker (problème d’ISR) ou d’un consumer (backpressure). Sans cette granularité, les équipes perdent du temps à chercher au mauvais endroit.
Event time vs processing time
Les dashboards doivent distinguer le temps d’événement (occurred_at) du
temps de traitement. Un virement initié à 10:00 mais traité à 10:05 peut
rester acceptable pour un reporting, mais pas pour un service temps réel.
En banque, certains reporting réglementaires utilisent strictement le temps d’événement pour reconstruire l’état à une date donnée. Cette discipline évite les écarts entre la réalité comptable et la projection.
Observabilité côté producer
Les producers sont souvent oubliés. Pourtant, ils conditionnent la qualité du
flux. Les métriques utiles incluent:
- record-send-rate et record-error-rate,
- temps moyen d’ACK,
- taux de retries,
- ratio de compression.
Une augmentation soudaine de retries peut signaler une panne réseau ou une dégradation du cluster Kafka. En banque, ces alertes doivent être connectées aux runbooks d’incident.
Qualité de données et règles métier
La qualité ne se limite pas à la validation du schéma. Dans un flux bancaire,
on applique souvent des règles métier:
- montant positif,
- devise ISO valide,
- compte existant et actif,
- ordre logique des événements (ex: TransferInitiated avant TransferSettled).
Ces contrôles peuvent être implémentés dans un consumer “quality gate” qui redirige les anomalies vers une quarantaine dédiée. Ce pattern évite de polluer les projections downstream.
Data lineage et dérive de schéma
Les flux évoluent. Un champ peut être renommé, supprimé ou utilisé différemment. La dérive de schéma est difficile à détecter sans contrôle. Les pratiques avancées incluent: - comparaison automatique des schémas versionnés, - alertes lorsque la compatibilité est violée, - suivi de l’usage des champs côté consumers.
Dans une banque, ce suivi est essentiel pour éviter qu’un changement mineur ne casse un flux de reporting réglementaire.
Sécurité et confidentialité des logs
Les logs peuvent exposer des PII. Une politique stricte est nécessaire: - masquage des identifiants sensibles, - séparation des logs techniques et métiers, - accès restreint aux outils d’observabilité.
En banque, il est fréquent de stocker les logs sensibles dans des environnements séparés et de limiter l’accès aux équipes habilitées.
Tests synthétiques et monitoring actif
L’observabilité ne doit pas être passive. Les banques mettent en place des tests synthétiques: un event de test est injecté et son parcours est mesuré. Cela permet de détecter une panne avant qu’un client réel ne soit impacté.
Un flux de test peut être taggé avec un correlation_id spécial afin de mesurer
la latence end-to-end. Les résultats sont comparés aux SLO définis.
Remédiation automatique
Certaines dégradations peuvent être corrigées automatiquement: - scaling automatique d’un consumer group, - activation d’un mode dégradé, - bascule sur un cluster de secours.
Ces mécanismes doivent être contrôlés, car une remédiation agressive peut amplifier un incident. En banque, l’automatisation est souvent progressive et validée par des règles strictes.
Dead Letter Queue et quarantaine
Les événements non traitables doivent être isolés dans une DLQ. Cela évite de bloquer le pipeline.
Bonnes pratiques de base
- Créer un topic DLQ par flux critique.
prod.payments.transfer.dlq.v1
- Documenter les procédures de reprocessing.
- Corréler DLQ et erreurs métier.
Alerting et runbooks
Les alertes doivent être actionnables. Exemples: - Lag > seuil critique pendant 5 min. - Taux d’erreur > 1% sur un flux critique. - Saga bloquée > SLA.
Chaque alerte doit être associée à un runbook clair: qui intervient, quelles étapes, comment déclencher un replay.
SLO et budgets d’erreur
La définition de SLO permet d’aligner les équipes techniques et métiers. Exemple SLO: 99.9% des virements traités en moins de 2 secondes. Le budget d’erreur permet de quantifier la tolérance aux incidents.
Observabilité des sagas
Les sagas doivent exposer: - durée moyenne par étape, - taux de compensation, - taux de rejet.
Ces indicateurs montrent où le flux se bloque et aident à prioriser l’optimisation.
Tableau de bord bancaire type
Un dashboard opérationnel inclut: - lag Kafka par topic critique, - taux d’erreur par consumer group, - latence end-to-end des virements, - nombre de sagas actives.
Ce tableau de bord est souvent partagé entre SRE et équipes métier.
Indicateurs de fraîcheur et complétude
Au-delà du lag, il faut mesurer la fraîcheur et la complétude des projections. La fraîcheur mesure le décalage entre la dernière mise à jour et l’heure courante. La complétude vérifie qu’un ensemble d’events attendu est bien présent (ex: tous les virements du jour).
Ces indicateurs sont essentiels pour les projections utilisées en reporting et conformité. Un tableau de bord qui affiche un solde sans fraîcheur explicite peut induire en erreur les équipes métiers.
Observabilité des state stores et compaction
Les applications de streaming (Kafka Streams, ksqlDB) s’appuient sur des state stores et des topics de changelog. Ces composants doivent être monitorés: taille des stores, latence de restauration, ratio de compaction.
Dans une banque, une corruption ou une lenteur de state store peut invalider les scores de fraude ou les agrégations temps réel. Les métriques des stores sont donc critiques.
Runbooks de replay et forensic
Le replay est un outil puissant, mais il doit être encadré par un runbook. Ce runbook doit préciser: - qui autorise le replay, - quelle fenêtre temporelle est rejouée, - comment éviter les effets externes (notifications, écritures comptables).
Les banques utilisent souvent un environnement de replay isolé, avec des consumers “dry-run” qui reconstruisent les projections sans effet sur les systèmes externes. Ce cadre limite les risques lors d’enquêtes ou de corrections.
Capacity planning et prévision de charge
L’observabilité sert aussi à prévoir la capacité. Les métriques d’utilisation permettent d’anticiper les pics saisonniers (fin de mois, campagnes). En banque, ces pics sont critiques: un under-provisioning peut entraîner des retards réglementaires.
Une bonne pratique est de définir des seuils d’alerte préventifs (ex: 70% de saturation) pour planifier un scaling avant incident.
Détection d’anomalies et signaux faibles
Les incidents majeurs sont souvent précédés de signaux faibles: légère hausse du lag, augmentation des retries, ou baisse du taux de compression. Les banques mettent en place des mécanismes de détection d’anomalies pour identifier ces signaux avant qu’ils n’impactent les flux critiques.
Ces mécanismes peuvent être simples (seuils dynamiques) ou avancés (modèles statistiques). L’important est d’éviter la fatigue d’alerte: les alertes doivent être rares et actionnables.
SLIs de qualité et complétude
Outre les SLO de latence, un système bancaire doit suivre des SLIs de qualité: - taux de messages invalides, - taux d’events manquants, - taux d’events corrigés.
Ces indicateurs permettent de mesurer la santé \“sémantique\” des flux, pas seulement leur vitesse.
Post-mortems et amélioration continue
Chaque incident doit donner lieu à un post-mortem: causes racines, actions correctives et mesures préventives. Dans un environnement bancaire, ces analyses sont souvent requises par la conformité. Elles alimentent l’évolution des runbooks, des dashboards et des politiques de gouvernance.
Une observabilité mature ne se limite pas à détecter: elle sert à apprendre et à renforcer la résilience globale du système.
Gestion des incidents
Lors d’un incident, l’objectif est de limiter l’impact métier. Les options: - ralentir le flux (backpressure), - isoler un consumer défaillant, - activer un mode dégradé (ex: suspendre notifications).
En banque, certains flux doivent être maintenus coûte que coûte (ledger), tandis que d’autres peuvent être dégradés temporairement.
Audits et conformité
La banque doit prouver qu’un event a été traité correctement. L’observabilité fournit ces preuves: logs, traces, et indicateurs.
Sans observabilité, un audit se transforme en reconstruction manuelle coûteuse.
Culture d’exploitation partagée
L’observabilité ne peut pas être portée uniquement par les équipes SRE. Les équipes produit doivent partager la responsabilité: définition des SLO, validation des alertes, participation aux post-mortems. Cette culture commune réduit les silos et accélère la résolution des incidents.
Dans une banque, cette collaboration est essentielle car les impacts sont directs sur la confiance client et la conformité. Un flux critique n’est pas seulement un sujet technique, c’est un engagement métier. Des exercices réguliers (game days, simulations d’incident) renforcent cette culture. Ils permettent d’aligner les équipes sur les procédures de replay, les mécanismes de compensation et les priorités métiers en situation de crise.
Conclusion
La qualité et l’observabilité ne sont pas des couches annexes, elles sont le système nerveux de l’event-driven. Dans un contexte bancaire, elles permettent la conformité, la fiabilité et la confiance des métiers. Sans elles, Kafka n’est qu’un tuyau opaque. Elles conditionnent la capacité à évoluer sans perdre la maîtrise du risque opérationnel. Un flux bien observé est un actif stratégique, pas une dette. C’est un levier direct de résilience et de conformité pour les banques. Sans cette discipline, les incidents deviennent systémiques et coûteux à terme.