Express Uygulaması Yayınlama ve Ölçekleme: Memcached ile Performans Artışı
Bu rehberde ne öğreneceksiniz?
Bu rehberde bir Express.js uygulamasını PaaS ortamında yayınlamayı öğreneceksiniz.
Ardından Memcached kullanarak uygulamayı ölçeklendireceksiniz.
Hesaplama, görünüm ve oturum önbellekleme tekniklerini uygulayacaksınız.
🧠 Teknik Özet
Konu, Express uygulamasının dağıtımı ve önbelleklemedir.
Problem, CPU yoğun işlemlerin performansı düşürmesidir.
Çözüm, Memcached ile önbellekleme stratejileridir.
Ön Gereksinimler
Devam etmeden önce şunlar gereklidir:
- Node.js kurulu bir sistem
- Temel Express.js bilgisi
- Git ve GitHub hesabı
- PaaS kullanımı hakkında temel farkındalık
1. Template Engine Kurulumu (EJS)
npm install ejs
- Bu komut Express için EJS şablon motorunu kurar.
app.set("view engine", "ejs");
- Bu ayar Express’e EJS kullanacağını söyler.
2. Prime Sayı Hesaplama Mantığı
- Uygulama, girilen sayıya kadar en büyük asal sayıyı bulur.
- Bu işlem CPU yoğundur ve önbelleğe uygundur.
module.exports = function (n) {
let prime = 2;
for (let i = n; i > 1; i--) {
let isPrime = true;
for (let j = 2; j < i; j++) {
if (i % j === 0) {
isPrime = false;
break;
}
}
if (isPrime) {
prime = i;
break;
}
}
return prime;
};
- Bu fonksiyon en büyük asal sayıyı hesaplar.
3. Beğeni (Like) Mekanizması
- Her sayı için geçici bir beğeni sayacı tutulur.
- Bu yapı, görünüm önbelleği invalidasyonu için kullanılır.
const likesMap = {};
- Bu nesne beğeni sayılarını RAM’de tutar.
4. GitHub Üzerinden Kod Yönetimi
git init
git add .
git commit -m "Initial commit"
git push -u origin main
- Bu adımlar projeyi GitHub üzerine gönderir.
5. PaaS Ortamında Yayınlama
- Uygulama bir PaaS platformuna bağlanır.
- Kaynak olarak GitHub deposu seçilir.
- Port bilgisi ortam değişkeninden okunur.
const port = process.env.PORT || 3000;
app.listen(port);
- Bu yapı farklı ortamlara uyum sağlar.
6. Memcached Servisi Kurulumu
- Önbellek servisi olarak Memcached kullanılır.
- Servis, uygulama ile aynı bölgede olmalıdır.
npm install memjs
- Bu komut Memcached istemcisini kurar.
const { Client } = require("memjs");
module.exports = Client.create(process.env.MEMCACHIER_SERVERS);
- Bu kod Memcached bağlantısını oluşturur.
7. Hesaplama Sonucu Önbellekleme
memcache.get(key, (err, val) => {
if (val) {
prime = parseInt(val.toString());
} else {
prime = findPrime(n);
memcache.set(key, prime.toString());
}
});
- Bu yapı CPU maliyetini düşürür.
8. Render Edilmiş Görünüm Önbellekleme
- HTML çıktısı Memcached’e kaydedilir.
- Aynı isteklerde yeniden render yapılmaz.
const key = `view_${req.url}`;
- Her URL için ayrı önbellek anahtarı üretilir.
9. Cache Invalidation (Beğeni Sonrası)
- Beğeni değiştiğinde görünüm önbelleği silinir.
memcache.delete(`view_/?n=${n}`);
- Bu işlem bayat veriyi engeller.
10. Oturum (Session) Önbellekleme
npm install express-session connect-memjs
- Bu paketler oturumları Memcached’de tutar.
store: new MemcacheStore({
servers: [process.env.MEMCACHIER_SERVERS],
});
- Bu yapı ölçeklenebilir oturum yönetimi sağlar.
❓ Sıkça Sorulan Sorular
1. Memcached ne işe yarar? RAM tabanlı hızlı önbellekleme sağlar.
2. Hangi veriler cache’e uygundur? CPU yoğun ve sık kullanılan veriler.
3. Cache bozulursa ne olur? Uygulama çalışmaya devam eder.
4. Session cache güvenli mi? Kısa ömürlü oturumlar için uygundur.
5. Production ortamı için uygun mu? Evet, yatay ölçekleme için idealdir.
Sonuç
Bu rehberde Express uygulamasını yayınladınız. Memcached ile performansı ciddi biçimde artırdınız. Hesaplama, görünüm ve oturum önbellekleme uyguladınız.
Bu mimariyi Rabisu Bulut altyapısında yüksek performansla çalıştırabilirsiniz.