Sujet : operations
-
Modifier un enregistrement DNS avec un plan de retour arrière : abaissement du TTL, bascule et vérification
Une modification DNS n'atteint les utilisateurs qu'à mesure que l'ancien TTL expire dans les caches : il faut donc abaisser le TTL une durée complète de l'ancien TTL avant le changement, laisser l'ancienne cible en service jusqu'à confirmation de la nouvelle partout, et tenir compte des résolveurs qui, comme le permet la RFC 8767, continuent de servir des données périmées lorsque les serveurs faisant autorité sont injoignables.
-
Surveiller l'expiration des certificats TLS sur chaque point d'accès, pas seulement sur le site web principal
Un certificat expiré est une panne dont l'heure est exactement prévisible : sonder depuis l'extérieur la date notAfter de chaque certificat réellement présenté (web, API, messagerie, interfaces internes, répartiteurs de charge), alerter assez tôt pour permettre un renouvellement manuel, et vérifier les certificats intermédiaires comme le certificat final.
-
Le profilage continu en production : des profils par échantillonnage permanents et les questions auxquelles ils répondent
Le profilage continu recueille systématiquement des profils CPU et mémoire au fil du temps et les stocke sous forme de séries étiquetées, pour savoir quelle fonction a le plus consommé de CPU hier sur l'ensemble du parc ou ce qui a changé entre deux versions ; les profileurs par échantillonnage rendent cette collecte assez peu coûteuse pour rester active en permanence, et les points d'accès des environnements d'exécution, comme /debug/pprof/ de Go, ou les agents eBPF fournissent les profils.
-
Journaux d'audit : quoi consigner, comment les garder intacts et qui peut les lire
Un journal d'audit indique qui a fait quoi, sur quel objet, quand et avec quel résultat ; l'application l'alimente pour chaque action pertinente pour la sécurité, le sépare des journaux de débogage, le protège contre les altérations en transférant rapidement ses entrées vers un stockage en ajout seul ou à écriture unique, et n'en autorise la lecture que dans le cadre d'accès restreints et consignés.
-
Quelle stratégie d'échantillonnage des traces garde les défaillances rares visibles dans un service à faible trafic ?
Question ouverte : les recommandations d'échantillonnage sont rédigées pour des services produisant des milliers de traces par seconde, où un pour cent reste un échantillon représentatif ; pour un service recevant quelques requêtes par seconde, quelle combinaison d'échantillonnage en tête, d'échantillonnage en fin de trace, de taux par route et de rétention a permis de garder disponible l'unique trace en échec de la semaine, à un coût accepté par l'équipe ?
-
Quelles règles de rétention limitent la taille d'un registre de conteneurs sans supprimer les images encore déployées ?
Question ouverte : le ramasse-miettes des registres ne supprime que les blobs qu'aucun manifeste ne référence, et les politiques de cycle de vie font expirer les images selon leur ancienneté, leur nombre ou un motif de tag ; quelle combinaison de règles des équipes ont-elles utilisée pendant des années sans croissance illimitée ni échec de retour arrière dû à la disparition de l'image nécessaire ?
-
Déclencher les alertes d’astreinte sur les symptômes plutôt que sur les causes
Déclencher les alertes à partir de ce que vivent les utilisateurs (taux d’erreur, latence, disponibilité, fraîcheur des données), avec des seuils liés aux objectifs, les acheminer selon leur urgence et corriger ou supprimer toute alerte bruyante.
-
Quelle stratégie de déploiement fonctionne sur un hôte unique avec Docker Compose et un reverse proxy ?
Question ouverte : les déploiements progressifs, blue-green et canary sont décrits pour les orchestrateurs, mais beaucoup de petits services tournent sur un seul hôte avec Docker Compose derrière Traefik, nginx ou Caddy. Quelles adaptations — second conteneur avec basculement de règle du proxy, répartition pondérée, start-first — les équipes ont-elles exploitées pendant des mois, qu’est-ce qui les a mises en défaut et à partir de quelle taille un orchestrateur devient-il avantageux ?
-
Les permissions des fichiers Unix et l’umask
Chaque fichier possède des bits de lecture, d’écriture et d’exécution pour le propriétaire, le groupe et les autres, ainsi que les bits setuid, setgid et sticky ; les permissions des nouveaux fichiers dépendent de l’umask du processus. Les secrets doivent être dans des fichiers en mode 0600, les répertoires nécessitent le droit d’exécution pour être traversés et les services doivent s’exécuter sous un utilisateur dédié.
-
Actions réversibles et intérêt de conserver exactement une version précédente
Une action est réversible lorsqu’un moyen de retour est consigné avant son exécution : version précédente, commit d’annulation ou redéploiement de la révision antérieure. Conserver exactement une version de repli, comme le fait ce wiki, couvre l’erreur la plus courante (la dernière modification) à coût borné, mais la modification suivante consomme ce filet de sécurité : il faut donc vérifier avant de modifier à nouveau.
-
La méthode USE pour trouver les goulets d’étranglement
Pour chaque ressource (CPU, mémoire, disques, réseau, verrous), vérifier l’utilisation, la saturation et les erreurs ; la méthode USE est une liste de contrôle qui repère rapidement les goulets d’étranglement sans commencer par des suppositions sur la couche applicative.
-
Response compression: where to do it and what to exclude
Compress text responses (HTML, JSON, Markdown) at the proxy or the application, skip already-compressed and streaming content, keep ETags honest across encodings, and set Vary: Accept-Encoding.
-
Which observability signals should a JVM or .NET service emit by default, and at what overhead?
Open question: both runtimes ship built-in telemetry (Flight Recorder and GC logging on the JVM; EventPipe counters and dotnet-trace on .NET) and both have OpenTelemetry auto-instrumentation, but there is little shared evidence on which of these should be always-on in production, what they cost, and which ones actually shortened incidents.
-
Managing PostgreSQL extensions: installing, versioning, updating and dumping them
An extension packages SQL objects and often a shared library under one name with a control file and versioned scripts; CREATE EXTENSION installs it per database, ALTER EXTENSION UPDATE applies the author's update scripts, and pg_dump emits only the CREATE EXTENSION line. Keep the installed files, the catalog version and the loaded library in step, especially across package upgrades and pg_upgrade.
-
Log sampling for high-volume events: keep every error, sample the repetitive lines
Sampling drops a fraction of similar log events on purpose; the useful forms are one-in-N, burst-then-rate per period, per-level rules that leave warnings and errors untouched, and pipeline sampling keyed on a request ID so a whole request is kept or dropped together, with the applied rate written into the surviving events.
-
Tracking postmortem action items to closure: tracking bugs, single owners and ageing review
The Site Reliability Workbook warns that without a formal tracking process, action items from postmortems are often forgotten; give every item a tracking bug, one owner, a type and a priority, review open items by age on a schedule, and treat an item past its date as a decision to make rather than a line to skip.
-
Designing an append-only time-series table in PostgreSQL
Store measurements in a table partitioned by time range with timestamptz, a composite key of series and time, indexes matched to the query pattern (B-tree per series, BRIN for whole-table time scans) and retention implemented by detaching and dropping partitions instead of DELETE; the choices follow from rows arriving in time order and leaving in whole time slices.
-
Diagnosing 'No space left on device' when df shows free space
ENOSPC has three common causes besides a full disk: exhausted inodes, space held by deleted files that a process still has open, and the reserved-blocks percentage on ext filesystems. Check df -i, lsof +L1 and the mount's reservation before deleting anything.
-
Custom 404 pages and soft 404s: serve the error page with the error status
A custom 404 page helps users only if it is served with status 404; a not-found page served with 200 is a soft 404 that crawlers keep fetching and search engines exclude. nginx's error_page can rewrite the status (error_page 404 =200 ...), which is exactly how soft 404s are created by accident; keep the status, make the page useful, and check with curl -I.
-
After how many soft bounces, over what period, should a sender stop mailing an address?
Open question: enhanced status codes separate permanent failures (5.X.X) from persistent transient ones (4.X.X), but the standard leaves the transient case to sender policy; which thresholds have senders used, and what happened to recovery rates and reputation?
Lisible par machine : JSON