Node.js ile Compression Kullanımı: API Performansını Artırma

Posted by

Merhaba arkadaşlar, bu yazımda sizlere Node.js ile Compression Kullanımı: API Performansını Artırma konusundan bahsedeceğim.

Web uygulamalarında performans, kullanıcı deneyimi açısından kritik bir öneme sahiptir. Büyük veri setleri veya yoğun API kullanımı söz konusu olduğunda, yanıtların boyutunu küçülterek hem sunucu yükünü azaltabilir hem de istemciye daha hızlı veri aktarımı sağlayabilirsiniz. İşte bu noktada, Node.js ile compression modülü devreye giriyor. Bu yazıda, compression kullanarak API yanıtlarını nasıl sıkıştırabileceğinizi ve belirli endpoint’ler için nasıl özelleştirebileceğinizi adım adım anlatacağım.

Compression Nedir ve Neden Önemlidir?

Compression, web sunucularının yanıtlarını sıkıştırarak istemciye daha küçük boyutlarda göndermesini sağlayan bir tekniktir. Özellikle büyük JSON veri setleri döndüren API’lerde:

  • Daha Hızlı Yanıt Süresi: Daha küçük boyutlu yanıtlar ağ üzerinden daha hızlı taşınır.
  • Bant Genişliği Tasarrufu: Özellikle düşük hızlı ağ bağlantılarında veri aktarım maliyetlerini azaltır.
  • Daha Az Sunucu Yükü: Verilerin sıkıştırılması, sunucu performansını artırabilir.

Compression Modülünü Kurma

Compression kullanmak için öncelikle modülü yüklemeniz gerekiyor. Bunun için aşağıdaki komutu çalıştırabilirsiniz:

npm install compression

Uygulama Örneği: Sıkıştırma Olan ve Olmayan Endpointler

Aşağıda, Express.js kullanarak hem sıkıştırmalı hem de sıkıştırmasız yanıt veren iki endpoint oluşturuyoruz:

Kod:

const express = require('express');
const compression = require('compression');

const app = express();
const PORT = 3000;

// Büyük veri oluşturan bir yardımcı fonksiyon
const generateLargeData = () => {
    const largeData = [];
    for (let i = 0; i < 100000; i++) {
        largeData.push({ id: i, name: `Item ${i}` });
    }
    return largeData;
};

// Sıkıştırma uygulanan endpoint
app.get('/with-compression', compression(), (req, res) => {
    const largeData = generateLargeData();
    res.json(largeData); // JSON yanıtı sıkıştırılmış olarak döner
});

// Sıkıştırma uygulanmayan endpoint
app.get('/without-compression', (req, res) => {
    const largeData = generateLargeData();
    res.json(largeData); // JSON yanıtı sıkıştırma olmadan döner
});

// Sunucuyu başlat
app.listen(PORT, () => {
    console.log(`Server çalışıyor: http://localhost:${PORT}`);
});

Kodun Açıklaması

1. Compression Middleware’i Kullanımı

  • compression() fonksiyonu, yanıtların sıkıştırılması için kullanılır.
  • /with-compression endpointinde middleware olarak eklenmiştir, bu sayede sadece bu endpoint sıkıştırılır.

2. Sıkıştırmasız Endpoint

  • /with-compression endpointinde sıkıştırma uygulanmamıştır. Bu endpoint sıkıştırma yapılmadan yanıt verir.

3. Büyük Veri Simülasyonu

  • generateLargeDate() fonksiyonu, 100.000 elemanlı bir JSON veri seti üretir. Bu, sıkıştırma farkını gözlemlemek için yeterli büyüklüktedir.

Performans Karşılaştırması

Sıkıştırma Aktifken:

  • Yanıt boyutu: ~500 KB (örnek veri setine bağlı olarak değişebilir)
  • Yanıt süresi: Daha hızlı

Sıkıştırma Kapalıyken:

  • Yanıt boyutu: ~2 MB
  • Yanıt süresi: Daha yavaş
Compression

Compression

Compression, özellikle büyük veri döndüren API’ler için performansı artırmak adına önemli bir araçtır.

Bu yazıda:

  • Compression modülünü nasıl kuracağınızı,
  • Sıkıştırmalı ve sıkıştırmasız endpointleri nasıl oluşturacağınızı,
  • Performans farklarını nasıl test edeceğinizi öğrendiniz.

Sıkıştırma, kullanıcı deneyimini geliştiren ve sunucu kaynaklarını optimize eden güçlü bir tekniktir. Uygulamanızda bu yöntemi kullanarak daha verimli bir yapı elde edebilirsiniz.

Umarım faydalı olur.

Bir sonraki yazıda görüşmek üzere…

Leave a Reply

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir