
Sesenta contenedores en un servidor
Un servidor bare-metal ejecuta decenas a cientos de contenedores Hoody. KSM y dedup BTRFS hacen que el costo marginal sea casi cero.
La mayoría de pipelines de CI queman dinero en tráfico de caché — pushean artefactos a S3, los descargan en el siguiente job, pagan almacenamiento, pagan egress, pagan otra vez cuando los runners cambian de región. En Hoody la caché es una carpeta en el mismo bare metal que ejecuta tu contenedor de build. Pushea un tarball con curl. Descárgalo con curl. Los bytes nunca salen de la máquina.
los mismos 47,2 GB de caché · dos facturas distintas
Toda la caché de CI son tres comandos y un job de limpieza. PUT para escribir un tarball. GET para leerlo. find -atime para podar. No hay una cuarta pieza — sin política IAM, sin lifecycle de bucket, sin ceremonia de URL firmada.
Tras la instalación, el runner pasa node_modules por tar | zstd a un único PUT contra /files/cache. Hoody escribe el cuerpo en disco como un único blob binario. Sin multipart, sin part-uploader, sin SDK.
El primer paso del siguiente job es un solo curl. El cuerpo sale del NVMe a tasa de línea porque la caché vive en la misma máquina física que el runner — sin salto de egress, sin descarga entre AZ, sin edge de CloudFront.
Hoody Cron dispara una vez por noche. find /files/cache -atime +30 -delete tira cualquier cosa que ningún job haya leído en un mes. Sin política de retención, sin nivel Glacier, sin JSON de lifecycle que mantener.
PUT escribe. GET lee. find poda. La API de Hoody Files es el servidor de caché, el motor de limpieza y el log de auditoría — todo detrás de la misma URL /files/[path].
Empujar la caché a un proveedor aparte tenía sentido cuando el almacenamiento era escaso. En un contenedor bare metal, solo añade un proveedor.
S3 cobra tres contadores: almacenamiento, egress y por petición. Hoody Files está incluido con el contenedor — el disco que ya pagas es el disco donde se asienta la caché. Los bytes nunca cruzan una frontera de facturación.
Las lecturas salen de la misma máquina física que ejecuta el build. No hay endpoint de S3 que resolver, sin handshake TLS hacia una región, sin rate limit en el throughput por prefijo. Un target de Rust de 1,4 GB se desempaqueta en segundos.
Tu runner y tu caché viven en la misma instancia, facturados en la misma factura, depurados con la misma sesión SSH. Cuando apagas el contenedor, la caché es la imagen del disco — vuelve online en cuanto lo arrancas.
Una huella de CI mediana típica mueve unos 1,4 TB de tráfico de caché al mes. Aquí está la línea que construye en AWS, y la línea que construye en Hoody.
Cuando la caché vive en la máquina que ejecuta el build, el contador que S3 ejecutaba no tiene nada que leer. La línea no se mueve porque no hay transacción que facturar.
Hoody Files no es un wrapper fino — es un backend persistente real con hashing, historial, lecturas por rango y un journal de auditoría. La caché de CI usa una rebanada fina de lo que está realmente expuesto.
PUT para escribir, GET para leer, HEAD para ETag y Content-Length, ?hash para SHA256, ?stat para metadatos. La caché es la misma familia de endpoints que alimenta logs, builds y artefactos compartidos.
Cada escritura pasa por el journal de archivos. Descarga la caché de ayer por timestamp o por número de revisión por path — depurar un flake deja de requerir una herramienta de snapshot aparte.
Si la caché de verdad necesita vivir en S3, B2 o una carpeta de Drive, móntala como backend y mantén la misma URL /files/[path]. El código del runner nunca cambia — la caché solo se mueve.
Los números reflejan la superficie publicada de la API de Hoody Files — `GET/PUT/HEAD/PATCH /api/v1/files/[path]`, los parámetros de query `?hash`/`?stat`/`?at`/`?revision`/`?history` y los endpoints del journal de archivos bajo `/api/v1/journal`.
Tu caché de CI deja de ser un proveedor aparte. Es una carpeta en la máquina que ya alquilas.
Los backends de caché estándar a los que sueles recurrir cobran cada uno una relación de proveedor, una factura de egress o una tarifa por build. /files no te cobra nada de eso.
Deja de alquilar una caché en una segunda nube. Escribe el tarball en el disco que ya pagas y descárgalo con curl.