Accueil À propos Blog Me contacter
EN | FR

Blog

Deep-dives techniques, décisions d'architecture et leçons apprises en production.

Vitesse vs. complétude

Pipelines ML

Vitesse vs. complétude

Le service d'enrichissement était down pendant 20 minutes. Pas grave--les services tombent. Mais quand il est revenu, j'avais 50 000 items coincés dans une queue, et notre index de recherche n'avait pas été mis à jour depuis une demi-heure.

8 min lecture

Construire un moteur de templating de formulaires

Architecture

Construire un moteur de templating de formulaires

Chaque hôpital avait ses propres formulaires. Chaque service ses propres champs. Les médecins demandaient des modifications. Les développeurs croulaient sous les tickets. On a construit un moteur de templating. Les médecins configurent maintenant leurs propres formulaires.

9 min lecture

Quand vos sources mentent

Architecture Data

Quand vos sources mentent

Vous scrapez trois sites vendeurs. Les trois listent le même laptop. Vendeur A dit 999€. Vendeur B dit 1 049€. Vendeur C dit 999€ mais affiche 'Rupture de stock.' Quel prix montrez-vous à vos utilisateurs ?

5 min lecture

Les limites de concurrence ne sont pas que pour les CPUs

Architecture

Les limites de concurrence ne sont pas que pour les CPUs

L'erreur était cryptique : CUDA error: out of memory. J'ai vérifié le GPU. Plein de VRAM disponible--16GB, seulement 4GB utilisés par le modèle. Plein de marge. Puis j'ai regardé la liste de processus. Dix requêtes d'inférence tournaient simultanément.

7 min lecture

Pourquoi je versionne mes outputs ML

MLOps

Pourquoi je versionne mes outputs ML

Le nouveau modèle d'embedding était 15% meilleur sur nos benchmarks. Temps de tout re-embedder. J'ai écrit le script de migration : sélectionner tous les items, générer de nouveaux embeddings, mettre à jour l'index. Assez simple.

7 min lecture

Quand votre taxonomie ne correspond pas à la réalité

ML Pipelines

Quand votre taxonomie ne correspond pas à la réalité

Je fixais un fichier de mapping de 2 000 lignes, et je savais que c'était une bataille perdue d'avance. Le fichier était censé traduire les labels de produits entrants dans notre taxonomie interne. 'T-shirt' -> 'Tops > T-Shirts.' 'Jeans' -> 'Bottoms > Pants > Jeans.' Assez simple.

7 min lecture

Transformer un outil interne en PWA

Frontend

Transformer un outil interne en PWA

Le chatbot interne marchait bien. Trop bien. Les équipes voulaient y accéder depuis leur téléphone, en déplacement, entre deux réunions client. 'Tu peux faire une app mobile ?' La réponse était oui. Mais pas celle qu'ils imaginaient.

7 min lecture

Quand votre facture GPU devient l'autoscaler

DevOps

Quand votre facture GPU devient l'autoscaler

La facture montrait 847 heures GPU pour le mois. J'avais traité peut-être 200 heures de vrai travail. Le reste ? Temps d'inactivité. Des GPUs là, faisant tourner des électrons, attendant des jobs qui n'arrivaient pas.

8 min lecture

Pourquoi la culture bat la tech

Architecture

Pourquoi la culture bat la tech

Vous pouvez construire la plateforme de partage de connaissances la plus élégante du monde. Recherche parfaite. UI magnifique. Collaboration temps réel. Rien de tout ça ne compte si les gens continuent d'utiliser les chaînes d'emails.

6 min lecture

Toutes les erreurs ne méritent pas le même retry

DevOps

Toutes les erreurs ne méritent pas le même retry

La queue de retry avait 50 000 items. Tous échouaient. Tous réessayaient. Tous échouaient encore. J'ai fouillé dans les logs. La même erreur, encore et encore : 'Failed to parse product data.' La structure de la page avait changé. Mon parser cherchait un div qui n'existait plus.

8 min lecture

Quand l'étape 4 échoue

ML Pipelines

Quand l'étape 4 échoue

Le GPU a manqué de mémoire à 3h du matin. Quand je me suis réveillé, 10 000 items étaient bloqués dans une queue de retry, et le pipeline de traitement était gelé depuis six heures. La partie frustrante ? Les étapes 1 à 3 étaient déjà complétées pour tous ces items.

9 min lecture

Adopter un design system en cours de projet

Frontend

Adopter un design system en cours de projet

Chaque PR contenait une nouvelle variante de bouton. Chaque formulaire avait ses propres styles. On passait plus de temps sur le CSS que sur la logique métier. On a fini par adopter ElementPlus. Six mois plus tard, la vélocité avait doublé.

6 min lecture

Pourquoi votre recherche a besoin de mots-clés et de vecteurs

Search

Pourquoi votre recherche a besoin de mots-clés et de vecteurs

L'utilisateur a cherché 'chaussures de running Nike bleues taille 10.' Notre recherche sémantique a parfaitement compris l'intention. Elle a retourné des chaussures de running. Des chaussures de sport. Des baskets de performance. Toutes très pertinentes pour le concept de 'chaussures de running.' Juste un problème : aucune n'était Nike. Et aucune n'était bleue.

8 min lecture

Le verrou de base de données dont vous n'aviez pas besoin

Architecture

Le verrou de base de données dont vous n'aviez pas besoin

Deux workers. Un job. Les deux l'ont réclamé. J'ai regardé les logs incrédule. Worker A a pris le job #4521. Worker B a pris le job #4521. Ils ont tous les deux commencé à traiter. Ils ont tous les deux fini. Le résultat de Worker A a été sauvegardé. Puis le résultat de Worker B l'a écrasé.

7 min lecture

Le cas des accélérateurs internes

Architecture

Le cas des accélérateurs internes

Chaque fois que vous démarrez un nouveau projet SaaS, vous faites face à la même taxe de setup. Authentification. Notifications email. Processing de jobs background. Upload de fichiers. Configuration Docker. Logging. Monitoring.

7 min lecture