Microservices, yazılımın küçük, bağımsız çalışan bileşenlere bölündüğü bir mimaridir. Bu bileşenler birbirinden bağımsız olarak geliştirilip, dağıtılabilir ve yönetilebilir. Klasik monolitik yapılar yerine, her bir mikroservis belirli bir işlevi yerine getirir. Bu yaklaşım, geliştirme ve bakım süreçlerini çok daha verimli hale getirir. Ama asıl büyüleyici olan şey, her mikroservisin bağımsız bir şekilde ölçeklendirilebilmesidir.
Node.js, hızlı performansı ve hafif yapısıyla, mikroservis mimarisi için mükemmel bir platformdur. Özellikle I/O tabanlı işlemler ve yüksek verimli web uygulamaları için son derece uygun olan Node.js, mikroservislerinizi daha hızlı geliştirebilmenize olanak tanır. Ayrıca, JavaScript dünyasında zaten tanıdık olduğunuz için, bu yazılım geliştirme süreci daha verimli ve kolay olacaktır.
Şimdi, Linux üzerinde Node.js ve Microservices kurulumuna geçelim. İşte adım adım nasıl yapacağınız:
# 1. Node.js Kurulumu
sudo apt update
sudo apt install nodejs
sudo apt install npm Bu komutlar, Node.js ve npm (Node Package Manager) paket yöneticisini bilgisayarınıza yükleyecektir. Yükleme işlemi tamamlandığında, kurulumun başarılı olup olmadığını kontrol etmek için aşağıdaki komutları kullanabilirsiniz:
node -v
npm -v Eğer Node.js’in ve npm’in sürüm numaralarını görüyorsanız, kurulum başarılı olmuş demektir!
Node.js ile mikroservisler geliştirmeye başlamak için, her servisi ayrı birer dosya olarak oluşturacağız. Her servisin kendi bağımsız portunda çalışacağını unutmayın.
Öncelikle bir proje dizini oluşturun:
mkdir node-microservices
cd node-microservices Sonra, her bir mikroservis için ayrı birer klasör oluşturun. Örneğin, kullanıcı servisi ve ödeme servisi gibi iki ayrı servisi yapılandıralım:
mkdir user-service
mkdir payment-service Şimdi, bir mikroservis oluşturalım. Örneğin, bir kullanıcı servisi olsun. Bu servisin temel işlevi, basitçe kullanıcı bilgilerini döndürmek olsun. İlk olarak, kullanıcı servisi için bir `index.js` dosyası oluşturalım:
const express = require('express');
const app = express();
const port = 3001;
app.get('/users', (req, res) => {
res.json({ users: ["Ali", "Ayşe", "Mehmet"] });
});
app.listen(port, () => {
console.log(`User service listening at http://localhost:${port}`);
}); Bu, kullanıcı servisini oluşturduğumuz basit bir örnek. `express` modülüyle bir API oluşturduk ve `/users` endpoint’ine gelen isteklere basit bir JSON yanıtı döndürüyoruz.
Mikroservislerin birbirleriyle iletişim kurması gerekecek. Örneğin, ödeme servisi kullanıcı bilgilerine ihtiyaç duyabilir. Bu durumda, kullanıcı servisini HTTP istekleriyle çağırabiliriz. Örneğin, ödeme servisini şu şekilde kurabiliriz:
const express = require('express');
const axios = require('axios');
const app = express();
const port = 3002;
app.get('/payment', async (req, res) => {
try {
const users = await axios.get('http://localhost:3001/users');
res.json({ message: "Ödeme başarılı", users: users.data });
} catch (error) {
res.status(500).json({ message: "Bir hata oluştu", error: error.message });
}
});
app.listen(port, () => {
console.log(`Payment service listening at http://localhost:${port}`);
}); Bu kod, ödeme servisini başlatır ve kullanıcı servisine bir HTTP isteği gönderir. Eğer kullanıcı servisi yanıt verirse, ödeme işlemi başarılı olur.
Her iki servisi de başlattığınızda, terminalde servislerin başarılı bir şekilde çalıştığını görebilirsiniz. Şimdi, bir tarayıcıya `http://localhost:3002/payment` yazarak ödeme servisini test edebilirsiniz. Eğer her şey doğru çalışıyorsa, kullanıcıların listesiyle birlikte "Ödeme başarılı" mesajını görmelisiniz.
Bu yazıda, Linux üzerinde Node.js ile nasıl mikroservisler kurabileceğinizi, her bir servisin nasıl çalıştığını ve birbirleriyle nasıl iletişim kurabileceğini öğrendiniz. Microservices mimarisi, yazılım projelerinizi daha esnek ve ölçeklenebilir hale getirecek güçlü bir yapıdır. Node.js’in hızlı ve verimli yapısı ise bu süreci kolaylaştırır.
Bu basit rehberle başladığınızda, daha karmaşık mikroservis projelerine geçiş yapmanız çok daha kolay olacak. İleri düzeydeki projelerinizde Node.js’in avantajlarından faydalanarak güçlü ve verimli bir yapı oluşturabilirsiniz.