TypeScript'i Mikroservis Mimarisiyle Nasıl Kullanabilirsiniz
TypeScript'in güçlü tiplemesi ve modülerliği onu mikro hizmetler oluşturmak için mükemmel bir seçim haline getirir. Bir mikro hizmetler mimarisinde, her hizmet API'ler aracılığıyla diğer hizmetlerle iletişim kuran küçük, bağımsız olarak dağıtılabilir bir bileşendir. Bu bağlamda TypeScript'i kullanmak kod kalitesini artırabilir, sürdürülebilirliği iyileştirebilir ve ekipler arasında daha iyi iş birliğini kolaylaştırabilir.
1. Mikroservisler için TypeScript Projesi Kurma
TypeScript'i bir mikro hizmet mimarisinde kullanmaya başlamak için, her mikro hizmet için TypeScript'i ayarlamanız gerekir. Başlamanız için adım adım bir kılavuz:
1.1 Bir TypeScript Projesi Başlatma
Öncelikle yeni bir Node.js projesi başlatalım ve TypeScript'i kuralım:
mkdir my-microservice
cd my-microservice
npm init -y
npm install typescript --save-dev
npx tsc --init
tsc --init
komutu varsayılan TypeScript yapılandırmasıyla bir tsconfig.json
dosyası oluşturur. Bu dosyayı ihtiyaçlarınıza göre özelleştirebilirsiniz.
1.2 tsconfig.json yapılandırılıyor
tsconfig.json
dosyasını bir mikroservis ortamına uyacak şekilde güncelleyin. İşte bir örnek yapılandırma:
{
"compilerOptions": {
"target": "ES6",
"module": "commonjs",
"outDir": "./dist",
"rootDir": "./src",
"strict": true,
"esModuleInterop": true
},
"include": ["src/**/*"],
"exclude": ["node_modules"]
}
Bu yapılandırma çıktı ve kök dizinlerini belirtir, sıkı tip denetimini etkinleştirir ve ES modüllerinin birlikte çalışabilirliğini destekler.
2. TypeScript ile Mikroservisleri Yapılandırma
Her mikro servisin iyi tanımlanmış bir yapısı olmalıdır. Tipik bir TypeScript mikro servis projesi şunları içerebilir:
src/
- Kaynak kod dizinisrc/routes/
- API rota işleyicilerisrc/services/
- İş mantığısrc/models/
- Veri modelleri ve türlerisrc/utils/
- Yardımcı işlevlerdist/
- Derlenmiş JavaScript dosyalarıtests/
- Birim ve entegrasyon testleri
2.1 Örnek Proje Yapısı
TypeScript mikroservisini nasıl yapılandırabileceğinize dair basit bir örnek şöyledir:
my-microservice/
├── src/
│ ├── routes/
│ │ └── userRoutes.ts
│ ├── services/
│ │ └── userService.ts
│ ├── models/
│ │ └── userModel.ts
│ ├── utils/
│ │ └── logger.ts
│ └── index.ts
├── dist/
├── tests/
│ └── userService.test.ts
├── package.json
├── tsconfig.json
└── README.md
3. Mikroservisler için TypeScript Kodu Yazma
Mikroservisler için TypeScript kodu yazarken, servisleriniz için net arayüzler ve tipler tanımlamaya odaklanmalısınız. Bu, her servisin diğerleriyle güvenilir ve öngörülebilir bir şekilde etkileşime girebilmesini sağlamaya yardımcı olur.
3.1 Modelleri ve Türleri Tanımlama
Veri modellerinizi ve türlerinizi tanımlayarak başlayın. Örneğin, bir kullanıcı modeli şu şekilde görünebilir:
export interface User {
id: string;
name: string;
email: string;
}
3.2 Uygulama Hizmetleri
Sonra, servis sınıflarında iş mantığını uygulayın. İşte kullanıcıları yönetmek için bir servis örneği:
import { User } from '../models/userModel';
export class UserService {
private users: User[] = [];
addUser(user: User): void {
this.users.push(user);
}
getUser(id: string): User | undefined {
return this.users.find(user => user.id === id);
}
}
3.3 API Rotalarını Ayarlama
Gelen istekleri işlemek için API rotalarını tanımlayın. İşte Express'i kullanan temel bir örnek:
import express from 'express';
import { UserService } from './services/userService';
import { User } from './models/userModel';
const app = express();
const userService = new UserService();
app.use(express.json());
app.post('/users', (req, res) => {
const user: User = req.body;
userService.addUser(user);
res.status(201).send(user);
});
app.get('/users/:id', (req, res) => {
const user = userService.getUser(req.params.id);
if (user) {
res.status(200).send(user);
} else {
res.status(404).send({ message: 'User not found' });
}
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
4. Mikroservisleri test etme
Mikroservislerinizin güvenilirliğini sağlamak için test etmek çok önemlidir. Hizmetleriniz için birim ve bütünleşme testleri yazmak için jest
veya mocha
gibi test çerçevelerini kullanın.
4.1 Birim Testleri Yazma
jest
kullanılarak UserService
için basit bir birim testi örneği:
import { UserService } from '../src/services/userService';
import { User } from '../src/models/userModel';
test('should add and retrieve a user', () => {
const userService = new UserService();
const user: User = { id: '1', name: 'Alice', email: 'alice@example.com' };
userService.addUser(user);
expect(userService.getUser('1')).toEqual(user);
});
Çözüm
TypeScript'i bir mikro hizmet mimarisiyle kullanmak, güçlü yazım ve modülerlikten yararlanmanızı sağlayarak hizmetlerinizi daha sağlam ve sürdürülebilir hale getirir. TypeScript yapılandırması, kod organizasyonu ve test için en iyi uygulamaları izleyerek sorunsuz bir şekilde etkileşim kuran ölçeklenebilir ve güvenilir mikro hizmetler oluşturabilirsiniz.