- Garage es un almacenamiento de objetos compatible con S3 que puede funcionar de forma estable incluso fuera de entornos de centros de datos
- Se ofrece como un binario sin dependencias único, por lo que puede ejecutarse fácilmente en cualquier distribución de Linux
- Los datos se replican en 3 zonas (zones) para garantizar alta redundancia y tolerancia a fallos
- Implementa la API de Amazon S3, por lo que es compatible con diversas aplicaciones como Nextcloud, Matrix y Mastodon
- Con bajos requisitos de hardware y un diseño basado en investigación pública, amplía la accesibilidad a los sistemas distribuidos
Descripción general
- Garage es un almacenamiento de objetos S3 que puede operarse de forma estable incluso fuera de centros de datos, y puede ejecutarse a través de varios centros de datos mediante Internet
- Puede usarse para diversos fines como hosting de sitios web, almacenamiento de medios y destino de respaldos
Objetivos de diseño
- Es un sistema desarrollado con énfasis en la ligereza y la eficiencia
- Se distribuye como un único ejecutable sin dependencias, por lo que funciona en cualquier distribución de Linux
- Está diseñado para ser amigable con administradores de sistemas, con el objetivo de lograr despliegue rápido y operación segura
- Está diseñado para poder desplegarse en cualquier entorno, por lo que puede operar entre varios centros de datos en Internet incluso sin una red troncal dedicada
- Ofrece alta resiliencia para soportar fallas de red, latencia, errores de disco y errores humanos de operadores
Requisitos mínimos
- CPU: x86_64, ARMv7 o ARMv8 de los últimos 10 años
- RAM: 1 GB
- Espacio en disco: mínimo 16 GB
- Red: latencia de hasta 200 ms y ancho de banda de al menos 50 Mbps
- El soporte para hardware heterogéneo permite construir clústeres usando equipos de segunda mano
Resiliencia de datos y compatibilidad
- Cada fragmento de datos (chunk) se almacena replicado en 3 zonas
- Implementa la API de Amazon S3, por lo que es compatible de inmediato con aplicaciones existentes
- Ejemplos compatibles: Nextcloud, Matrix, Cyberduck, Mastodon, Rclone, PeerTube
Base técnica
- Garage está diseñado con base en avances recientes en investigación de sistemas distribuidos
- El almacenamiento clave-valor Dynamo de Amazon
- Conflict-Free Replicated Data Types (CRDTs)
- El balanceador de carga de red por software Maglev
Patrocinio y financiamiento
- El proyecto Garage ha recibido financiamiento público en varias ocasiones
- 2021–2022: NGI POINTER – apoyo para 3 empleados de tiempo completo durante 1 año
- 2023–2024: NLnet / NGI0 Entrust – apoyo para 1 empleado de tiempo completo durante 1 año
- 2025: NLnet / NGI0 Commons Fund – apoyo para 1.5 empleados de tiempo completo durante 1 año
- Recibe apoyo financiero del programa europeo de investigación e innovación Horizon 2021 y del programa Next Generation Internet
- Es posible participar mediante patrocinio adicional o contratos de apoyo (contacto: garagehq@deuxfleurs.fr)
1 comentarios
Comentarios en Hacker News
Recientemente validé Garage de forma bastante amplia en pruebas internas
El despliegue fue un poco más simple que MinIO, pero quedó por detrás en rendimiento de alta velocidad
En un entorno con NIC de 25G, MinIO alcanzó entre 20 y 25 Gbps, mientras que Garage quedó limitado a unos 5 Gbps
Me da la impresión de que Garage no apunta a este tipo de casos de uso de alto rendimiento
La próxima vez también revisaré RustFS y Ceph/Rook
Por la dirección reciente de MinIO, parece que al final habrá que buscar otra alternativa
Su filosofía es: “el alto rendimiento impone restricciones al diseño y la infraestructura, así que buscamos rendimiento mediante minimalismo”
(documento de Design Goals)
Aun así, es interesante dónde aparece el cuello de botella de rendimiento. Tal vez tenga menos procesamiento en paralelo que MinIO
La complejidad es muy alta, y si no lo entiendes bien, cuando el clúster se rompe es difícil recuperarlo
Parece un proyecto interesante para desarrollo local
Pero al ver la guía de configuración para producción, da un poco de miedo
Como Garage no hace su propia verificación de checksum e integridad al guardar metadatos, recomienda sistemas de archivos como BTRFS o ZFS
El motor LMDB por defecto tiene riesgo de corrupción de datos tras un cierre anormal, así que hacen falta snapshots periódicos
SQLite también es posible, pero me sorprendió que la base de datos predeterminada sea vulnerable a cortes de energía
Lo integrarían en Garage de inmediato
Me pesó un poco que el requisito mínimo de Garage sea 1 GB de RAM
Recomiendan usar unidades NVMe con PLP (protección ante pérdida de energía) o un UPS
Desde el caso de MinIO, estoy viendo un aumento fuerte en la adopción de Garage
Fue útil la comparación de benchmarks de Repoflow
RustFS también me pareció interesante, pero lo descarté por motivos no técnicos
Si alguien tiene consejos para reemplazar MinIO, me interesa escucharlos
Ver enlace de GitHub
También me da curiosidad compararlo con Ceph S3 Gateway
El sitio oficial de Deuxfleurs tiene el diseño más hermoso que he visto hasta ahora
Estoy usando Garage para desarrollo y pruebas locales
Con s5cmd puedo sembrar 15 GB y más de 60 mil objetos en menos de 60 segundos
Con Docker, clonar un entorno de staging que incluye API, DB, caché y contenedor de objetos toma menos de 2 minutos
La configuración es muy simple y está funcionando de forma estable
Antes usaba LocalStack S3, pero el problema era la falta de persistencia, y MinIO OSS también dejó de recibir mantenimiento
También evalué SeaweedFS y RustFS, pero Garage fue lo más sencillo
Garage fue muy impresionante en el código de pruebas y en los benchmarks
Es fácil de desplegar como un ejecutable único y la documentación está bien hecha
Pero la falta de soporte para object tags fue una gran decepción
En el mundo de las API de nube, las etiquetas son una función básica, así que ojalá eso mejore
Me gusta mucho Garage
Más que una simple alternativa a S3, también sirve bien en una arquitectura hiperconvergente
Está muy bien eso de leer los datos primero desde la máquina local y usar la red solo cuando hace falta
El hecho de que no tenga erasure coding implica una pérdida importante en tolerancia a fallos y eficiencia
La principal inquietud era cómo se recupera ante una falla de hardware
Garage fue útil en scripts de ingeniería de datos
Como la mayoría de las herramientas soportan integración con S3, es fácil volcar datos en Garage y luego escalar a la nube más adelante
Probé Garage recientemente
Después de subir unos 300 documentos (1 GB) e intentar borrarlos, el servicio S3 se cayó dentro del contenedor y tuve que reiniciarlo
Es un proyecto genial, pero en mi experiencia todavía le falta confiabilidad