-
Le canal d'alertes que personne ne lisait, et le catalogue qui l'a réparé
Chaque moniteur réveillait quelqu'un, donc aucun ne voulait plus rien dire. La staging sonnait la nuit, un tenant tranquille pouvait afficher 100 pour cent d'erreurs sur une seule requête, et l'équipe avait appris à balayer la notification. Voici le découpage P1 et P2 sur lequel on s'est arrêté pour une stack ECS, et les deux mécaniques qui ont arrêté le flapping.
- prod-opsdevops
Les utilisateurs m'écrivaient pour des 500 avant que je les voie
Chaque erreur en production était loguée avec console.error puis mourait dans un fichier de log que personne ne lisait. Les clients étaient devenus mon suivi d'erreurs. Voici comment j'ai branché un suivi compatible Sentry dans Express et React, avec sourcemaps, regroupement, et une seule règle d'alerte qui se déclenche vraiment.
-
Je grepais du JSON en SSH pendant que la production était en panne
Pendant un incident, ma stack d'observabilité était une session SSH, docker logs et grep. Voici le montage à budget zéro qui l'a remplacée sur le même VPS : Uptime Kuma sur les healthchecks que j'avais déjà, Dozzle pour les logs en direct, et l'alerte qui arrive maintenant sur mon téléphone.
- prod-opsdevops
Le push du vendredi qui m'a appris à interdire le commit sur main
Un git push à 18h un vendredi a déployé direct en production, sans test, et a fait tomber l'API. Rien dans le pipeline ne pouvait l'empêcher, parce qu'il n'y avait pas de pipeline. Voici celui que j'ai construit : main protégée, une CI qui lance les tests, des images construites hors du serveur.
-
Des backups de base qui restaurent vraiment : le pgdata que j'ai perdu
J'ai supprimé un répertoire de données Postgres qui vivait dans un bind mount, sans rien derrière. Mon plan de backup, c'était l'espoir. Voici le setup de backup pas cher sur un seul VPS que j'aurais dû avoir, y compris l'étape que tout le monde saute.
-
Le CPU ment : autoscaler un service mono-thread
Un service ramait sous charge, mais l'autoscaling ne se déclenchait jamais parce que le CPU restait à 30 pour cent. Une app mono-thread sur une task multi-cœur sature un cœur et paraît à peine occupée. Pourquoi, et comment corriger.
-
Docker n'a jamais redémarré ma base : le prix de restart: no
Un conteneur est mort la nuit et rien ne l'a relancé, parce que chaque service était en restart: no. Les healthchecks que j'avais ne pouvaient pas aider, et la raison surprend la plupart des gens.
-
Les tests étaient déjà écrits. Rien ne les a jamais lancés.
Une régression est arrivée en production, et le test qui l'aurait attrapée était déjà dans le repo. Il n'y avait aucun script de test, et le seul workflow CI ne se déclenchait jamais sur un push. Comment j'ai câblé tout ça.
-
Docker a contourné mon pare-feu : le port de la base était ouvert sur internet
Mon pare-feu bloquait le port 5432. Il était joignable depuis internet quand même, parce que Docker écrit ses propres règles iptables que vos règles INPUT et ufw ne voient jamais. Pourquoi, et comment vraiment le fermer.
-
Le docker build qui a rempli le disque et fait tomber la production
La production est tombée sans changement de code. La cause : un docker compose build qui orphelinait une nouvelle image <none> à chaque déploiement jusqu'à remplir le disque. Ce qui l'a vraiment vidé, et le vrai correctif.
-
Faire tourner un SaaS sur un seul VPS avec Docker Compose : l'audit honnête
Tout le produit tourne sur un seul VPS derrière un docker-compose.yml. Voici pourquoi c'était le bon choix au lancement, et la carte honnête de chaque point de défaillance unique qu'il cache.
-
Cloudflare sous le capot : comment ça marche et comment les attaquants contournent la protection
Ce qui se passe vraiment quand une requête touche un site protégé par Cloudflare, comment Turnstile distingue les bots des humains, et les techniques utilisées pour trouver le serveur d'origine derrière le proxy.
- localhostnginxhttpsdevopsfullstackdx
Partager des cookies entre sous-domaines en local
Un setup local identique à la prod où les cookies sont partagés entre sous-domaines via du vrai HTTPS, sans changer une ligne d'appli. L'astuce vit dans /etc/hosts + nginx.
- architecturedevops
L'architecture compte plus que le code propre
J'ai passé 2 semaines à rendre mes fonctions serverless propres. L'architecture était mauvaise. J'ai tout réécrit en un seul serveur Express et c'était plus simple.
- devopsarchitecture
Le débogage compte plus que les fonctionnalités
Mon blog renvoyait 404 sur chaque page à 2 h du matin. Zéro visibilité sur la cause. Voici l'infrastructure de débogage que j'aurais aimé mettre en place dès le départ.
- devopsaws
Tester Lambda + EventBridge en local
Comment tester des fonctions AWS Lambda et des règles EventBridge en local avec SAM, LocalStack et docker-compose. Aucun déploiement cloud nécessaire.
-
Infrastructure générée par IA : un cauchemar de maintenance
J'ai demandé à une IA de générer du Terraform pour un setup AWS standard. Elle a produit 2 400 lignes qui marchaient parfaitement. Voici pourquoi je ne le déploierais jamais en production.