보통 백엔드 서버를 개발하면 API 서버 또는 웹서버가 정상적인 상태인지 확인할 수 있는 상태 확인 API를 개발하게 됩니다.
그리고 해당 상태 확인 API를 지속적으로 확인하는 시스템을 설정하여 서버들의 상태를 확인하게 됩니다.
오래전에는 단순 상태확인용 API를 단순하게 개발했지만, 현재 스프링의 경우 actuator를 이용하여 헬스 체크 엔드포인트를 활성화하여 많이 제공합니다.
현재 테크팀에서 관리하는 모든 스프링 프로젝트들의 경우에도 actuator를 이용하여 서버 상태를 확인하고 있습니다.
NestJS 프로젝트 또한 동일한 상태 확인 엔드포인트를 제공해주어야 되었기 때문에 기본적으로 프레임워크에서 제공해주는 Terminus를 활용하기로 결정 하였습니다.
"dependencies": {
"@nestjs/terminus": "^10.2.0",
},
package.json에 다음을 추가하고 패키지를 설치하자.
imports: [
// TerminusModule 설정
TerminusModule,
]
@ApiExcludeController()
@ApiTags('검색 API 서버 상태 정보 조회')
@Controller('management/health')
export default class HealthController {
constructor(
private health: HealthCheckService,
private http: HttpHealthIndicator,
) {}
@ApiExcludeEndpoint()
@ApiResponse({
status: 200,
description: 'The Health Check is successful',
})
@ApiResponse({ status: 500, description: 'Internal Server Error' })
@Get()
@HealthCheck()
check() {
return this.health.check([
() => this.http.pingCheck('nestjs-docs', 'https://docs.nestjs.com'),
]);
}
}
TerminusModule을 등록하고 HealthController을 만들어서 상태확인용 라운팅을 작성해주면 됩니다.
마지막으로 서버를 시작후 상태 확인 엔드포인트 접속하면 다음과 같이 상태를 확인할 수 있습니다.
이상 Health Check에 대한 글을 마치며, 다음글에서는 Task Scheduling 방법에 대해 간단하게 설명하도록 하겠습니다.
'Backend(Framework) > NestJS' 카테고리의 다른 글
NestJS Redis Util (0) | 2023.12.18 |
---|---|
NestJS Task Scheduling (1) | 2023.12.02 |
NestJS Cors와 Cookie설정 (0) | 2023.12.02 |
NestJS Yaml 파일 설정 관리 (1) | 2023.12.02 |
NestJS 스웨거(Swagger) 설정 (1) | 2023.12.02 |