İçeriğe geç
Muhammet Şafak
en
Soran: Kaan Cevaplandı:

Yerel diskteki dosyaları S3'e taşırken EFS ara çözüm olur mu?


Soru

Uygulamam kullanıcı görsellerini yerel diskte tutuyor ve imaj manipülasyonu için yerel kütüphaneler kullanıyor. Yatay ölçekleme (autoscaling) isteyince bu darboğaz oluyor. S3'e geçişte legacy koda en az dokunarak ve gecikmeyi en aza indirerek dönüşümü nasıl yönetirim? EFS ara çözüm olur mu, yoksa doğrudan object storage adaptör mimarisi mi kurmalıyım?

Cevap

Kısa cevap: EFS’i hedef olarak seçme — tuzak. Asıl çözüm bir object-storage adaptörü; Laravel’de zaten elindeki Flysystem ile bu çok kısa bir iş.

Senin engelin “yerel disk” değil aslında, “paylaşılan mount varsayımı”. Kod bir ham path bekliyor; ölçeklenince o path düğümler arasında paylaşılmıyor.

  1. EFS hedef olarak tuzaktır. “Yerel disk” engelini kaldırır ama seni bir ağ dosya sisteminde tutar: daha kötü gecikme, daha yüksek maliyet ve aynı coupling (kod hâlâ paylaşılan mount sanıyor). EFS’i yalnızca koda gerçekten dokunamadığın kısa ömürlü bir köprü olarak kullan, varış noktası olarak değil.
  2. Doğru hamle object-storage adaptörü. Laravel’de Flysystem zaten var; disk’i s3 yap ve her okuma/yazmayı ham path yerine Storage::disk() üzerinden geçir. İş mantığın “dosya nerede” bilmesin; framework’ün verdiği soyutlamanın arkasına saklan. Bu can sıkıcı derecede kanıtlanmış (boring) ve tam da bu yüzden doğru.
  3. İmaj manipülasyonunu paylaşılan mount varsayma. Dosyayı geçici bir tmp dosyasına çekip işle, ya da bir worker + presigned URL ile yap. Manipülasyonun “disk hep burada” varsayımını kır; girdi/çıktıyı object storage’dan al, sonuca yaz.
  4. Legacy churn’ü minimumda tut. Tüm dosya erişimini framework’ün filesystem abstraction’ının arkasına al; çağrı yerlerini tek tek s3’e taşımak yerine tek bir disk konfigürasyonuyla devir. Dokunduğun yüzey ne kadar küçükse risk o kadar az.
  5. Geçişi dual-read ile yap. Bir süre önce S3’e bak, yoksa yerel diske düş mantığıyla çalış; arka planda mevcut görselleri backfill et. Hepsi taşındığında okumayı tamamen S3’e çevir ve yerel diski devreden çıkar.

Sonuç: EFS’e para ve gecikme yatırma. Ben olsam doğrudan Flysystem s3 diskine geçer, her şeyi Storage::disk() üzerinden okur/yazar, manipülasyonu temp dosya/worker ile çözerdim. Dual-read ile sıfır kesintiyle geçer, backfill bitince yerel diski kaldırırdım. Sıkıcı ama bir kere kurup unutacağın türden bir mimari.

İlgili Yazılar

Etiketler: #mimari#altyapı#ölçekleme
Paylaş:

Yorumlar

Yorum yapmak için GitHub hesabınızla giriş yapmanız yeterli. Yorumlar GitHub Discussions üzerinde saklanır.

Diğer Sorular

Tüm sorular

Sitede Ara

Yazı, proje ve sayfalarda arama yapmak için yazmaya başlayın.

Esc ile kapat Pagefind ile güçlendirildi