Director of Engineering & CISO · 2023 - now
Consentio
J'ai rejoint une équipe de cinq personnes sur une stack MySQL legacy fin 2023, et j'écris toujours du code chaque semaine. Trois ans plus tard, la plateforme tourne sur PostgreSQL derrière un pare-feu que j'ai écrit, a réussi deux audits ISO de surveillance, et l'équipe a doublé.
consentio.co- commandes, à plus de 500k par an
- 2×
- des commandes lues depuis emails et PDF, 2023 → 2026
- 14% → ⅔
- personnes dans l'équipe
- 5 → 10
- PR mergées par an, les miennes
- ~170
Le problème
Consentio est une plateforme B2B de trading de produits frais. Les fournisseurs publient des offres, les acheteurs commandent, et Magic Order, notre parseur IA, transforme les emails et PDF de commande des distributeurs en commandes. Plus de 1 500 fournisseurs y ont fait du commerce, avec des enseignes comme Aldi, Carrefour, Kroger et Metro.
Les produits sont périssables et les marges fines. Il fallait continuer à livrer du produit tout en rendant une plateforme legacy assez fiable et sûre pour les grands distributeurs et leurs revues de sécurité.
Moments clés
La nuit de bascule
Passer de MySQL à PostgreSQL ne pouvait pas se faire d'un seul coup. J'ai conçu un environnement parallèle réimporté depuis la production chaque nuit, écrit un runbook par environnement et mené moi-même la première migration. L'équipe a écrit l'essentiel des changements applicatifs ; j'ai séquencé le travail, retenu un merge pour que deux releases risquées ne partent pas ensemble, puis mené la nuit de bascule en production. Neuf mois, sans big bang, et la voie ouverte vers nos nouveaux clusters Kubernetes.
Six mois avant le premier blocage
Les grands distributeurs s'intègrent depuis des IP fixes : un pare-feu mal réglé aurait coupé les clients dont nous avions le plus besoin. J'ai écrit le WAF Cloud Armor et le rate limiting en Terraform, je les ai d'abord activés en développement, puis fait tourner en mode prévisualisation sur six mois de trafic de production, 24M de requêtes, en réordonnant les listes d'autorisation des partenaires avant l'activation. Résultat : zéro faux positif bloqué. En chemin, j'ai formé chaque ingénieur backend à Terraform, pour que les changements d'infrastructure ne passent plus par moi.
Le pire incident de 2026
Un matin de juin, en pleine fenêtre de commande, le réplica de lecture a saturé et la plateforme est tombée pendant environ 80 minutes. En suivant la règle que j'ai donnée à l'équipe, reproduire d'abord, corriger ensuite, j'ai remonté la chaîne : une mise à jour automatique de Kubernetes en heure de pointe, une tempête de reconnexions et une requête incapable d'utiliser un index. J'ai livré l'index moi-même (570 ms à 6 ms) et déplacé les fenêtres de maintenance hors des heures de pointe dans la semaine, puis écrit des post-mortems sans recherche de coupable, internes et client, et lancé un audit de la base avec l'équipe.
Aussi livré: le backend des offres en direct, appels d'offres et demandes de modification · un framework d'intégration OAuth sur lequel se branchent les intégrations partenaires · l'exporteur de commandes vers l'ERP d'un distributeur · notre bibliothèque de modules d'infrastructure-as-code · un serveur SFTP pour les clients EDI · la messagerie NATS JetStream · des agents et outils Claude Code internes.
Au-delà du code
Équipe et recrutement
- J'ai fait passer l'équipe de 5 à une dizaine de personnes entre l'Espagne et la Colombie, en écrivant les fiches de poste et en travaillant avec des cabinets et des écoles d'ingénieurs, et j'ai monté le business case d'un product manager technique.
- J'ai mis en place un release train deux fois par semaine, l'astreinte et des portes qualité, et fait passer l'équipe au code assisté par IA avec des règles de revue écrites.
Clients et produit
- J'ai été le lead technique désigné sur la marketplace fournisseurs d'un grand distributeur : ateliers d'intégration sur site, spec d'API partenaire et 14 ADR, du lancement à la Phase 1 en cinq mois.
- J'ai été l'interlocuteur technique d'une coopérative de distribution dont les commandes ont été multipliées par environ 20 après la mise en production, et j'ai repris les specs produit quand la capacité produit manquait.
Sécurité
- Comme CISO, j'ai mené le programme ISO 27001, 27017 et 27018 à travers deux audits de surveillance, ainsi que le premier pentest et les revues de sécurité des grands comptes.
Décisions et arbitrages
Arrêt d'une intégration marketplace avant un audit de données coûteux, en assumant mon erreur de cadrage
Pourquoi: les adresses de consommateurs sont des données personnelles, et l'audit coûtait plus que ce que le compte justifiait
Coût: un travail de preuve de concept mis de côté ; le client est passé en production par une voie moins chère.
Parsing LLM des commandes sur plusieurs fournisseurs avec une chaîne de repli, plutôt qu'un seul modèle
Pourquoi: aucune panne d'un fournisseur ne bloque les commandes
Coût: plus de pièces à surveiller. J'ai fixé la direction et écrit les specs ; l'équipe l'a construit.
Compter la complexité des formats, pas les formats par semaine, dans les plans de livraison client
Pourquoi: dix formats difficiles ne valent pas dix formats simples
Coût: une promesse plus dure à vendre, mais des plans tenables. Le CEO l'a adopté.
Un scoring pondéré plutôt qu'un solveur d'optimisation pour l'allocation fournisseurs
Pourquoi: une petite équipe devait le maintenir et les acheteurs devaient lui faire confiance
Coût: pas optimal ; l'API laisse la place à un solveur plus tard.
Stack
Go · TypeScript · React · PostgreSQL · NATS · GKE · Terraform · Cloud Armor · Vertex AI · Prometheus · Sentry · Vanta
À retenir
La vitesse avec les grands distributeurs est venue de la réduction des risques, pas de leur contournement : une copie de répétition chaque nuit, des runbooks écrits, six mois de logs de pare-feu. C'est ce qui a permis à une petite équipe de continuer à livrer deux fois par semaine tout en passant les revues de sécurité des grands comptes.