2023년 1월 7일
Express가 좋을까, NestJS가 좋을까
NestJS의 장점
Node.js의 유연함을 그대로 가져가면서도 프레임워크 내에 유용한 기술을 이미 다수 구현
- NestJS는 Node.js에 기반을 둔 웹 API 프레임워크로서 Express 또는 Fastify 프레임워크를 래핑하여 동작
- Express와 Fastify 모두 Node.js를 쉽게 사용하기 위해 만들어진 프레임워크
- NestJS는 기본 설치 시 Express를 사용
- Express가 가장 널리 사용되고 있고 수많은 미들웨어가 NestJS와 호환되기 때문
Node.js vs NestJS
- Node.js
- 손쉬운 사용
- 뛰어난 확장성
- But, 과도한 유연함으로 인해 결과물 소프트웨어의 품질이 일정 X
- 알맞은 라이브러리를 찾기 위해 사용자가 많은 시간을 할애해야 함
- NestJS
- 데이터베이스, 객체 관계 매핑(ORM), 설정(configuration), 유효성 검사 등 수많은 기능을 기본 제공
- 필요한 라이브러리를 쉽게 설치하여 기능을 확장할 수 있는 Node.js 장점은 그대로 가짐
NestJS 특징
- 모듈/컴포넌트 기반으로 프로그램을 작성함으로써 재사용성 높임
- 앵귤러(Angular)로부터 영향을 많이 받음
- 제어 반전(IoC), 의존성 주입(DI), 관점 지향 프로그래밍(AOP) 같은 객체 지향 개념을 도입
- 프로그래밍 언어는 타입스크립트를 기본으로 채택
- 웹 프레임워크가 갖춰야 할 필수 기능을 거의 다 내장하고 있음
1. 최신 ECMA 스크립트 지원2. 타입스크립트3. CQRS4. HTTP 헤더 보안 (Express는 helmet을 사용)5. 편리한 설정6. 인터셉터7. 다양한 미들웨어8. 스케줄링9. 로깅10. 테스팅11. 스웨거(Swagger) 문서화12. ORM
Express가 좋을까, NestJS가 좋을까
- Express는 이미 많은 회사가 채택하여 운용되고 있는 검증된 프레임워크
- NestJS 역시 Express를 기본으로 채택하고 그 위에 여러 기능을 미리 구현해놓은 것
구분 | Express | NestJS |
유연함/확장성 | - 가볍게 테스트용 서버를 띄울 수 있다. - 아이디어를 빠르게 검증하는 데에 좋다. - 단순하고 자유도가 높다. - 자기에게 맞는 라이브러리를 찾기 위해 발품을 팔아야 한다. | - 미들웨어, IoC, CQRS 등 이미 많은 기능을 프레임워크 자체에 포함돼있다. - 문서를 보고 쉽게 따라할 수 있다. - 원하는 기능이 없다면 다른 라이브러리를 적용해서 사용하면 된다. |
타입스크립트 지원 | 추가 설정 사용 가능 | 기본 설정 (바닐라 자바스크립트로도 작성 가능) |
커뮤니티 | 가장 크다 | 꾸준히 증가 중 |
Reference
[책] nestjs로 배우는 백엔드 프로그래밍(한용재 저)
