Soixante conteneurs sur un seul serveur
Une seule machine bare-metal fait tourner des dizaines à des centaines de conteneurs Hoody. La déduplication KSM et BTRFS rend le coût marginal quasi nul.
Une entrée cron managée se déclenche @hourly. Elle POST un snapshot nommé auto-h$(date +%H). Les noms tournent : auto-h00 jusqu'à auto-h23. Après une journée, chaque nouveau snapshot écrase celui d'hier à la même heure — et vous avez toujours les 24 dernières heures de state, retenues à granularité horaire.
{ "name": "hourly-2026-05-04-13", "alias": "auto-h13", "created_at": "13:00:04Z", "size": 1331691520 }
l'ascenseur s'arrête à 24 étages — l'heure d'hier est écrasée par celle d'aujourd'hui
Une entrée managée @hourly curl l'URL des snapshots avec l'alias auto-h$(date +%H). L'alias entre en collision intentionnellement : à 13h demain, le auto-h13 d'aujourd'hui est remplacé. Vingt-quatre slots nommés, rotation automatique.
# Hoody Cron — planifie un snapshot horaire. curl -X POST \ cron.containers.hoody.com/users/root/entries \ -H "Content-Type: application/json" \ -d '{ "schedule": "@hourly", "command": "curl -X POST $SNAP_URL -d '{\"alias\":\"auto-h$(date +%H)\"}'", "comment": "rolling 24h snapshot" }'
# À 13:00 le cron s'exécute — voici la requête envoyée : curl -X POST \ api.hoody.com/api/v1/containers/$ID/snapshots \ -H "Authorization: Bearer $TOKEN" \ -d '{"alias": "auto-h13"}' # Réponse : → 200 OK · hourly-2026-05-04-13 created in 6s
Il n'y a pas de policy de rétention et pas de janitor — l'alias auto-h13 est réutilisé toutes les 24 heures, et c'est ce qui fait tourner la fenêtre. L'API Hoody Snapshots accepte un champ alias optionnel sur POST /api/v1/containers/[id]/snapshots ; le réutiliser, c'est tout le mécanisme.
Quatre étapes, toutes dans un seul curl. Du tick cron au snapshot en quelques secondes.
Chaque tick prend des secondes. L'alias est la primitive de rotation — en réutilisant le même nom 24 heures plus tard, le snapshot à cet étage est remplacé sur place.
Ce que vous perdez en supprimant le runbook backup, vous le récupérez sous une forme moins chère et plus honnête.
Les snapshots sont sans state sur disque ; ils ne brûlent ni CPU ni RAM en restant là. vous payez pour le stockage de 24 copies du diff du conteneur, pas pour un service de backup qui tourne tout le temps.
Quand quelque chose foire à 14:14, vous restaurez auto-h13 et vous voilà à 13:00 — une minute avant le démarrage du problème. L'heure est assez fine pour le rollback prod et assez large pour ne pas noyer le ledger.
Pas de lifecycle policy à écrire, pas de bucket S3 à provisionner, pas de revue annuelle de runbook. La convention de nommage est la règle de rétention. L'ensemble fixe d'alias est l'audit.
Vingt-quatre snapshots d'un conteneur typique, retenus à granularité horaire. Les chiffres viennent de l'API Hoody Snapshots et d'un diff représentatif de 1.2 GB par heure.
Chaque heure est un slot nommé. Après le premier jour, chaque nouveau snapshot écrase celui d'hier à la même heure — le compte ne grossit jamais.
Une entrée managée, schedule @hourly, commande qui curl l'URL des snapshots avec l'alias auto-h$(date +%H). C'est toute la rotation.
Pas de job de prune, pas de policy expires_at, pas de config lifecycle. La collision d'alias fait tourner la fenêtre sur place ; rien n'accumule.
Selon l'API Hoody Conteneur Snapshots : POST /api/v1/containers/[id]/snapshots accepte un alias optionnel (max 100 caractères) et une expiration optionnelle en jours. Cette page suppose le pricing snapshot par défaut des conteneurs et un diff représentatif de ~1.2 GB par capture horaire ; vos tailles varieront selon la charge.
votre machine à remonter le temps a 24 étages et l'ascenseur est un curl.
Les outils standards qu'on attrape pour de la récupération horaire à un point dans le temps. Chacun vous facture un service ou une policy de rétention. Le modèle cron + alias ne vous facture ni l'un ni l'autre.
Supprime le runbook de backup. Planifie le @hourly. Les 24 dernières heures de votre conteneur existent comme 24 étages nommés — et l'ascenseur est un seul curl.