기능 소개
기능은 크게 5가지이다.
1. Dependency Graph (Modules, Classes 의존성 조회)
2. Routes Explorer (API Endpoint 조회, Endpoint별 처리 프로세스 조회)
3. Playground (NestJS 코드 불러다가 쓸 수 있음)
4. Bootstrap Performance (Bootstrap 속도 분석)
5. Audit (코드 개선사항 제안)
Prerequisite
1. NestJS 버전을 9.3.10 이상으로 업그레이드 해야한다. 2023년 7월 현재 Nest는 10버전까지 출시했으므로 현재 시점 이후로 세팅하는 대부분의 앱들은 Devtools 세팅이 가능할 것이다.
2. 최초 실행시 snapshot 속성을 true로 설정해야 한다.
// main.ts
async function bootstrap() {
const app = await NestFactory.create(AppModule, {
snapshot: true,
});
await app.listen(3000);
}
3. @nestjs/devtools-integration 라이브러리를 설치한다.
yarn add @nestjs/devtools-integration
4. AppModule에 DevtoolsModule을 import한다. (port 번호는 main.ts에서 설정한 포트와 다른 번호로 지정) 여기서 설정한 port 번호는 Devtools에 연결할 때 사용된다.
@Module({
imports: [
DevtoolsModule.register({
http: process.env.NODE_ENV !== 'production',
port: 3001,
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
로컬에서 Devtools 연결하기
1. 먼저 Devtools에 접속한다. https://devtools.nestjs.com
2. 상단 입력창에 http://localhost:port 입력해서 연결한다. (서버 포트가 아니고 위에서 설정한 devtools 연결 포트)
세부 기능 설명
공개할 만한 자료가 없어서 이미지는 공홈 자료로 대체한다.
Dependency Graph
Routes Explorer
- 컨트롤러별 API 엔드포인트를 조회할 수 있다.
- 각 엔드포인트별로 해당 컨트롤러가 실행되기 위해 어떤 과정을 거치는지 그래프로 표시된다.
그 외
초기 로딩 속도를 말하는 것 같은데, 백엔드 앱이 뜨는데까지 걸리는 시간을 보여주는거라면 그걸 어떻게 활용할지 머리 속에 잘 안 그려진다.
개선사항을 제안해준다. 왼쪽에는 전체 모듈 개수, 컨트롤러, 프로바이더 개수 등 통계가 나와있고, 우측에는 Devtools의 제안사항이 나와있다. 용도에 맞지 않는 선언, 의존관계의 복잡도, 한 컨트롤러 내에 너무 많은 엔드포인트가 있는지 등 다양하게 검사해줘서 코드 개선시 참고할 수 있을 것 같다.
이것보다 더 코드 레벨에서의 검토에 집중하는 sonarqube 라는 서비스도 있는데, Devtools는 보다 구조적인 면에 집중한 것 같다.
비용
기본적으로 '유료' 서비스이다.
개인이 이용하면 월 $5의 요금을 내야하고, 팀으로 사용하면 $50 ~ $90 의 비용을 지불해야 한다.
간단 후기 및 총평
Nest에서 가장 복잡하다고 생각했던 부분이 의존성 관리였다. 어떤 기준으로 모듈을 분리하고, 프로바이더별로 의존 관계는 어떻게 설정해야할 것인지. 이건 정답이 없고, 어떻게 구조를 짜야할지 계속 고민해서 나은 쪽으로 지향해 나가야 하는 것 같다. 사실 이건 설계의 문제라서 기술적으로 해결해주기는 어렵긴 하다.
다만 Devtools는 그 고민을 가능한 범위 내에서 최대한 해결할 수 있도록 support 해주려는 모습이 보였다. 복잡한 의존성 구조를 시각화해서 볼 수 있게 하고, 그걸 통해서 더 복잡한 비즈니스 요구사항을 풀어나갈 수 있도록 지원해주려 한 것 같다. 그리고 실제로 사용해보니 한 눈에 구조를 보고, 앞으로 어떻게 구조를 개선해나가야 할 지 머리 속에서 그림이 그려지긴 했다.
그래서 개인적으로는 첫 체험으로 지불한 $5에 만족했는데, 이걸 계속 쓸 것인가에 대한 질문에는 솔직히 잘 모르겠다. 분명 좋은 툴인데 유료로 활용하기에는 다소 부담스러운 감이 있다. 지금까지 Devtools 없이도 잘 개발해왔는데 비용을 태웠을 때 얼마나 생산성을 높여줄 것인가는 의문이다. 근본적으로 생산성을 높여주기 위한 툴이 아니라, 구조적으로 개선점을 조언하기 위한 정도에 그치는 것도 결정을 망설이는 요인 중 하나인 것 같다.
개인적으로는 1달정도는 결제해서 기존 Nest 프로젝트들에 한 번 쭉 적용시켜보고 어떤 구조인지 파악하고 개선사항들을 적용시켜보는 정도로 해보고 따로 연장하진 않을 것 같다. 앞으로 더 디벨롭해서 다양하고 유용한 기능들이 추가된다면 그 때는 생각이 바뀔까?
'Backend' 카테고리의 다른 글
[스터디] Redis 개념정리 & 기본 사용법 (0) | 2022.06.04 |
---|