NestJS 소개

HyunSe·2021년 2월 26일
5

NestJS

목록 보기
1/3
post-thumbnail

NestJS란?

NestJS 공식 홈페이지에서는 NestJS를 efficient, scalable한 프레임워크라고 소개하고 있다.

전자는 충분히 설명하고 넘어갈 수 있지만, 후자는 대충이라도 설명할 수 없을 것 같아 찾아보기로 했다.

scalable이란?

잠시 scalable에 대해서 짚고 넘어가 보자.
scalable에 대해서 나도 정확히 설명할 수 없는 것을 깨닫고 이것저것 찾아보고 글을 적는다...
scalable이란 웹 애플리케이션이 'scalable 하다'라는 말은 사용자 수의 증감에 따라 애플리케이션이 멈추거나 성능이 크게 떨어지는 일이 없다는 뜻으로 쓰이는 경우가 많습니다. 그렇다면 '확장성이 있다.' 정도로 번역할 수 있을 것이다.

간단히 말하면, 많은 사용자에게서도 잘 돌아갈 뿐만 아니라, 사용자 수가 적으면 그만큼 서버 자원을 아낄 수 있어야 scalability가 있다고 할 수 있습니다 scalability는 대형 시스템에서는 대형 시스템에 맞게, 소형 시스템에서는 소형 시스템에 맞게 돌아갈 수 있는 능력이라는 의미까지 포괄합니다.

즉 설치 상황이나 운영 상황에 따라 애플리케이션의 규모가 동적으로 변할 수 있는 능력이 scalability이다. 그래서 '규모 가변성'이라는 말로 표현하는 것 같다.

결국 NestJS는 효율적이면서, 규모 가변성을 지닌 NodeJS 프레임워크인 것이다.

NestJS의 장점

내부적으로는 Nest는 Express와 같은 강력한 HTTP Server 프레임워크를 사용하며
원한다면 Fastify도 사용할 수 있도록 구성할 수 있다.

또한 전적으로 TypeScript를 지원하고(JS 사용도 가능), OOP , 함수형 프로그래밍, 함수 반응형 프로그래밍의 일부 요소도 사용한다.

NodeJS의경우 수많은 라이브러리와 툴 들이 존재하지만, 아키텍처의 주요 문제를 효과적으로 해결한 라이브러리가 없다. NodeJS의 경우는 초반에 개발자가 개발을 시작할 때 0부터 시작해야 한다. (ex. 폴더구조)

NestJS는 기업에 큰 중점을 두는데, 그 이유는 이 프레임워크가 아주 좋은 아키텍처와 구조로 되어 있고 기업의 프로젝트의 적합하기 때문이다. 아주 좋은 아키텍처와 구조를 가진다는 것은 많은 개발자가 협업하면서 유지보수가 쉽다는 것을 뜻한다

NestJS는 효율적이고, 규모 가변적이며, 테스팅 가능하고, 유지 보수가 편하다.

NestJS의 단점

아무래도 아키텍처와 구조가 어느 정도 정해져 있다 보니 러닝 커브가 있는 편이다.
물론 Spring을 이전에 쓰시던 개발자분들에게는 그리 러닝 커브가 높지 않지만
Node, Django, RubyOnRails를 사용하시던 개발자분들에게는 시작이 고비일 수 있다.
아직은 한국에서는 그렇게 많이 사용되고 있지 않기 때문에 문서가 그렇게 많지는 않지만
공식문서가 잘 되어 있고 영어 문서는 점점 늘어나는 추세이기 때문에 시간이 해결해 줄 문제이다.

NestJS에 대한 개인적인 생각

NestJS를 사이드 프로젝트로 한 달 정도 사용해보면서 쓰는 개인적인 생각이다.

나도 Express(Node)와 Flask만 사용해 본 상태에서 NestJS를 처음 사용해보았고
사용한 스택은 NestJS + TypeORM + GraphQL 을 이용하였다.
그전에는 Express를 대부분 사용했기 때문에 나 혼자 구조를 결정하고 코드의 구조가
각양각색으로 펼쳐지는데 NestJS는 이러한 점을 단번에 해결해주기 때문에 너무 좋은 것 같다.
물론 하나로 통일되는 것은 아니지만...

공식문서가 아직은 한글화된 것이 없지만 친절한 편이기 때문에 영어를 아예 모르는 사람이 아니라면 기본적으로 필요한 부분은 모두 공식문서에서 얻을 수 있다.

또한 NestJS에서 Jest를 이용한 unit test와 e2e test를 지원해주기 때문에 테스팅하기도 편하다.
물론 아직 사이드 프로젝트의 테스트를 다 진행하지 못했지만.... 채워나가는 맛으로 진행하고 있다.

처음으로 백엔드 개발을 접하시는 분에게는 추천하지 않지만 Node 사용 경험이 있고 새로운 백엔드 프레임워크를 찾아보시는 분에게는 강추!!

NestJS 시작하기

NestJS를 시작하기 위해서는 global로 @nestjs/cli를 설치해주고 사용하면 된다.
global로 설치하는 이유는 어느 프로젝트에서나 Nest Cli를 쉽게 사용하기 위함이다.

npm i -g @nestjs/cli

다음 글에서는 NestJS의 구조와 사용법을 다룰 것이다.

profile
FrontEnd Dev

2개의 댓글

comment-user-thumbnail
2021년 2월 26일

매우 유용한 글이네요! 이해가 쏙쏙 되었어요. 감사합니당:D

답글 달기
comment-user-thumbnail
2021년 12월 30일

잘 읽었습니다! 혹시 참고해서 글을 작성해도 될까요!?

답글 달기