Cara Menggunakan TypeScript dengan Arsitektur Layanan Mikro
Kemampuan mengetik dan modularitas TypeScript yang kuat menjadikannya pilihan yang sangat baik untuk membangun layanan mikro. Dalam arsitektur layanan mikro, setiap layanan merupakan komponen kecil yang dapat disebarkan secara independen yang berkomunikasi dengan layanan lain melalui API. Penggunaan TypeScript dalam konteks ini dapat meningkatkan kualitas kode, meningkatkan kemudahan pemeliharaan, dan memfasilitasi kolaborasi yang lebih baik antar tim.
1. Menyiapkan Proyek TypeScript untuk Layanan Mikro
Untuk mulai menggunakan TypeScript dalam arsitektur layanan mikro, Anda perlu menyiapkan TypeScript untuk setiap layanan mikro. Berikut panduan langkah demi langkah untuk membantu Anda memulai:
1.1 Menginisialisasi Proyek TypeScript
Pertama, inisialisasi proyek Node.js baru dan instal TypeScript:
mkdir my-microservice
cd my-microservice
npm init -y
npm install typescript --save-dev
npx tsc --init
Perintah tsc --init
menghasilkan file tsconfig.json
dengan konfigurasi TypeScript default. Anda dapat menyesuaikan file ini sesuai dengan kebutuhan Anda.
1.2 Mengonfigurasi tsconfig.json
Perbarui tsconfig.json
agar sesuai dengan lingkungan layanan mikro. Berikut contoh konfigurasinya:
{
"compilerOptions": {
"target": "ES6",
"module": "commonjs",
"outDir": "./dist",
"rootDir": "./src",
"strict": true,
"esModuleInterop": true
},
"include": ["src/**/*"],
"exclude": ["node_modules"]
}
Konfigurasi ini menentukan direktori keluaran dan root, memungkinkan pemeriksaan tipe yang ketat, dan mendukung interoperabilitas modul ES.
2. Menyusun Layanan Mikro dengan TypeScript
Setiap layanan mikro harus memiliki struktur yang terdefinisi dengan baik. Proyek layanan mikro TypeScript yang umum mungkin mencakup:
src/
- Direktori kode sumbersrc/routes/
- Penangan rute APIsrc/services/
- Logika bisnissrc/models/
- Model dan tipe datasrc/utils/
- Fungsi utilitasdist/
- File JavaScript yang dikompilasitests/
- Pengujian unit dan integrasi
2.1 Contoh Struktur Proyek
Berikut contoh sederhana tentang bagaimana Anda dapat menyusun layanan mikro TypeScript:
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. Menulis Kode TypeScript untuk Layanan Mikro
Saat menulis kode TypeScript untuk layanan mikro, Anda harus fokus pada pendefinisian antarmuka dan tipe yang jelas untuk layanan Anda. Ini membantu memastikan bahwa setiap layanan dapat berinteraksi dengan layanan lain secara andal dan dapat diprediksi.
3.1 Mendefinisikan Model dan Jenis
Mulailah dengan mendefinisikan model dan tipe data Anda. Misalnya, model pengguna mungkin terlihat seperti ini:
export interface User {
id: string;
name: string;
email: string;
}
3.2 Menerapkan Layanan
Selanjutnya, terapkan logika bisnis dalam kelas layanan. Berikut contoh layanan untuk mengelola pengguna:
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 Menyiapkan Rute API
Tentukan rute API untuk menangani permintaan masuk. Berikut contoh dasar penggunaan Express:
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. Menguji Layanan Mikro
Pengujian sangat penting untuk memastikan keandalan layanan mikro Anda. Gunakan kerangka pengujian seperti jest
atau mocha
untuk menulis pengujian unit dan integrasi untuk layanan Anda.
4.1 Menulis Tes Unit
Berikut contoh pengujian unit sederhana untuk UserService
menggunakan jest
:
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);
});
Kesimpulan
Menggunakan TypeScript dengan arsitektur layanan mikro memungkinkan Anda memanfaatkan pengetikan dan modularitas yang kuat, menjadikan layanan Anda lebih tangguh dan mudah dipelihara. Dengan mengikuti praktik terbaik untuk konfigurasi TypeScript, organisasi kode, dan pengujian, Anda dapat membangun layanan mikro yang dapat diskalakan dan andal yang berinteraksi dengan lancar.