Blog
Deep-dives techniques, décisions d'architecture et leçons apprises en production.
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.
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.
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 ?
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.
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.
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.
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.
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.
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.
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.
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.
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é.
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.
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é.
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.