[typescript] 타입스크립트로 작성하는 Node.js 마이크로서비스 아키텍처 예시

소개

마이크로서비스 아키텍처는 큰 응용 프로그램을 여러 개의 작은 독립적인 서비스로 나누는 디자인 패턴입니다. 이번에는 타입스크립트를 사용하여 Node.js 기반의 마이크로서비스 아키텍처를 구현하는 방법에 대해 살펴보겠습니다.

프로젝트 구조

첫 번째로, 마이크로서비스 아키텍처를 위한 타입스크립트 프로젝트 구조를 설명하겠습니다. 아래는 간단한 마이크로서비스 아키텍처를 구현하기 위한 프로젝트 구조의 예시입니다.

microservices/
  ├── package.json
  ├── tsconfig.json
  ├── services/
  │   ├── service1/
  │   │   ├── src/
  │   │   │   ├── index.ts
  │   │   │   └── service1Controller.ts
  │   ├── service2/
  │   │   ├── src/
  │   │   │   ├── index.ts
  │   │   │   └── service2Controller.ts
  │   └── service3/
  │       ├── src/
  │       │   ├── index.ts
  │       │   └── service3Controller.ts

이 구조에서 services 폴더 안에는 각각의 독립적인 마이크로서비스를 위한 폴더들이 있습니다. 각 서비스 폴더 안에는 해당 서비스를 위한 TypeScript 파일들이 포함되어 있습니다.

서비스 구현

이제 간단한 예시를 통해 하나의 마이크로서비스를 구현해보겠습니다. 서비스1은 HTTP 요청을 처리하고 응답을 반환하는 역할을 합니다.

// services/service1/src/index.ts
import express, { Request, Response } from 'express';
import { service1Controller } from './service1Controller';

const app = express();
const port = 3000;

app.get('/', (req: Request, res: Response) => service1Controller(req, res));

app.listen(port, () => {
  console.log(`Service 1 listening at http://localhost:${port}`);
});
// services/service1/src/service1Controller.ts
import { Request, Response } from 'express';

export function service1Controller(req: Request, res: Response): void {
  res.status(200).json({ message: 'Hello from Service 1!' });
}

위의 예시에서는 Express를 사용하여 HTTP 요청을 처리하고, service1Controller 함수를 이용해 응답을 반환합니다.

테스트

프로젝트 루트 폴더에서 각 서비스를 개별적으로 실행하고 API 요청을 보내 테스트할 수 있습니다. 서비스 간 통신 및 데이터베이스 연결과 같은 다양한 시나리오를 테스트하여 마이크로서비스 간의 상호작용을 검증할 수 있습니다.

마무리

타입스크립트는 마이크로서비스 아키텍처를 구현하는 데 매우 유용한 언어입니다. 이를 통해 각 서비스의 타입 안정성을 보장하고, 코드의 유지보수성을 향상시킬 수 있습니다.

마이크로서비스 아키텍처는 각 서비스를 독립적으로 확장하고 유지보수할 수 있는 장점을 가지고 있으며, 타입스크립트를 사용함으로써 이러한 장점을 최대한 활용할 수 있습니다.

이상으로, 타입스크립트로 작성하는 Node.js 마이크로서비스 아키텍처에 대한 예시를 살펴보았습니다.

참고 자료