Certyo/v1
Retour au blog
Ingénierie28 avril 2026 · 7 min de lecture

Ce qui change dans votre code quand vous ajoutez Certyo : un walkthrough d'intégration en 5 LOC

L'objection la plus commune côté ingénierie : "ça a l'air d'une intégration lourde". Ce ne l'est pas. Ajouter de l'intégrité à un chemin d'écriture, c'est un appel HTTP. Les chemins de lecture ne changent pas. Voici à quoi ressemble votre codebase ensuite.

Quand l'équipe sécurité amène Certyo à l'ingénierie, la première question est rarement "ça marche ?" — c'est "à quel point l'intégration est-elle invasive ?". La réponse honnête est : moins que ce que les gens attendent. Ajouter une intégrité tamper-evident à un service existant, c'est un seul appel HTTP sur le chemin d'écriture, aucun changement sur le chemin de lecture, et une petite addition opérationnelle pour la vérification. Cet article parcourt à quoi ça ressemble en code réel, ce que la version production-grade ajoute à la version minimale, et où vit le vrai coût d'ingénierie.

01

L'intégration minimale

Si vous avez un service qui écrit des enregistrements dans une base de données, l'addition minimale est un seul POST vers /api/v1/records après chaque écriture. Le corps de requête est l'enregistrement lui-même plus les identifiants de tenant. La réponse est un 202 Accepted avec un identifiant d'enregistrement que vous pouvez stocker à côté de votre ligne.

Les chemins de lecture ne changent pas. Votre application continue de lire de votre base de données exactement comme avant. La preuve d'intégrité est calculée à la demande au moment de la vérification — pas à chaque lecture. C'est le choix de conception qui maintient l'intégration petite : l'intégrité est une préoccupation additive du chemin d'écriture, pas une réécriture du chemin de lecture.

02

À quoi le code ressemble vraiment

Trois exemples concrets — Node, Go, Python — pour la même intégration minimale. Chacun fait environ 5 lignes de code nouveau ajoutées à un handler d'écriture existant :

  • Node — `await fetch(url, { method: 'POST', headers, body: JSON.stringify({ tenantId, clientId, record }) })` immédiatement après votre INSERT existant. Le fetch est fire-and-forget pour le happy path ; la réponse 202 confirme que l'enregistrement est entré dans la file d'ingestion.
  • Go — un seul appel `http.Post` avec la même forme de payload. Enveloppez-le dans une goroutine si vous voulez des écritures non-bloquantes, ou appelez de façon synchrone si vous voulez une durabilité dure avant de retourner à l'utilisateur.
  • Python — `requests.post(url, json={'tenantId': ..., 'clientId': ..., 'record': ...})` à côté de votre save ORM existant. La librairie gère la réutilisation de connexion et le retry-on-network-failure si vous configurez une session.
03

Ce que la version production-grade ajoute

La version 5-LOC est réelle et fonctionne pour staging ou proof-of-concept. La version production ajoute trois choses par-dessus : des clés d'idempotence pour qu'une requête retentée ne fasse pas un double ancrage, un outbox local pour que des défaillances réseau transitoires ne perdent pas d'enregistrements, et une gestion d'erreur structurée pour que les échecs d'ancrage ne cassent pas les écritures côté utilisateur. Aucune n'est spécifique à Certyo — ce sont les mêmes patterns que vous utiliseriez pour tout effet de bord hors-processus.

5
Lignes de code pour l'intégration minimale du chemin d'écriture
0
Changements requis sur le chemin de lecture
1 jour
Temps typique pour une intégration niveau staging

La version production-grade est plus proche de 30 à 80 lignes en incluant idempotence, outbox et observabilité. C'est encore petit en termes absolus — comparable à l'ajout de tout appel de service interne avec sémantique at-least-once. La raison pour laquelle les ingénieurs atteignent des outils comme Outbox ou Debezium est la même qu'ici : les effets de bord durables sur le chemin d'écriture sont un problème résolu.

04

Par où l'intégration coule réellement

Le flux de bout en bout depuis votre application jusqu'à une preuve vérifiable on-chain a cinq étapes. Votre code ne participe qu'à la première. Tout ce qui suit est opéré par la plateforme — il n'y a rien à intégrer, rien à maintenir, rien à mettre à l'échelle de votre côté :

POST /api/v1/records
Accumulateur Kafka
Lot Merkle
Ancrage Polygon
Vérification à la demande

L'étape de vérification est où un chemin de code différent compte : quand un auditeur ou un consommateur en aval veut prouver qu'un enregistrement est intact, il appelle POST /api/v1/verify/record. Cet appel est aussi en une ligne. Le résultat de vérification est déterministe et ré-exécutable par tout tiers contre la racine Merkle on-chain. C'est la partie qui va dans le paquet de preuves remis à la conformité, pas dans le code de votre application.

05

Où vit le vrai coût d'ingénierie

Le cadrage 5-LOC est honnête sur l'intégration mais il peut cacher trois endroits où une vraie réflexion d'ingénierie est requise. Aucun n'est bloquant, mais les ingénieurs doivent les connaître à l'avance :

  • Conception de l'idempotenceSi votre handler d'écriture peut retenter en cas d'échec — et la plupart des handlers bien construits le font — vous devez vous assurer que les requêtes retentées ne produisent pas d'enregistrements ancrés en double. La plateforme supporte les clés d'idempotence ; la décision d'ingénierie est de savoir quelle clé naturelle dans vos données est suffisamment stable pour servir de clé d'idempotence (typiquement un UUID d'enregistrement ou un identifiant de transaction).
  • Politique de mode de défaillanceSi l'appel d'ancrage échoue, que doit faire l'écriture côté utilisateur ? Bloquer jusqu'à ce que l'ancrage réussisse (durabilité forte, latence supérieure) ? Continuer et réconcilier plus tard (meilleure latence, nécessite un outbox) ? C'est une décision de politique qui dépend de la criticité de l'enregistrement. La plupart des équipes choisissent réconcilier-plus-tard pour la masse des enregistrements et un ancrage synchrone pour un petit sous-ensemble à fort enjeu.
  • Mise en surface de la vérificationL'intégration minimale ancre les enregistrements mais n'expose pas la vérification aux utilisateurs finaux. Si votre application doit afficher "cet enregistrement a été vérifié à l'horodatage X" dans l'interface, c'est une petite intégration supplémentaire sur le chemin de lecture. Ce n'est pas gratuit, mais ce n'est pas non plus là où la plupart des équipes commencent.
06

Ce qu'il faut demander à votre relecteur d'ingénierie

Si un responsable sécurité ou conformité examine Certyo avec l'ingénierie, la bonne demande est un spike d'une journée : montez l'intégration de staging avec la version 5-LOC, faites-la tourner contre un sous-ensemble représentatif d'écritures, observez le résultat dans l'UI de vérification, et notez les écarts production-grade (clé d'idempotence, outbox, politique d'erreur). Ce résultat est une estimation interne crédible pour l'intégration complète. C'est aussi un environnement de staging fonctionnel, ce qui rend la décision de l'étape suivante concrète plutôt que théorique. Pour l'API de vérification en détail, voir le portail développeur. Pour les topologies de déploiement, voir /fr/about.

Ajouter de l'intégrité à un chemin d'écriture est un seul appel HTTP. Les chemins de lecture ne changent pas. Le travail d'ingénierie qui reste — idempotence, retry, observabilité — est le même travail que vous feriez pour tout effet de bord durable. Il n'y a pas de surprise.

28 avril 2026 · 7 min de lecture

Prêt à voir tout cela en action ?

Demandez une démo et vérifiez votre premier enregistrement en quelques minutes.

Demander une démo → Voir comment ça marche