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.
La plupart des pipelines CI gaspillent de l'argent en trafic de cache — envoi des artefacts vers S3, récupération au job suivant, paiement du stockage, paiement du trafic sortant, nouveau paiement quand les runners changent de région. Sur Hoody, le cache est un dossier sur le même serveur bare-metal qui exécute votre conteneur de build. Envoyez une archive tar avec curl. Récupérez-la avec curl. Les octets ne quittent jamais la machine.
les mêmes 47.2 GB de cache · deux factures différentes
Tout le cache CI tient en trois commandes et un job de nettoyage. PUT pour écrire un tarball. GET pour le lire. find -atime pour purger. Pas de quatrième pièce — pas de policy IAM, pas de lifecycle de bucket, pas de cérémonie d'URL signée.
Après l'install, le runner streame node_modules à travers tar | zstd dans un seul PUT vers /files/cache. Hoody écrit le body sur disque comme un blob binaire unique. Pas de multipart, pas de part-uploader, pas de SDK.
La première étape du job suivant est un curl. Le body sort du NVMe à pleine vitesse parce que le cache vit sur la même machine physique que le runner — pas de saut d'egress, pas de pull cross-AZ, pas d'edge CloudFront.
Hoody Cron tire une fois par nuit. find /files/cache -atime +30 -delete jette tout ce qu'aucun job n'a lu depuis un mois. Pas de policy de rétention, pas de tier Glacier, pas de JSON lifecycle à maintenir.
PUT écrit. GET lit. find purge. L'API Hoody Files est le serveur de cache, le moteur de nettoyage et le log d'audit — tout derrière la même URL /files/[path].
Pousser le cache vers un fournisseur séparé avait du sens quand le storage était rare. Sur un conteneur bare-metal, ça ajoute juste un fournisseur.
S3 facture trois compteurs : storage, egress, par requête. Hoody Files est inclus dans le prix forfaitaire du serveur — le disque que vous louez déjà est le disque où le cache se pose. Les octets ne traversent jamais une frontière de facturation.
Les lectures sortent de la même machine physique qui fait tourner le build. Aucun endpoint S3 à résoudre, aucun handshake TLS vers une région, aucun rate limit sur le débit par préfixe. Une cible Rust de 1.4 GB se décompresse en quelques secondes.
votre runner et votre cache vivent sur la même instance, facturés sur la même facture, débogués avec la même session SSH. Quand vous éteignez le conteneur, le cache c'est l'image disque — de retour en ligne dès que vous le boot.
Un footprint CI mid-size typique déplace environ 1.4 TB de trafic de cache par mois. Voici la ligne qu'il construit sur AWS ; sur Hoody le cache tourne dans le serveur forfaitaire que vous payez déjà.
Quand le cache vit sur la box qui fait tourner le build, le compteur que S3 faisait tourner n'a rien à lire. La ligne ne bouge pas parce qu'il n'y a aucune transaction à facturer.
Hoody Files n'est pas un wrapper léger — c'est un vrai backend persistant avec hashing, historique, range reads et journal d'audit. Le cache CI utilise une fine tranche de ce qui est réellement exposé.
PUT pour écrire, GET pour lire, HEAD pour ETag et Content-Length, ?hash pour SHA256, ?stat pour les métadonnées. Le cache est la même famille d'endpoints qui alimente les logs, les builds et les artefacts partagés.
Chaque écriture passe par le journal de fichiers. Pull le cache d'hier par timestamp ou par numéro de révision par chemin — déboguer un flake n'exige plus un outil de snapshot séparé.
Si le cache doit vraiment vivre dans S3, B2 ou un dossier Drive, montez-le comme backend et gardez la même URL /files/[path]. Le code du runner ne change jamais — le cache déménage, c'est tout.
Les chiffres reflètent la surface publique de l'API Hoody Files — `GET/PUT/HEAD/PATCH /api/v1/files/[path]`, les query parameters `?hash`/`?at`/`?revision`/`?history` query parameters and the dedicated `GET /api/v1/files/stat/[path]`, et les endpoints du journal de fichiers sous `/api/v1/journal`.
votre cache CI cesse d'être un fournisseur séparé. C'est un dossier sur la box que vous louez déjà.
Les backends de cache standard vous facturent chacun une relation fournisseur, une facture d'egress, ou un coût par build. /files ne vous facture rien de tout ça.
Arrête de louer un cache à un second cloud. Écris le tarball sur le disque que vous payez déjà, et curl-le pour le récupérer.