- Garage é um armazenamento de objetos compatível com S3 que pode operar de forma estável mesmo fora de ambientes de datacenter
- Fornecido como um binário único sem dependências, pode ser executado facilmente em qualquer distribuição Linux
- Os dados são replicados em 3 zonas (zones), garantindo alta redundância e tolerância a falhas
- Implementa a Amazon S3 API, sendo compatível com vários aplicativos como Nextcloud, Matrix e Mastodon
- Com baixos requisitos de hardware e um design baseado em pesquisa pública, amplia a acessibilidade a sistemas distribuídos
Visão geral
- Garage é um armazenamento de objetos S3 que pode ser operado de forma confiável mesmo fora de datacenters, podendo ser executado em vários datacenters pela internet
- Pode ser usado para diversos fins, como hospedagem de sites, armazenamento de mídia e destino de backup
Objetivos de design
- Sistema desenvolvido com foco em leveza e eficiência
- Distribuído como um executável único sem dependências, funciona em qualquer distribuição Linux
- Projetado para ser amigável a administradores de sistemas, visando implantação rápida e operação segura
- Projetado para ser implantável em qualquer ambiente, podendo operar entre vários datacenters na internet mesmo sem uma rede backbone dedicada
- Oferece alta resiliência, suportando falhas de rede, latência, erros de disco e falhas operacionais humanas
Requisitos mínimos
- CPU: x86_64, ARMv7 ou ARMv8 dos últimos 10 anos
- RAM: 1GB
- Espaço em disco: mínimo de 16GB
- Rede: latência de até 200ms, largura de banda de pelo menos 50Mbps
- O suporte a hardware heterogêneo permite montar clusters com equipamentos usados
Durabilidade dos dados e compatibilidade
- Cada pedaço de dado (chunk) é armazenado com replicação em 3 zonas
- Implementa a Amazon S3 API, com compatibilidade imediata com aplicativos existentes
- Exemplos compatíveis: Nextcloud, Matrix, Cyberduck, Mastodon, Rclone, PeerTube
Base técnica
- Garage foi projetado com base em resultados recentes de pesquisa em sistemas distribuídos
- O armazenamento chave-valor Dynamo da Amazon
- Conflict-Free Replicated Data Types (CRDTs)
- O balanceador de carga de rede por software Maglev
Patrocínio e financiamento
- O projeto Garage recebeu financiamento público várias vezes
- 2021–2022: NGI POINTER – suporte equivalente a 3 funcionários em tempo integral por 1 ano
- 2023–2024: NLnet / NGI0 Entrust – suporte equivalente a 1 funcionário em tempo integral por 1 ano
- 2025: NLnet / NGI0 Commons Fund – suporte equivalente a 1,5 funcionário em tempo integral por 1 ano
- Recebe apoio financeiro do programa de pesquisa e inovação Horizon 2021 da União Europeia e do programa Next Generation Internet
- Também é possível participar por meio de patrocínio adicional ou contrato de apoio (contato: garagehq@deuxfleurs.fr)
1 comentários
Opiniões no Hacker News
Recentemente validamos o Garage de forma bastante ampla em testes internos
A implantação foi um pouco mais simples que a do MinIO, mas ele ficou atrás em desempenho de alta velocidade
Em um ambiente com NIC de 25G, o MinIO chegou a 20~25Gbps, enquanto o Garage ficou limitado a cerca de 5Gbps
A impressão é que o Garage não tem como objetivo esse tipo de caso de uso de alto desempenho
Na próxima vez, pretendemos avaliar também RustFS e Ceph/Rook
Por causa da direção recente do MinIO, parece que no fim vamos precisar procurar outra alternativa
A filosofia é: “alto desempenho impõe restrições ao design e à infraestrutura, então buscamos desempenho por meio do minimalismo”
(documento de Design Goals)
Ainda assim, é interessante entender onde está o gargalo de desempenho. Pode ser que ele tenha menos paralelismo que o MinIO
A complexidade é muito alta e, se você não entender bem como ele funciona, fica difícil recuperar o cluster quando ele quebra
Parece um projeto interessante para desenvolvimento local
Mas, ao ver o guia de configuração para produção, dá um certo receio
O Garage recomenda sistemas de arquivos como BTRFS ou ZFS porque não faz checksum e verificação de integridade próprios ao armazenar metadados
O mecanismo padrão, LMDB, tem risco de corrupção de dados em desligamentos anormais, então snapshots regulares são necessários
SQLite também é possível, mas foi surpreendente ver que o banco padrão é vulnerável a queda de energia
Disseram que o integrariam ao Garage imediatamente
O requisito mínimo do Garage de 1 GB de RAM pareceu um pouco pesado
Recomenda-se usar SSDs NVMe com PLP (proteção contra perda de energia) ou um UPS
Depois do caso MinIO, estou vendo uma forte adoção do Garage
O post da Repoflow comparando benchmarks foi útil
RustFS também pareceu interessante, mas foi descartado por motivos não técnicos
Se alguém tiver dicas para substituir o MinIO, gostaria de ouvir
Veja o link do GitHub
Também tenho curiosidade sobre uma comparação com o Ceph S3 Gateway
O site oficial da Deuxfleurs tem o design mais bonito que já vi até hoje
Estou usando Garage para desenvolvimento e testes locais
Com s5cmd, dá para semear 15 GB e mais de 60 mil objetos em menos de 60 segundos
Com Docker, a replicação de um ambiente de staging com API, DB, cache e contêineres de objetos fica pronta em menos de 2 minutos
A configuração é muito simples e tem funcionado de forma estável
Antes eu usava o LocalStack S3, mas o problema era a falta de persistência, e o MinIO OSS também deixou de receber manutenção
Avaliei SeaweedFS e RustFS, mas o Garage foi o mais fácil
O Garage foi muito impressionante nos testes e benchmarks
É fácil de implantar como binário único e a documentação é boa
Mas a ausência de suporte a tags de objeto foi uma grande decepção
No mundo das APIs de nuvem, tags são uma funcionalidade básica, então espero que isso melhore
Gosto muito do Garage
Mais do que uma simples alternativa ao S3, ele também é útil em uma arquitetura hiperconvergente
A ideia de ler os dados primeiro da máquina local e só usar a rede quando necessário é muito boa
A ausência de erasure coding representa uma perda grande em tolerância a falhas e eficiência
A principal preocupação era como aconteceria a recuperação em caso de falha de hardware
O Garage foi útil em scripts de engenharia de dados
Como a maioria das ferramentas oferece integração com S3, é fácil despejar dados no Garage e depois expandir para a nuvem
Testei o Garage recentemente
Depois de enviar cerca de 300 documentos (1 GB) e tentar apagá-los, o serviço S3 travou dentro do contêiner e precisou ser reiniciado
É um projeto legal, mas, na minha experiência, ainda falta confiabilidade