1달 프로젝트에서의 NestJS 사용후기

주형(Jureamer)·2022년 3월 20일
0

서문

(2022. 2 ~ 2022. 3) 한달 간 진행했던 코드스테이츠 파이널 프로젝트에서 백엔드에서 NestJS와 TypeORM을 사용하기로 합의했다.

처음엔 팀장님이 먼저 추천을 하셨고 나를 포함한 다른 팀원이 OK하여 공부 후 결정하기로 했다.

그리고 주말 간의 짧은 공부를 통해 NestJS에 대한 장단점, 구조 등을 습득한 후 프로젝트에 본격적으로 도입하기 시작했다.


NestJS란?

NestJS란 효율적이고 확장가능한 nodeJS기반의 서버 사이드 애플리케이션 프레임워크다. 공식문서


NestJS의 장점

1. Typescript 적극적 도입으로 인한 안정성

NestJS는 Typescript를 적극 도입 및 지원하고 있으며 @(데코레이션) 등을 통해 직관적이고 가독성이 좋은 코드를 작성할 수 있었다.

Typescript와 TypeORM과의 궁합이 좋기 때문에 Typescript를 도입한다면 적극 추천한다!




2. 모듈화와 의존성 주입을 통한 아키텍쳐 안정성

이 부분이 제일 큰 장점인 것 같다.

Controller, Service, Module로 나누어지는 구성과 의존성주입(DI, Dependency Injection)을 통해 아키텍쳐를 깔끔히 구성하고 관리할 수 있다.

express의 자유도가 장점이라면, 반대로 NestJS는 이런 아키텍쳐 구조에 대한 강점이 확실히 살아있기 때문에
대규모 프로젝트 등 확장 가능한 프로젝트를 고려 했을 때 이 장점을 더욱 살릴 수 있다.

express를 사용해 팀 프로젝트를 해보진 않았지만 팀원들의 경험담과 여러 글들을 살펴보아도 아키텍쳐가 명확하다는 것은 커뮤니케이션 비용을 줄일 수 있는 장점이 있다.

그리고 NestJS는 경험상 express만 사용할 때보다는 많은 라이브러리와 프로젝트를 구조화한 문서를 갖고 있는 것과 같은 효과를 줬던 것 같다.




3. 느슨한 결합을 통한 높은 확장성과 테스트 가능성

이 부분은 이번 프로젝트에서 직접 해보며 깨달았던 부분은 아니고,
2번과 같은 구조의 모듈화를 통한 장점이 연결되는 부분이다.

DI를 통해 모듈을 쉽게 Import할 수 있고 테스트 시에 정확히 어느 부분에 오류가 났는 지 알 수 있는 가능성을 높인 다는 것 같다.

Nest CLI를 통해 모듈을 만들어보면 spec.ts라는 unit test가 가능한 파일이 자동으로 같이 생성된다.

이 부분은 리팩토링 시 각 기능마다 단위테스트를 추가함으로써 한 번 더 자세히 살펴 볼 예정이다.


NestJS 사용후기

도입하기 전부터 express 비교하여 장점이 많은 글들을 많이 봐와서 반신반의하며 프로젝트를 진행했었다.

프로젝트를 다 마치고 돌이켜보니 NestJS를 도입하기 정말 잘했다는 생각이 든다.

프로젝트를 진행하면서도 팀원 모두 NestJS를 도입하기 잘했다고 입을 모았으니 말이다.

초반에 공부하면서 디렉토리를 만들고 API를 짜기 시작할 때는 기존 express와 nodeJS와 비교했을 때 많은 시간이 들었던 것 사실이나,

한 번 속도가 붙기 시작하니 훨씬 더 간편하고 장점이 많은 친구였다.

기술부채라는 말이 왜 생기고, 계속 좋은 프레임워크, 라이브러리들이 나오는 이유를 알 것 같았다.

개발자는 귀찮은 걸 싫어하기 때문에 효율화를 위해 최선을 다 한다는 것.

나도 어떤 코드가 더 좋은 코드인지 효율적인지, 리팩토링에도 신경쓰는 개발자가 되고싶다.


Reference

profile
작게라도 꾸준히 성장하는게 목표입니다.

0개의 댓글