İçeriğe atla
HexaTransfer
Bloga dön
Teknik incelemeler

Serverless Dosya Transferi: Architecture ve Design

AWS Lambda, Azure Functions veya Google Cloud Functions ile serverless dosya transfer sistemleri inşa edin. Maliyet etkin ve otomatik ölçekli tasarımlar.

Serverless dosya transfer sistemi, sunucu yönetmeden üretim servisi çalıştırmanıza olanak tanır; yalnızca istek hacmi ve fonksiyon yürütme süresi için ödeme yaparsınız. AWS Lambda, Azure Functions ve Google Cloud Functions işlemi; S3, Blob Storage veya GCS dosyaları yönetir; önceden imzalanmış URL'ler ise istemcilerin doğrudan depolamaya yüklemesini sağlar, böylece Lambda baytlara hiç dokunmaz. Düşük ila orta trafik düzeyi için transfer servisleri aylık fatura 50 USD'nin altında kalabilirken otomatik olarak ani yükleri karşılayacak şekilde ölçeklenir. İşte yaygın serverless tuzaklarından kaçınan temiz bir tasarım.

Serverless'ın Neden Dosya Transferine İyi Uyduğu

Dosya transferi patlamalıdır. Kullanıcı yüklemeye basar, birkaç dakika boyunca bir istek patlaması yaşanır, sonra sessizlik. Bu düzen için 24/7 VM filosu çalıştırmak para israfıdır. Lambda isteğe bağlı başlatılır, 100 ms yürütme başına ücretlendirilir ve elle yapılandırma olmadan binlerce eş zamanlı çağrıya ölçeklenir. Önemlisi, gerçek dosya baytları önceden imzalanmış URL aracılığıyla doğrudan istemciden S3'e gider; Lambda 10 GB'lık yükü değil yalnızca metadata ve kimlik doğrulama kontrollerini yönetir. Bu, Lambda yürütme sürelerini 500 ms'nin altında tutar ve aylık milyonlarca transferde bile maliyeti ihmal edilebilir kılar.

Temel Bileşenler ve Sorumluluklar

Minimum serverless mimarisi: API Gateway (veya edge kimlik doğrulama için CloudFront Functions) HTTPS isteklerini kabul eder; yükleme başlatma, metadata CRUD ve indirme yetkilendirmesi için Lambda Functions; gerçek dosya deposu olarak S3; transfer metadata'sı için DynamoDB veya RDS Aurora Serverless v2; bildirim e-postaları göndermek için SES veya SNS; eşzamansız olay yönlendirmesi için EventBridge. Dokuz servis, sıfır sunucu. Terraform veya AWS CDK yığını hazırlar. Sonuç, otomatik ölçekleme, AZ'ler arası yüksek kullanılabilirlik ve işletim sistemi yaması kaygısı olmayan bir transfer servisidir.

Önceden İmzalanmış URL'ler Aracılığıyla Doğrudan S3 Yüklemeleri

Serverless'ı ekonomik yapan desen: istemci Lambda'yı çağırır, Lambda 15 dakika geçerli önceden imzalanmış POST veya PUT URL üretir, Lambda URL'yi döndürür, istemci doğrudan S3'e yükler. Lambda ~100 ms çalıştı ve yaklaşık 0,0000002 USD için ücretlendirildi. 10 GB'lık yükleme Lambda'nın dahil olup olmadığından bağımsız olarak standart oranlardan faturalanan S3'ün bant genişliği üzerinden geçer. Çok parçalı yüklemeler için Lambda her parça için önceden imzalanmış URL üretir, istemci parçaları paralel olarak yükler ve final bir Lambda CompleteMultipartUpload aracılığıyla yüklemeyi tamamlar. Mimari, küçük servisler için esasen ücretsiz katman hakkı kazanır.

Olay Odaklı Yükleme Sonrası İşlem

S3 bir nesne yüklemesini tamamladığında bir olay atar. S3 Olay Bildirimleri veya EventBridge, yükleme sonrası işlem için Lambda fonksiyonlarına yönlendirir: Lambda container görüntüsü aracılığıyla ClamAV çalıştırma (AV veritabanı güncellemesi zor kısımdır; önceden hazırlanmış container'lar yardımcı olur), Lambda katmanlarındaki ImageMagick veya Ghostscript aracılığıyla resimler ve PDF'ler için küçük resim oluşturma, DynamoDB'de transfer durumunu güncelleme, SES aracılığıyla bildirim e-postaları gönderme. Her adım yalnızca gerektiğinde çalışır, polling döngüsünde değil. Hata kuyrukları başarısızlıkları sessizce kaybetmeden yakalar.

Soğuk Başlatmalar ve Bunları Hafifletme Yöntemi

Lambda soğuk başlatmaları kalıcı şikayettir. Node.js Lambda genellikle 200 ila 500 ms soğuk başlatır; Python fonksiyonu benzer; Java veya .NET Lambda 1 ila 3 saniye sürebilir. Transfer servisi için, kullanıcıya bakan yükleme başlatma soğuk başlatmalardan kaçınmalıdır. Provisioned Concurrency, GB-saniye başına 0,0000041667 USD'de ısıtılmış bir havuz tutar; genellikle ucuzdur. Minimum bağımlılıklarla Go veya Rust'ta yazılan kritik yol fonksiyonları rutin olarak 100 ms'nin altında soğuk başlatır. Arka plan Lambda'ları için (yükleme sonrası tarama, bildirimler), iş eşzamansız olduğundan soğuk başlatmalar genellikle önemsizdir.

Serverless Ölçeğinde Veritabanı Seçimleri

Aurora Serverless v2, isteğe bağlı 0,5 ila 128 ACU arasında işlem ölçeklendirir; patlamalı iş yükleri için maliyet etkindir. DynamoDB İsteğe Bağlı fiyatlandırma istek başına ücretlendirilir; trafik öngörülemeyen olduğunda idealdir. RDS Proxy, Lambda'dan RDS'e bağlantı tükenme sorununa yardımcı olur; çünkü her Lambda örneğinin bir Postgres bağlantısı açması, trafik artışları sırasında küçük RDS örneğini bunaltabilir. Basit transfer metadata'sı için DynamoDB çoğunlukla daha kolaydır: transfer_id bölüm anahtarı ve metadata alanları sıralama anahtarıyla tek tablo tasarımı, tek haneli milisaniyede tüm CRUD işlemlerini yönetir. Maliyet, 1.000 okuma başına bir sentin çok küçük bir parçasıdır.

API Gateway, HTTP API ve Edge Seçenekleri

AWS üç API ön kapısı sunar. REST API Gateway zengin özelliklere sahiptir ancak milyon istek başına 3,50 USD ile pahalıdır. HTTP API daha yeni, milyon başına 1,00 USD ile daha ucuz ve Lambda destekli API'lerin çoğu için yeterlidir. CloudFront Functions ve Lambda@Edge, ultra düşük gecikmeli kimlik doğrulama veya yönlendirme mantığı için edge'de çalışır. Bir dosya transfer servisi için kullanıcının en yakın bölgesindeki HTTP API ve varlık önbelleğe alma için CloudFront, maliyet ve performansı dengeler. Azure API Management ve Google'ın API Gateway'i benzer fiyat noktalarında eşdeğer seçenekler sunar.

Kimlik Doğrulama Desenleri

Cognito, Auth0 veya özel Lambda yetkisi tarafından verilen JWT belirteçleri her istekte doğrular. API Gateway JWT yetkilendiricilerini yerel olarak destekler; Lambda çalışmadan önce belirteçleri doğrular, böylece geçersiz istekler Lambda maliyeti doğurmaz. Anonim dosya paylaşımı için (HexaTransfer modeli), URL parçasına gömülü rastgele 256 bitlik belirteç hem tanımlayıcı hem de şifre çözme anahtarı işlevi görür; Lambda yalnızca tanımlayıcıyı doğrularken anahtar istemci tarafında kalır. API Gateway kullanım planları aracılığıyla hız sınırlama, ücretsiz katmanlar için saniyede 1.000 istek tipik olarak kötüye kullanımı önler.

Maliyet Yapısı ve Ölçeklendirme Sürprizleri

Serverless ekonomisi geleneksel resmi tersine çevirir. Düşük trafik esasen ücretsizdir; yüksek trafik sürpriz yapabilir. Aylık 10 milyon transfer ile tipik maliyetler: Lambda çağrıları 2-20 USD, API Gateway 10-35 USD, DynamoDB 20-100 USD, S3 depolama saklama süresine göre büyük farklılık gösterir, S3 çıkışı CDN indirmelerin önüne geçmediği sürece genellikle en büyük kalemdir. Döngülere dikkat edin: DynamoDB kısıtlamasında Lambda'nın sonsuz yeniden denemesine neden olan bir hata bir saatte 500 USD birikimine yol açabilir. Her Lambda'da CloudWatch faturalama alarmları ve eş zamanlılık sınırları ayarlayarak patlama yarıçapını sınırlayın.

Serverless Sistemlerde İzleme ve Hata Ayıklama

CloudWatch Logs her Lambda çağrısını yakalar; bağıntı kimliklerini içeren JSON yapılandırılmış günlükleme aramayı kolaylaştırır. X-Ray izleri zamalamalı Lambda-DynamoDB-S3 yolunu gösterir. Lambda Insights, fonksiyon başına bellek ve CPU metrikleri sağlar. Lumigo, Thundra ve Dashbird gibi üçüncü taraf araçlar serverless gözlemlenebilirlikte uzmanlaşmıştır. Takip edilecek temel metrikler: fonksiyon başına p99 gecikme, hata oranı, kısıtlama oranı ve soğuk başlatma yüzdesi. Serverless dağıtım modeli, büyük monolitik işleyiciler yerine dar gözlemlenebilirliğe sahip küçük, tek amaçlı fonksiyonları ödüllendirir.

Serverless'ın Yanlış Seçenek Olduğu Durumlar

Transfer hacminiz tutarlı biçimde yüksekse (7/24 doymuş, eş zamanlı yükleme milyonları), özel EC2 veya Fargate filosu daha ucuz olabilir. Uzun süreli bağlantılara ihtiyaç duyuyorsanız (dakika uzunluğunda oturumlarla WebSocket), Lambda'nın 15 dakikalık maksimum yürütme ve çağrı başına fiyatlandırma zahmetli hale gelir. Uyumluluk, hava boşluklu dağıtım gerektiriyorsa serverless başlangıçtan seçenek değildir. HexaTransfer, mimariyi basit ve faturayı öngörülebilir tutmak için egzotik ölçeklendirme hilelerinden çok doğruluğu ve güvenilirliği önceleyerek serverless ve konteyner tabanlı servislerin hibridini kullanır.

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