본문 바로가기

개발

Nest.js란? - Express.js를 놔두고 왜 Nest.js를 쓸까?

안녕하세요 Jiwon입니다.

 

오늘은 Nest.js에 대해서 살펴보겠습니다.

Nest.js의 로고. 놀랍게도 사자나 호랑이가 아닌 고양이다 ㅋㅋ

 

1. Nest.js란?

 

우선 Nestjs의 공식 사이트를 가보시면 이렇게 적혀있습니다

 

A progressive Node.js framework for building efficient, reliable and scalable server-side applications.

 

효율적이고 안정적이며 확장 가능한 서버 측 애플리케이션을 구축하기 위한 진보적인 Node.js 프레임워크입니다.

 

자, 이 문장만 보시면 와닿는 것도 별로 없고 추상적이죠

 

저는 기술을 볼 땐 해당 기술이 어떤 문제를 해결해주느냐? 에 초점을 두는 것이 좋다고 생각합니다.

 

또한 같은 맥락에서,

 

해당 기술의 철학을 주의 깊게 살펴보아야 한다고 생각합니다.

 

공식 문서에서 말하는 철학을 보시면

 

아니 여태 JavaScript가 프론트엔드와 백엔드 영역에 널리 사용되게 되면서 React, Vue, Angular와 같이 좋은 프레임워크나 라이브러리 같은 것들이 많이 생겨났는데, Architecture의 문제점에 관한 것만은 왜 제대로 해결하지 못할까?

 

라는 의문에서 출발했다고 합니다.

 

자 그럼, 아키텍처의 어떤 부분이 Nest.js 에서 해결이 되었을까요?

 

이것은 Node.js의 또 다른 프레임워크인 Express.js와의 비교로 살펴보겠습니다.

 

2. Nest.js vs Express.js

 

둘이 싸우면 누가 이겨? ㅋㅋ

 

Express.js는 웹 서버를 빠르게 구현하기 위해 개발 시 구조에 대한 자유도도 높습니다.

 

이것이 좋은 것이, 개발자들이 Express를 사용하면서 여러 툴, 기술, 미들웨어 등을 마음껏 선택할 수 있습니다.

 

하지만 단점이 있죠.

 

규모가 큰 프로덕트의 경우 많은 개발자들이 손을 대게 될 것입니다.

 

그럼 그 프로덕트의 구조는 많은 개발자들의 개성, 편의에 따라 수많은 종류가 생길 것이고,

 

이것이 통일성을 해치게 되어 어지러움이 유발될 수 있겠죠.

 

하지만 nestjs의 경우는 이런 문제를 개선했습니다. controller, service, module 이 각각 역할을 가지고 있습니다.

 

또한 특정한 디자인 패턴들이 있는 구조입니다. 이것은 장점이자 단점이 될 수 있겠죠

 

제한이 좀 생겼지만, 통일성이 생겼습니다.

 

프로덕트의 구조를 잡는 것은 수고가 들어가는 작업이기 때문에 이것이 개선된다는 것은 생산성이 향상된다는 말과 같습니다

 

그렇지만 앞서 살펴봤듯이, 장단점이 있다고 생각합니다.

 

저는 그래서 간단하게 보자면 이렇게 말할 수 있다고 생각합니다.

 

Express는 가볍고 간편하고 빠르게 비교적 간단한 웹을 위한 서버를 만들기 좋다.

 

Nestjs는 통일성 있고 거대한 프로젝트를 만들기 좋다.

 

3. 필자가 직접 사용해보고 느낀 Nest.js 다른 장점들

 

- 데코레이터(@)로 라우팅, 패러미터 받기 등등을 하는 것이 참 편하고 가독성이 좋다고 느낌

 

- 전반적으로 코드의 재사용성의 측면에서 참 좋다고 느낌:

CoreEntity, CoreOutput 등등의 클래스를 만들어 두고 다른 클래스들에 공통적으로 사용할 수 있어 간편

 

- 보시면 느끼시겠지만 공식 문서가 아주 친절하게 되어있고 세련됐습니다 ㅎㅎ

 

 

4. 마무리

 

혹시 틀린 내용이나 가르쳐주실 부분이 있으시면 댓글로 꼭 알려주세요!!저도 CS지식 박사가 되려고 이렇게 글쓰는 겁니다 ㅋㅋ

 

'개발' 카테고리의 다른 글

threejs 성능 최적화 방법  (0) 2021.07.19