Idées & Perspectives

Explorer le développement AI-first, les garde-fous de code et l'architecture de la jetabilité.

Votre compilateur vérifie la syntaxe. Vos tests devraient vérifier l'architecture.

La plupart des équipes documentent les règles d'architecture dans des wikis. Voici comment les écrire comme des tests exécutables qui font échouer la CI quand votre graphe de dépendances dérive.

Votre suite de tests vérifie que retourne 42 quand on lui donne la bonne entrée. Elle ne vérifie pas que est autorisé à importer . Le compilateur est content…

Votre couche domaine importe Postgres. Votre CI s'en fiche.

Les diagrammes de clean architecture sont très beaux sur un tableau blanc. Voici comment faire en sorte que votre pipeline de build applique la direction des dépendances, pour que le code domaine ne puisse pas atteindre l'infrastructure.

Quelqu'un dans votre équipe vient d'importer dans . La PR compile. Les tests passent. La revue de code fait trois cents lignes, et personne ne remarque. Trois…

Votre diagramme d'architecture est déjà un mensonge

La documentation d'architecture pourrit dès que vous la sauvegardez. Voici comment garder une documentation honnête en utilisant des diagrammes générés depuis le code, des ADR et des tests d'architecture automatisés.

Chaque diagramme d'architecture que j'ai vu dans un wiki était faux. Pas dramatiquement faux. Juste calmement, progressivement faux. Le service nommé « Auth »…

Votre boucle de retry part du principe que la première requête a échoué. Ce n'est probablement pas le cas.

Un timeout ou un crash ne signifie pas que votre requête API a été perdue. Voici comment les clés d'idempotence rendent les retries sûrs, et le pattern de stockage qui empêche réellement les doublons.

Votre service plante au milieu d'une requête . Le client voit un timeout et retry. Vous avez maintenant deux charges. Le client est en colère. La base de…

Un verrou qui survit à votre processus : comment fonctionnent réellement les leases distribués

Les mutex en mémoire disparaissent lors du redémarrage de votre serveur. Voici comment les leases distribués avec des jetons de clôture (fencing tokens) et des TTLs empêchent le travail en double lors des crashs, et où ils échouent encore.

Votre ne survit pas à un . Il ne survit pas à un OOM, à un déploiement progressif, ni à un redémarrage de nœud. À l'instant où le processus se termine, le…

Un circuit breaker sans goroutines, sans timers et sans overhead d'arrière-plan

La plupart des bibliothèques de circuit breaker lancent des threads d'arrière-plan pour tester la récupération. Vous n'en avez pas besoin. Voici une conception pilotée par les requêtes qui élimine tout l'overhead d'arrière-plan sans sacrifier la correction.

Chaque circuit breaker en production que j'ai examiné finit par lancer un thread d'arrière-plan. Il peut s'agir d'une goroutine Go, d'un Java, ou d'une tâche…

Votre service web a un chemin d'arrêt gracieux. C'est le bug.

Les logiciels crash-only traitent chaque échec comme un crash et chaque démarrage comme une récupération. Pour les services web, cela signifie supprimer votre logique d'arrêt et concevoir un état qui survit à un kill -9.

Votre service web a un shutdown handler. Il vide les buffers, ferme les connexions, écrit des checkpoints. Vous l'avez testé une fois, peut-être. En…

Comment tuer un mutant survivant quand vous ne comprenez pas ce qu'il a changé

Le mutation testing a trouvé un survivant et vous n'avez aucune idée de ce que fait la mutation. Voici une méthode pas à pas pour écrire le bon test sans comprendre le mutant au préalable.

Votre rapport de mutation testing est plein de survivants, et au moins l'un d'eux n'a aucun sens pour vous. L'outil dit qu'il a inversé un en à la ligne 47, ou…

Le code d'authentification a besoin de 90% de couverture de mutation. Vos utilitaires de chaînes de caractères, non.

Pourquoi imposer un seul score de mutation à l'ensemble de votre codebase est une erreur, et comment définir des seuils par module qui correspondent au risque réel.

Imposer un seul score de mutation à l'ensemble de votre codebase est un excellent moyen de faire détester les tests à votre équipe. Lancez PIT ou Stryker sur…