Merhaba arkadaşlar, bu yazımda sizlere Node.js API Health Check Kullanımı konusundan bahsedeceğim.
Node.js ile API geliştirirken, uygulamanın sağlıklı bir şekilde çalışıp çalışmadığını kontrol etmek için bir health check sistemi eklemek çok önemlidir. Bu, hem geliştiriciler hem de DevOps ekipleri için hayati bir fonksiyon sunar. Peki, Node.js ile bu endpoint’leri nasıl oluşturulabiliriz? Bu yazıda, adım adım rehber ve ipuçları ile konuyu inceleyeceğiz.
Health Check Nedir ve Neden Önemlidir?
Bir uygulamanın çalışabilirliğini ve bağımlılıklarının durumunu kontrol eden bir mekanizmadır.
Neden Kullanılmalı?
- Kesinti Durumlarını Hızlı Tespit Etmek: Uygulamanız çökerse, health check endpoint’i bunu hemen fark etmenizi sağlar.
- Bağımlılıkların Durumunu Görmek: Veri tabanı, üçüncü taraf API’ler veya diğer servislerin çalışabilirliğini kontrol edebilirsiniz.
- Otomasyon Araçları ile Entegrasyon: Kubernetes, Docker gibi sistemlerde health check endpoint’leri kullanılarak pod veya container yeniden başlatılabilir.
Adım Adım Health Check Endpoint Oluşturma
1. Basit Bir Endpoint ile Başlama
Node.js için en yaygın frameworklerden biri olan Express.js kullanarak bir health check endpoint oluşturalım:
const express = require('express');
const app = express();
const port = 3000;
// Health check endpoint
app.get('/health', (req, res) => {
res.status(200).json({
status: 'UP',
timestamp: new Date().toISOString(),
});
});
app.listen(port, () => {
console.log(`Server is running on http://localhost:${port}`);
});
Bu basit endpoint, uygulamanızın çalışıyor olduğunu belirten bir yanıt döndürür.
2. Bağımlılıkları Kontrol Etme
Health check endpoint’ine, veri tabanı gibi bağımlılıkları kontrol eden bir işlev ekleyelim. MongoDB kullandığımızı varsayalım:
const mongoose = require('mongoose');
// MongoDB’ye bağlanıyoruz
mongoose.connect('mongodb://localhost:27017/healthcheck', {
useNewUrlParser: true,
useUnifiedTopology: true,
});
app.get('/health', async (req, res) => {
try {
// Veritabanı durumunu kontrol et
const dbState = mongoose.connection.readyState;
const isDbConnected = dbState === 1; // 1: connected
if (!isDbConnected) {
throw new Error('Database not connected');
}
res.status(200).json({
status: 'UP',
database: 'Connected',
timestamp: new Date().toISOString(),
});
} catch (error) {
res.status(500).json({
status: 'DOWN',
database: 'Disconnected',
error: error.message,
});
}
});
3. Ekstra Durum Kontrolleri Ekleme
Daha karmaşık bir yapıda, üçüncü taraf servisleri veya API bağlantılarını da kontrol edebilirsiniz:
const axios = require('axios');
app.get('/health', async (req, res) => {
try {
const dbState = mongoose.connection.readyState;
const isDbConnected = dbState === 1;
// Örneğin, bir üçüncü taraf API'si kontrol ediliyor
const thirdPartyApiResponse = await axios.get('https://api.example.com/ping');
if (!isDbConnected || thirdPartyApiResponse.status !== 200) {
throw new Error('Health check failed');
}
res.status(200).json({
status: 'UP',
database: 'Connected',
thirdPartyApi: 'Available',
timestamp: new Date().toISOString(),
});
} catch (error) {
res.status(500).json({
status: 'DOWN',
error: error.message,
});
}
});
Health Check Kütüphanesi
Eğer kendiniz kod yazmak yerine, hazır bir kütüphane kullanmak isterseniz, aşağıdaki araçlardan faydalanabilirsiniz:
- express-healthcheck
const healthcheck = require('express-healthcheck');
app.use('/health', healthcheck({
healthy: () => ({ status: 'UP' }),
}));
NPM Paketi: express-healthcheck
Node.js ile bir health check endpoint oluşturmak, uygulamanızın durumunu izlemek ve potansiyel sorunları erken fark etmek için kritik bir adımdır. Basit bir endpoint’ten, bağımlılıkların ve üçüncü taraf servislerin durumunu kontrol eden kapsamlı bir yapıya kadar bu yazıdaki adımları izleyerek başlayabilirsiniz.
Bu rehberi kullanarak siz de Node.js uygulamanızı daha sağlam hale getirebilirsiniz. Unutmayın, sağlık kontrolü, sorunsuz bir geliştirme ve operasyon süreçleri için temel bir bileşendir!
Umarım faydalı olur.
Bir sonraki yazıda görüşmek üzere…