Hafif Rust tabanlı Garage S3, kurumsal MinIO ve milyarlarca küçük dosya ustası SeaweedFS motorlarını RAM tüketimi, disk çarpanı, replikasyon gecikmesi ve AWS S3 maliyet tasarrufu bazında karşılaştırın.
AWS S3 Egress Vergisi: $180 USD
Garage S3 düşük bellek ve CRDT replikasyonu ile öne çıkar
Gereken Ham Alan: 6 TB (2x kopya)
| Depolama Çözümü | Min. RAM (Node) | Lisans / Model | Aylık Donanım Maliyeti | Yıllık TCO | Küçük Dosya IOPS |
|---|---|---|---|---|---|
| Garage S3 (Rust Dağıtık) | 1 GB RAM (Rust) | AGPLv3 (Topluluk Odaklı) | ₺1.673 | ₺20.079 | Yüksek (%88) |
| SeaweedFS (O(1) Blob Engine) | 2 GB RAM (Go) | Apache 2.0 (Permissif) | ₺1.964 | ₺23.571 | Lider (%98 O(1)) |
| MinIO (High-Performance S3) | 4 GB RAM (Ağır) | AGPLv3 (Ticari Kısıtlamalar) | ₺3.347 | ₺40.158 | Orta (%72) |
| AWS S3 Standard (Bulut Yönetilen) | Yönetilen Sunucusuz | Ticari Tüketim Faturası | ₺11.640 / ay | ₺139.680 | Yüksek (Egress Hariç) |
# /etc/garage/garage.toml # Garage S3 Minimalist, Yuksek Guvenlikli Yapilandirma metadata_dir = "/var/lib/garage/meta" data_dir = "/var/lib/garage/data" db_engine = "sqlite" replication_factor = 2 compression_level = 2 rpc_bind_addr = "[::]:3901" rpc_public_addr = "127.0.0.1:3901" rpc_secret = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" [s3_api] api_bind_addr = "[::]:3900" s3_region = "garage" root_domain = ".s3.garage.local" [s3_web] bind_addr = "[::]:3902" root_domain = ".web.garage.local"
version: "3.8"
services:
garage-s3:
image: dxflrs/garage:v1.0.1
container_name: garage_s3
restart: unless-stopped
network_mode: "host"
volumes:
- /etc/garage/garage.toml:/etc/garage.toml:ro
- /var/lib/garage/meta:/var/lib/garage/meta
- /var/lib/garage/data:/var/lib/garage/data
environment:
- RUST_LOG=garage=info
deploy:
resources:
limits:
memory: 512Mimport { S3Client, PutObjectCommand, GetObjectCommand } from "@aws-sdk/client-s3";
// Garage S3 veya SeaweedFS Baglanti Yapilandirmasi
export const s3Client = new S3Client({
endpoint: "http://127.0.0.1:3900", // Garage S3 API Portu
region: "garage",
credentials: {
accessKeyId: process.env.GARAGE_ACCESS_KEY || "GKxxxxxxxx",
secretAccessKey: process.env.GARAGE_SECRET_KEY || "xxxxxxxx",
},
forcePathStyle: true, // Self-hosted S3 icin PATH-STYLE zorunludur!
});AWS S3 ve Google Cloud Storage gibi genel bulut nesne depolama servisleri yüksek fatura ve egress (çıkış) maliyetleriyle büyüyen projeler için ciddi bir yük haline gelebilmektedir. Ucuz Hetzner, OVH veya Netcup VDS sunucularında kendi S3 uyumlu depolamanızı barındırmak muazzam tasarruf sağlar. Ancak motor seçimi donanım gereksinimlerini doğrudan belirler:
Deuxfleurs tarafından geliştirilen Garage, asimetrik ve heterojen VDS kümeleri için tasarlanmıştır. Raft yerine CRDT (Conflict-free Replicated Data Types) tabanlı nihai tutarlılık (eventual consistency) kullanır. Düşük gecikmeli yerel ağ zorunluluğu yoktur; internet üzerinden farklı veri merkezlerindeki 3 ucuz VDS ile coğrafi yedekli bir küme kurulabilir. RAM tüketimi 100 MB'ın altındadır.
MinIO, S3 API uyumluluğunda altın standarttır. Güçlü tutarlılık (strong consistency) ve gelişmiş KMS, IAM entegrasyonları sunar. Ancak düğüm başına en az 4 - 8 GB RAM talep eder ve son yıllarda AGPLv3 lisansından ticari kısıtlamalara doğru geçişi nedeniyle açık kaynak topluluğunda hafif alternatif arayışını tetiklemiştir.
Eğer sisteminiz kullanıcı profil fotoğrafları, avatar yüklemeleri, PDF faturalar gibi milyonlarca küçük dosyabarındırıyorsa, SeaweedFS rakipsizdir. Facebook'un Haystack mimarisini uygulayarak binlerce küçük dosyayı tek bir büyük volume dosyasında birleştirir ve dosya başına yalnızca tek bir disk araması (O(1) seek) yapar.
Öz barındırılan S3 sistemlerinde DNS'te her kova (bucket) için joker alt alan adı (örn: bucket.s3.domain.com) tanımlamak yerine yol tabanlı erişim (s3.domain.com/bucket) tercih edilir. Node.js AWS SDK v3 kullanırken mutlaka forcePathStyle: true bayrağını etkinleştirmeniz gerekir.