Dosya Transferi İçin S3 Uyumlu Depolama Mimarisi
S3 uyumlu depolama üzerinde dosya transferi sistemleri inşa edin. Mimari desenler, sağlayıcı karşılaştırması ve performans optimizasyon teknikleri.
S3 uyumlu depolama, çoğu modern dosya transfer servisinin omurgasıdır; çünkü API evrenseldir, fiyatlandırma rekabetçidir ve mimari disk yönetimi gerektirmeden ölçeklenir. AWS S3 modele öncülük etti ve Cloudflare R2, Backblaze B2, Wasabi, MinIO ve DigitalOcean Spaces gibi kopyaları aynı REST arayüzünü uyguladı. S3 uyumlu depolama üzerine transfer servisi inşa etmek, dayanıklı nesne depolama (AWS durumunda 11 dokuz), büyük dosyalar için çok parçalı yüklemeler ve uygulama sunucularınızı atlayan doğrudan tarayıcıdan depolamaya transferler için önceden imzalanmış URL'ler sağlar. İşte bunu doğru mimarlandırma yöntemi.
S3 API'sinin Neden Kazandığı
S3 API fiilen bir standarttır. Amazon bunu 2006'da yayımladı ve her büyük nesne depolama sağlayıcısı iş yüklerini yakalamak için uyguladı. Bu, AWS SDK for JavaScript (aws-sdk v3) kullanan iyi yazılmış bir transfer servisinin endpoint URL'sini değiştirerek sağlayıcılar arasında geçiş yapabileceği anlamına gelir. minio-js, MinIO'nun mc CLI'si ve rclone gibi açık kaynak istemciler, sağlayıcılar arasında değişmeden çalışır. Bu, mimarlar için esneklik sağlar: güvenilirlik için AWS S3'te başlayın, sıfır çıkış ücretleri için Cloudflare R2'ye taşıyın veya veri yerleşimi için MinIO kendi barındırmanıza geçin — uygulama kodunu yeniden yazmadan.
Transfer İş Yükleri İçin Sağlayıcı Karşılaştırması
| Sağlayıcı | Depolama | Çıkış | Ücretsiz Katman | Dikkat Çeken | |-----------|----------|-------|-----------------|--------------| | AWS S3 Standard | 0,023 USD/GB | 0,09 USD/GB | 5 GB, 15 GB çıkış/ay | 11 dokuz dayanıklılık | | Cloudflare R2 | 0,015 USD/GB | 0 USD | 10 GB, 1M okuma/ay | Sıfır çıkış ücreti | | Backblaze B2 | 0,006 USD/GB | 0,01 USD/GB | 10 GB ücretsiz | Cloudflare ile Bandwidth Alliance | | Wasabi | 0,0069 USD/GB | 0 USD | Yok (yalnızca ücretli) | 90 günlük minimum depolama | | MinIO kendi barındırma | Donanım maliyeti | Kendi bant genişliğiniz | Açık kaynak | AGPL v3, her yerde çalışır | | DigitalOcean Spaces | 5 USD/ay, 250 GB | 1 TB dahil | Yok | Sabit fiyatlı paket |
Dosyaların kısa süre kaldığı ve ardından indirildiği bir transfer servisi için çıkış hâkimdir. Cloudflare R2 ve Backblaze B2 (Bandwidth Alliance aracılığıyla) maliyette kazanır. AWS S3, Intelligent-Tiering ve yaşam döngüsü politikaları gibi özellikler konusunda kazanır.
Büyük Dosyalar İçin Çok Parçalı Yükleme
S3 çok parçalı yükleme API'si, transfer servislerinin 5 GB'ın üzerindeki dosyaları yönetme şeklidir. UploadId almak için InitiateMultipartUpload, her parça için UploadPart (minimum 5 MB, parça başına maksimum 5 GB, toplam 10.000 parça) ve ETag listesiyle CompleteMultipartUpload çalıştırırsınız. Parçalar paralel olarak yüklenebilir. Başarısız parçalar bağımsız olarak yeniden denenir. İstemciler, yüklemelerin tarayıcıdan doğrudan S3'e gitmesi ve uygulama sunucunuzu tamamen atlatması için her parça için önceden imzalanmış URL kullanır. S3'teki maksimum nesne boyutu 5 TB'dır; bu da neredeyse her transfer kullanım senaryosunu kapsar.
Önceden İmzalanmış URL'ler ve Doğrudan Yüklemeler
Önceden imzalanmış URL'ler, sunucularınız baytlara dokunmadan bir istemcinin doğrudan S3'e yüklemesine veya indirmesine olanak tanır. Arka ucunuz HMAC-SHA256 ve AWS kimlik bilgileriyle belirli bir süre (genellikle 1 ila 24 saat) için geçerli bir URL imzalar. İstemci URL'ye karşı PUT veya GET yapar. Bu model ciddi para tasarrufu sağlar: uygulama sunucularınızın 10 GB'lık dosyaları proxy'lemek için bant genişliğine ihtiyacı yoktur ve istemciler depolama endpoint'ine doğrudan eriştiği için gecikme azalır. Kovadaki CORS yapılandırması, menşeinizden tarayıcı yüklemelerine izin verir. Dinlenme halindeki şifreleme için SSE-C (müşteri tarafından sağlanan anahtarlarla sunucu tarafı şifreleme) veya SSE-KMS kullanın.
Transfer Servisleri İçin Mimari Desenler
Tipik S3 destekli transfer mimarisi üç katmana sahiptir. Frontend tarayıcıda çalışır; çok parçalı yüklemeleri başlatır ve parça ilerlemesini takip eder. API arka ucu (küçük bir Node.js, Go veya Python servisi) kimlik doğrulamayı, PostgreSQL veya DynamoDB'de metadata depolamayı ve önceden imzalanmış URL oluşturmayı yönetir. Depolama katmanı S3 uyumlu kovadır. Bu mimari yatay olarak ölçeklenir; çünkü uygulama katmanı durumsuz, depolama katmanı tüm bant genişliğini absorbe eder. GET isteklerinin önünde Cloudflare veya CloudFront gibi bir CDN eklemek, indirme hızlarını küresel olarak iyileştirir ve S3'ten çıkışı azaltır.
Yaşam Döngüsü Politikaları ve Otomatik Silme
Transfer servisleri için dosyaların otomatik olarak sona ermesi gerekir. S3 Lifecycle kuralları nesneleri yaşa göre depolama sınıfları arasında taşır veya siler. "7 günden eski nesneleri sil" kuralı günlük çalışır ve süresi dolmuş transferleri sıfır maliyetle temizler. Cloudflare R2, Terraform sağlayıcısı veya R2 API aracılığıyla yaşam döngüsü kurallarını destekler. Daha hassas kontrol için her nesneyi bir son kullanma zaman damgasıyla etiketleyin ve etiketlere göre silen nightly bir Lambda çalıştırın. Yarım kalan çok parçalı yüklemeler de kendi kurallarına sahip olmalıdır; 1 ila 7 gün sonra AbortIncompleteMultipartUpload, tamamlanmamış oturumlardan depolama alanı geri kazanır.
Performans Optimizasyonu
S3 aktarım hızı ön ek ile ölçeklenir. AWS S3, kovadaki ön ek başına 3.500 PUT/saniye ve 5.500 GET/saniye hedefler ve yük dengeleme için anahtarın ilk karakterlerinin tutarlı hash'ini kullanır. Sıralı anahtar ön eklerden kaçının (001, 002, 003); bunlar aynı bölüme hash'lenip sıcak noktalar oluşturur. Bunun yerine rastgele ön ekler veya UUID'nin ilk 8 karakteri gibi hash tabanlı anahtarlar kullanın. Çok parçalı yüklemeler tek transferler için aktarım hızını artırır; anahtarlar arasındaki paralel bağlantılar toplam aktarım hızını artırır. Transfer Acceleration, yüklemeleri en yakın CloudFront edge'i üzerinden yönlendirir ve uzak istemciler için yükleme süresini ek maliyet karşılığında %50-500 oranında azaltabilir.
Şifreleme Seçenekleri ve Değiş Tokuşları
Sunucu tarafı şifreleme üç şekilde gelir. SSE-S3 (veya R2'nin varsayılan şifrelemesi), sağlayıcı tarafından yönetilen anahtarlarla AES-256 kullanır; şeffaf ve ücretsizdir. SSE-KMS, AWS KMS tarafından yönetilen anahtarları kullanır, 10.000 istek başına 0,03 USD artı anahtar ücretleri maliyetlidir ve uyumluluk için yararlı KMS denetim günlükleri üretir. SSE-C, istek başına müşteri tarafından sağlanan bir anahtarı kabul eder; sunucu bununla şifreler ve anahtarı atar, bu nedenle müşterinin her okumada sağlaması gerekir — bu beceriksizce ama anahtarları sağlayıcının kontrolünden uzak tutar. Gerçek E2EE için yüklemeden önce libsodium veya Web Crypto'nun AES-GCM'ini kullanarak istemci tarafında şifreleyin, ardından depolanan nesneyi opak şifreli metin olarak işleyin.
İzleme, Metrikler ve Fatura Sürprizleri
CloudWatch (AWS), R2 panosu veya sağlayıcı eşdeğeri araçlarda kova metriklerini izleyin. Temel metrikler: BucketSizeBytes, NumberOfObjects, AllRequests, 4xxErrors, 5xxErrors ve BytesDownloaded. Beklenmedik çıkış artışları genellikle bağlantı yerleştirmeyi (biri önceden imzalanmış URL'nizi popüler bir siteye yerleştirdi) veya döngüde indiren bir botu gösterir. Bütçenin %50, %80 ve %100'ünde faturalama uyarıları ayarlayın. Cloudflare R2 farklı faturalar: A Sınıfı işlemler (yazma) için milyon başına 4,50 USD, B Sınıfı (okuma) için milyon başına 0,36 USD, artı depolama. Taahhüt vermeden önce trafik karışımınız için hesap yapın.
Entegrasyon Örneği ve HexaTransfer'in Yaklaşımı
Minimum transfer akışı: istemci yükleme jetonu ister, arka uç çok parçalı yükleme başlatma için önceden imzalanmış URL üretir, istemci parçaları doğrudan S3'e yükler, arka uç metadata depolar ve paylaşılabilir bağlantı döndürür, alıcı bağlantıya tıklar, arka uç önceden imzalanmış indirme URL'si üretir, tarayıcı alır ve şifresini çözer. HexaTransfer, istemci tarafı AES-256-GCM şifrelemeyle bu modeli kullanır; bu nedenle S3 uyumlu arka uç yalnızca şifreli metin depolar ve şifreleme anahtarı asla tarayıcıdan çıkmaz.
hexatransfer.com'da deneyin — ücretsiz, hesap gerekmez, maksimum 10 GB.
Uçtan uca şifreleme ile büyük dosyaları güvenle gönderin
Uçtan uca şifreleme ile 10 GB'a kadar dosya ücretsiz aktarın. Hesap gerekmez. Dosyalarınız yüklenmeden önce tarayıcınızda şifrelenir — başka kimse okuyamaz.
Dosya gönder