Nest.js를 선택하게 된 과정

Junyoung Byun (그리즈만)·2022년 10월 5일
1
post-thumbnail

우리 팀은 node.js로 백엔드 개발을 하고 있다.
기존엔 실장님이 node.js project best practice로 검색해서 node.js의 베스트 구조로 만든게 현재 구조라고 한다.
서비스 규모, 프로젝트 일정, MSA 구조 등 여러가지를 생각해서 선택한 방향일 것이고,
그래서 커뮤니티도 크고 금방 세팅이 가능한 express를 선택하지 않으셨을까 싶다.

이번에 새로 프로젝트를 다시 시작하게 되면서 아덴이 Nest.js를 제안했다.
긴지와 아덴에게 Nest.js에 대해 조사해달라고 요청했고 나도 마찬가지로 조사를 했다.
그 결과를 취합해서 글을 쓰려 한다.

다른 회사는?

우선 다른 회사에선 Nest.js를 얼마나 쓰고 있는지 검색을 해봤다.
네카라쿠배당토직야 채용공고를 일단 다 뒤져봤다.

우아한형제들
[Tech] 배민스토어서비스실 배민스토어 웹 프론트개발팀 프론트엔드 개발자 모집
[Tech] 기술고도화팀 NestJS 백엔드 개발자 모집

카카오
카카오의 사회공헌 서비스를 만들어갈 서버∙백엔드 개발자 모집

직방
직방 서비스 DevOps 팀 리드
부동산데이터 서비스 개발자(경력 5년 이상)
호갱노노 서비스 백엔드 Sr. 개발자 (8년차 이상)

야놀자
Back-end Node.js 개발자
Cloud Kiosk실 Back-end Node.js 개발자

토스
Node.js Developer (토스증권)
Node.js Developer (토스뱅크)
Node.js Developer (토스페이먼츠)

당근마켓 (채용공고에는 없어서 블로그로 대체한다.)
TypeScript를 활용한 서비스개발

유명 개발 회사들이 node.js 채용공고에 Nest.js를 뽑고 있었다.
express를 아직 뽑고 있긴해도 Nest.js를 우대하는 데도 있어서 대세구나라는 느낌을 받았다.

그래서 실제 사용 통계는?

남들이 사람을 많이 뽑는다고 해도 실제로 사용하는 개발자들이 얼마나 되는지 확인하는 과정은 필요하다.
커뮤니티도 중요하기 때문이다.
커뮤니티에 레퍼런스를 참고하면 도움이 될 때가 많고 이슈가 발생했을 때 도움을 받을 수도 있다.

근데 Nest.js는 커뮤니티가 없더라.. ㅠ
github에 issue가 가장 활발한 것 같던데 걱정이 된다.
일단 아래에 사용 통계 리서치 해봤다.

NPM
https://www.npmjs.com/package/express
https://www.npmjs.com/package/@nestjs/core

NPM Charts

https://npmcharts.com/compare/express,@nestjs/core?interval=30&log=false

Google Trends

https://trends.google.com/trends/explore?cat=13&date=today%205-y&q=node%20express,node%20nest

github

https://github.com/expressjs/express
https://github.com/nestjs/nest

예상보다 이용자 수 차이가 많이 났다.
express가 오래 되어서 누적횟수 차이가 많이 나는건 어쩔 수 없는 것이지만 현재 이용자 수 차이도 아직은 많이 부족해 보인다.
물론 꾸준히 새로운 버전이 나오고 있고 사용자 수도 늘고 있다.
하지만 이 자료로는 위에 Nest.js를 써야한다고 설득하기 어렵겠다는 생각이 들었다.

Nest.js의 특징

우리가 지금 원하는 항목에 대해 생각해 봤다.

  1. 이전에 type 이슈가 있어서 이번엔 무조건 typescript로 가기로 했다.
  2. 이번엔 제대로 된 MSA 구조를 만들 생각이다.
  3. 모두가 동일한 구조로 코드를 일원화 시키고 싶었다. (자율성을 줄이는 방향)

이걸 다시 생각해 봤을 때, Nest.js는 우리에게 잘 맞는다는 결론을 낼 수 있었다.

우선 Nest.js는 typescript가 기본 설정이다.
그리고 모듈화 및 계층적으로 나뉘어져 있어서 이미 MSA를 구현하기에 좋은 구조로 되어 있다고 한다.
이미 아키텍쳐가 잡혀있기 때문인데 express는 자율성이 높아서 우리가 아키텍쳐를 잡아야 하는 문제가 있었다.
하지만 우린 자율성을 줄이는 방향을 원했기 때문에 이런 면에서 Nest.js가 필요하다고 생각했다.

그 밖에도 여러가지 특징이 있다.
모듈이 이미 대부분 설치가 되어 있다는 점. 물론 그만큼 무겁다는 거.
Java 프레임워크인 Spring과 구조가 비슷하여 Spring 사용자는 금방 적응한다고 하더라. 하지만 우린 Spring을 안 써봐서 고단한 러닝커브가 예상된다.

학습 방법

커뮤니티가 부족하고 러닝커브도 예상 되기에 학습 방법에 대해서도 리서치를 해봤다.

공식 문서
https://docs.nestjs.com/

너투브 영상
https://youtu.be/3JminDpCJNE


NestJS로 배우는 백엔드 프로그래밍

블로그
Nestjs 블로그 만들기
NestJS 시작하기
nestjs

공식 문서가 영어라서 그렇지 잘 나와 있는 편이다.
영상이나 책도 마찬가지이고 문제는 트러블슈팅인데 이건 개발을 좀 해보면서 직접 몸으로 부딪혀봐야 알 것 같다.
일단 아덴에게 간단하게 crud 정도 기능만 구현해 달라고 요청해놓았다.
코드 보면서 러닝커브와 MSA 구조, 그리고 코딩규칙에 대해 논의해 봐야겠다.

참고 문서

견고한 node.js 프로젝트 설계하기
우리가 NestJS를 사용해야하는 이유
NestJs와 Express를 알아보자.
Express vs NestJS

profile
상수보다는 변수같이!

0개의 댓글