23 - Event catalogue
Un event catalogue est le référentiel vivant qui décrit, documente et structure tous les events publiés dans votre écosystème. Il ne s’agit pas d’une liste statique, mais d’un actif opérationnel: il relie les domaines métier, les contracts techniques, les contraintes de conformité et les responsabilités organisationnelles. En banque, où chaque event peut avoir une valeur probatoire, le catalogue est un composant critique pour l’audit, la traçabilité et la résilience.
Ce guide explique pourquoi un event catalogue est indispensable, comment le structurer, et comment l’intégrer dans votre gouvernance afin qu’il reste fiable et utile à long terme.
Qu’est-ce qu’un event catalogue (et ce que ce n’est pas)
Un event catalogue répond à une question simple: qui publie quoi, dans quel contrat, à quelles conditions et pour quel usage. Il associe un event à son propriétaire, sa description métier, son schéma, ses topics, ses règles de compatibilité, ses contraintes de rétention, ses SLO/SLA et ses consommateurs.
Il ne faut pas le confondre avec: - Schema Registry: gère la compatibilité technique des schémas, mais ne capture pas la dimension métier, l’owner, la sensibilité ou le contexte. - Data Catalog: couvre des datasets et des tables; un event catalogue gère des flux et des contrats temps réel. - Documentation ad hoc: un wiki sans gouvernance devient rapidement obsolète.
Le catalogue est donc un pont entre le métier (virement, KYC, fraude) et la technique (topic, schema, partition key), avec une gouvernance claire.
Pourquoi il devient indispensable en banque
Dans un SI bancaire, la multiplication des producteurs et consommateurs crée un risque de couplage implicite. Sans catalogue: - Les équipes consomment des events sans connaître l’owner ni les garanties. - Des schémas évoluent sans contrôle, cassant des projections critiques. - Des données sensibles circulent sans classification. - Les audits deviennent coûteux, car il faut reconstruire la logique du flux.
Un catalogue apporte de la visibilité et de la discipline contractuelle. Il clarifie les responsabilités et évite les dépendances invisibles, ce qui est vital pour des domaines régulés.
Structure minimale d’une fiche d’event
Chaque event doit être décrit avec un niveau de détail suffisant pour être consommé sans ambiguïté. Voici les champs essentiels:
| Champ | Rôle | Exemple bancaire |
|---|---|---|
| Nom | Identifiant métier | TransferInitiated |
| Topic | Transport | prod.payments.transfer.evt.initiated.v1 |
| Domain | Contexte métier | payments |
| Owner | Responsable | Squad Paiements |
| Schéma | Contrat technique | Avro v1 |
| Compatibilité | Règle d’évolution | BACKWARD |
| Clé de partition | Ordre | account_id |
| Rétention | Durée | 365 jours |
| Sensibilité | Classification | PII-Restricted |
| SLA | Engagement | 99.9% / 2s |
| Consommateurs | Dépendances | Ledger, Fraud, CRM |
Cette fiche doit être accessible, versionnée et mise à jour quand le contrat évolue. En banque, l’owner doit être clairement identifiable pour les revues de conformité.
Exemple d’entrée de catalogue
Voici un exemple de fiche structurée, versionnée dans un dépôt Git:
name: TransferInitiated
version: 1
domain: payments
owner: squad-payments
contact: payments-oncall@bank.example
public: true
schema:
type: avro
registry_id: 412
compatibility: BACKWARD
topic:
name: prod.payments.transfer.evt.initiated.v1
partitions: 24
retention_days: 365
cleanup_policy: delete
partition_key: account_id
slo:
availability: 99.9
max_latency_ms: 2000
sensitivity:
classification: PII-Restricted
fields: ["from_account", "to_account"]
consumers:
- ledger-service
- fraud-service
- notifications-service
lifecycle:
status: active
deprecated_on: null
Ce format permet d’automatiser des contrôles: validation de compatibilité, détection de champs sensibles, vérification de la rétention, et alertes si un consumer critique n’est pas déclaré.
Taxonomie et classification
Un event catalogue utile impose une taxonomie claire. Les dimensions classiques sont: - Public vs private: contrat stable ou interne. - Fact vs delta: état complet ou changement minimal. - Command vs event: intention vs fait. - Criticality: impact métier en cas de perte.
Dans un contexte bancaire, la classification des données doit être alignée avec les exigences réglementaires (PCI-DSS, GDPR, normes locales). Un event qui contient un IBAN ou un identifiant client doit être marqué comme sensible, avec un plan de protection et des restrictions d’accès.
Gouvernance et workflow de publication
Sans processus, le catalogue devient un artefact passif. Un workflow robuste inclut: 1) Design review: validation du contrat, du nommage, de la clé de partition. 2) Validation schema: compatibilité et tests de sérialisation. 3) Classification sécurité: PII, chiffrement, ACL. 4) Publication contrôlée: ajout dans le catalogue, puis création du topic. 5) Onboarding consumers: lecture des SLA et des constraints.
Ce workflow doit être automatisé en CI/CD pour éviter la dérive. Un simple fichier YAML sans validation devient vite obsolète.
Versioning et compatibilité
La compatibilité est le cœur du contrat. En banque, la règle générale est: - BACKWARD pour les events publics (les consumers anciens continuent de fonctionner). - FULL pour les topics critiques (compatibilité stricte dans les deux sens).
L’ajout d’un champ est une évolution additive; la suppression est disruptive et nécessite un changement de version de topic. Le catalogue doit indiquer les champs optionnels, les defaults et la politique de dépréciation. Sans cela, les consumers appliquent des règles implicites et la dette technique augmente.
Cycle de vie des events
Un event a un cycle de vie complet: - Draft: en conception, non consommable. - Active: utilisé en production. - Deprecated: toujours produit, mais appelé à disparaître. - Retired: plus produit, lecture archivistique seulement.
Le catalogue doit afficher ce cycle pour éviter la consommation de flux en fin de vie. En banque, il est fréquent de conserver un event en lecture seule pour l’audit même après sa dépréciation.
Observabilité, SLA et qualité des données
Un event catalogue moderne inclut des SLO/SLA: délai maximal d’émission, fréquence attendue, et taux d’erreur toléré. Ces informations sont cruciales pour les consumers. Par exemple, un service de fraude ne doit pas dépendre d’un event sans SLA clair.
La qualité de données est un autre axe: documentez les règles d’intégrité, indiquez si certains champs sont obligatoires, et surveillez la dérive (nulls, formats invalides). Les métriques doivent être accessibles depuis le catalogue pour que les équipes mesurent la fiabilité du flux.
Sécurité et conformité
Le catalogue est un outil de contrôle. Il doit indiquer: - Les champs sensibles. - Les règles de masquage (ex: IBAN partiellement masqué). - Les exigences de chiffrement. - Les ACL autorisées.
Un event catalogue aide aussi à documenter les transferts cross-border. Dans une banque internationale, certains events ne doivent pas sortir d’une région pour respecter les contraintes locales. Le catalogue doit donc mentionner la zone de stockage et la politique de réplication.
Bonnes pratiques de base
prod.payments.transfer.evt.initiated.v1prod.payments.transfer.evt.settled.v1prod.payments.transfer.cmd.initiate.v1prod.corebanking.account.evt.opened.v1prod.payments.transfer.dlq.v1
Ces noms mettent en évidence l’environnement, le domaine, le type (evt/cmd), l’action et la version. Le catalogue doit refléter exactement ces conventions pour éviter les divergences entre documentation et réalité.
Intégration avec le Schema Registry
Le catalogue doit pointer vers le Schema Registry, mais il ajoute la couche métier. Une bonne pratique consiste à stocker l’identifiant du schéma, la compatibilité et le lien vers la définition. Ainsi, un consumer peut retrouver le contrat technique et la raison métier du flux sans passer par plusieurs outils.
Catalogue et architecture bancaire
Prenons un flux de virement international:
- TransferInitiated (paiements) déclenche AML.
- TransferRiskApproved (fraude) permet la réservation FX.
- LedgerEntryPosted (ledger) acte la comptabilisation.
Chaque event appartient à un domaine distinct, mais le catalogue les relie par correlation et explique la logique globale. Cette vision est essentielle pour les équipes de conformité et d’audit, qui doivent reconstruire un parcours client sans inspecter le code source.
Mise en œuvre pratique
Le catalogue peut être implémenté de plusieurs façons: - Repository Git: YAML/JSON versionnés, validation en CI. - Portail interne: UI de recherche et de découverte. - API catalogue: utilisée par les pipelines pour contrôler la création de topics.
L’essentiel est d’avoir un single source of truth. En banque, le Git offre l’avantage de la traçabilité: chaque changement de contrat est un commit signé, ce qui facilite les audits.
Catalogue, lineage et analyse d’impact
Un catalogue moderne doit exposer la dépendance amont/aval. Connaître les
consommateurs d’un event est indispensable pour évaluer l’impact d’un changement
de schéma ou d’une modification de rétention. En banque, un simple champ ajouté
sur TransferInitiated peut affecter des projections de risque, des calculs
prudentiels ou des rapports réglementaires.
Le lineage fournit une vue graphe: producteurs, topics, consumers, pipelines de transformation et data stores finaux. Cette vue accélère l’analyse d’incident et la gestion de crise. Si un consumer critique accuse du retard, le catalogue permet d’identifier les services en amont qui génèrent la charge ou les services en aval qui dépendent du flux.
Pour être utile, le lineage doit être maintenu automatiquement (logs Kafka, observabilité, métadonnées de déploiement). Un lineage manuel vieillit vite et perd sa valeur. En contexte bancaire, cette capacité est souvent exigée en audit: il faut savoir quels systèmes alimentent un rapport financier et quelles données ont été utilisées pour une décision de risque.
Onboarding des consumers
Consommer un event n’est pas un acte trivial. Le catalogue doit guider les équipes avec un parcours clair: - Vérifier que le domaine et le SLA sont compatibles avec le besoin. - Lire la section “sensibilité” et appliquer les règles de sécurité. - Valider la clé de partition pour comprendre l’ordre garanti. - Implémenter l’idempotence et les retries avant de consommer en production.
En banque, il est recommandé de fournir des events exemples (payloads réalistes) et un environnement de test avec un topic sandbox. Cela permet aux consumers de valider leur logique sans risque de perturber des flux critiques. Le catalogue peut aussi référencer des tests contractuels, des SDK internes ou un guide de projection pour accélérer l’intégration.
Automatisation et quality gates
Un catalogue fiable doit être auto-validé. Mettez en place des quality gates dans la CI: - Vérification du nommage (pattern, environnement, version). - Validation de compatibilité (Schema Registry). - Détection de champs sensibles non déclarés. - Alignement entre la configuration du topic et le contrat documenté.
En pratique, un modèle GitOps fonctionne bien: la création d’un topic passe par une pull request, validée par des contrôles automatiques et une revue architecture. En banque, cette discipline réduit les risques d’erreurs opérationnelles et renforce la traçabilité des décisions.
Anti-patterns à éviter
- Catalogue décoratif: rempli une fois, jamais mis à jour.
- Absence d’owner: personne n’est responsable du contrat.
- Données sensibles non classifiées: risque réglementaire immédiat.
- Schémas versionnés sans dépréciation: accumulation de flux obsolètes.
- Docs déconnectées: topic réel différent du topic documenté.
Ces anti-patterns conduisent à la perte de confiance. Un catalogue qui n’est pas fiable devient un risque plus qu’un outil.
Conclusion
Un event catalogue n’est pas un luxe, c’est une infrastructure de gouvernance. Il rend l’écosystème observable, contractualisé et auditable. En banque, où la traçabilité est un impératif légal, il devient un élément central du design end-to-end. Traitez-le comme un produit: versionnez-le, automatisez-le, et donnez-lui des owners. C’est à ce prix que l’event-driven peut être durable.