Node.js (NestJS / Express) İleri Seviye Bellek & I/O

Streams & Backpressure: GB Boyutlu Dosyaları RAM Taşmadan İşlemek

10 GB'lık log dosyasını 50 MB RAM kullanarak saniyeler içinde okuyup sıkıştırma sanatı.

5 Yaşındaki Çocuğa Anlatır Gibi (Analoji)

Bahçe hortumundan gelen suyu tek bir dev kova yerine bardak bardak içmek veya aktarmaktır. Bardak dolunca musluğu hafifçe kısarsınız (Backpressure).

Teknik & Mimari Tanım

fs.readFile tüm dosyayı belleğe yükler (OOM riski). Stream ise veriyi 64KB'lık parçalar (chunks) halinde aktarır. Readable, Writable, Transform ve Duplex stream tipleri vardır. pipeline() metodu otomatik hata yakalama ve backpressure yönetimi sunar.

Mülakatta Ne Demelisin? (Kurtarıcı Altın Cevap)

“Stream'ler büyük veri akışlarında RAM tüketimini sabit tutar. Backpressure, okuma hızı yazma hızından yüksek olduğunda aradaki tamponun (buffer) patlamasını önlemek için okumayı geçici olarak durduran mekanizmadır.”

Node.js (NestJS / Express) Örnek Uygulaması
import { pipeline } from 'node:stream/promises';
import fs from 'node:fs';
import zlib from 'node:zlib';

// 10GB dosyayı 50MB RAM ile gzip yapar:
await pipeline(
  fs.createReadStream('huge.log'),
  zlib.createGzip(),
  fs.createWriteStream('huge.log.gz')
);
Mülakat Tuzağı & Adayların En Sık Yaptığı Hata:

Büyük dosya transferlerinde res.send(fs.readFileSync(file)) kullanmak ve sunucunun RAM'ini tüketip Node sürecini çökertmek.