Node.js를 기반으로 하는 서버 프레임워크 NestJS를 배우다.
1. NestJS 란
Nest.js는 Node.js를 기반으로 한 서버 개발을 위한 프레임워크이다. 내부적으로는 Express와 Fastify을 선택해서 사용할 수 있다. Express와 달리 정형화된 아키텍처를 지니고 있다. Controller, Service 등의 개념이 있다. 정해진 아키텍처가 없다면 서로 다른 개발자마다 다른 구조로 작성하게 된다. 다른 사람의 코드를 분석할 때 아키텍처부터 파악해야 하는 번거로움이 있다.
Nest.js는 TypeScript 언어를 기반으로 작성되어 있다. 따라서 TypeScript를 배우고 있는 현재의 나의 상황에 맞춰 배우기 적합하다고 판단하여 배워야겠다고 생각했다. 그리고 TypeScript 기반이라 개발 단계에서 버그를 사전에 방지하고, 코드 재사용 및 유지 보수성을 높여준다. 정해진 아키텍쳐가 있기 때문에 그것에 맞춰 개발해야 하고, 이렇게 개발된 프로젝트는 여러 개발자 간에 협업하기 좋게 통일되어 있다.
2. NestJS vs Express
NestJS는 모듈 구조가 정의되어 있고 쉽게 사용할 수 있다. Express는 모듈 구조를 직접 정의하여 개발해야 한다. Express가 더 유연하고 자유로운 구조를 가지고 있지만, 모듈 측면에선 NestJS가 더 적합하다. NestJS가 서비스 확장 및 유지 보수에 더욱 유리한 장점을 갖는 것이다.
NestJS는 TypeScript를 기본적으로 지원하지만 Express는 JavaScript만 지원한다. TypeScript로 정적 타입을 추가하여 개발자가 더욱 안정적이고 효율적인 코드를 작성하고 유지 보수성을 향상한다. 또한 개발자 간 협업하는 데에 더욱 적합하여 팀 프로젝트에서 좋은 효과를 발휘할 수 있다.
NestJS는 필수적인 라이브러리 및 편의 기능을 기본적으로 포함하고 있다. HTTP, WebSocket, Middle Ware 등 서버 동작에 필수적인 기능을 포함하고 있다.
NestJS의 장점도 있지만 단점도 있다.
NestJS는 Express에 비해 상대적으로 배우기 어렵다. 미리 정의된 아키텍처에 대한 지식을 학습해야 하기 때문이다.
또한, NestJS는 아키텍처를 추상화하여 특정 계층을 필수로 사용하도록 강제하고 있다. 계층 간 호출 및 데이터 처리 과정이 추가적으로 발생하기에 약간의 오버헤드가 발생 할 수 있다. 그렇기에 간단한 기능을 제공하는 작은 서버나, 통신사 서버와 같이 서버 성능을 최대한으로 사용해야 하는 서비스라면 NestJS는 적절하지 않을 수 있다. 하지만 계층을 나누어 아키텍쳐를 관리하는 작업은 유지보수를 효과적으로 할 수 있기 때문에 관리 측면에서 필요한 작업이다. 프로젝트의 특성을 파악하고 적절한 프레임워크를 선택하는 것이 중요하다.
'Back-End > NestJS' 카테고리의 다른 글
[NestJS] DTO 만들기 (0) | 2024.01.09 |
---|---|
[NestJS] 게시물 생성하는 Service, Controller 생성 (Request, Response) (0) | 2024.01.08 |
[NestJS] model 생성하기 (게시물) (0) | 2024.01.07 |
[NestJS] Service 생성 (0) | 2024.01.05 |
[NestJS] NestJS 시작과 아키텍처 구조, 프로바이더와 서비스란 (0) | 2024.01.04 |