- Express는 이미 많은 회사들이 채택하여 운용되고 있는 검증된 프레임워크.
- NestJS 역시 Express를 기본으로 채택하고 그 위에 여러 기능을 미리 구현해 놓은 것.
- 그렇다면 왜 NestJS를 선택해야 할까요?
Express VS NestJS
구분 | Express | NestJS |
유연함, 확장성 | - Express는 가볍게 테스트용 서버를 띄울수 있다. - 아이디어를 빠르게 검증하는 데에는 좋겠지만 단순하고 자유도가 높은 만큼 자기에게 맞는 라이브러리를 찾기 위해 발품을 팔아야 한다. - 보일러 플레이트를 미리 얹어 놓은 깃허브 리포지토리들이 있으니 이를 활용해도 좋다. |
- 미들웨어, IoC, CQRS 등 이미 많은 기능을 프레임워크 자체에 포함하고 있다. - 사용자는 문서를 보고 쉽게 따라할 수 있다. - 원하는 기능이 없다면 다른 라이브러리를 적용해서 사용하면 된다. |
Typescript 지원 | 추가 설정을 통해 사용가능 | - 기본 설정. - 바닐라 자바스크립트1로도 작성 가능. |
커뮤니티 | 가장 | 꾸준히 증가. |
😳 보일러 플레이트 = 바로 시작할 수 있는 템플릿 코드 환경 예. CRA이다.
- State of JS 2021 설문 조사 결과를 보면 아직 사용경험은 아직 저조.
- Express가 1위인 이유는 NestJS가 그러하듯 다른 프레임워크들이 Express를 기반으로 만들어진 것들이 있는 영향이 있다. 그만큼 인기가 높다는 뜻.
- Next.js와 Nuxt는 각각 React와 Vue.js로 만든 SSR(Server Side Rendering) 프레임워크이고,
- Gatsby는 정적 페이지 생성기이다.
- 서버 사이드 렌더링을 사용하면 SEO(Search Engine Optimization, 검색 엔진 최적화)에 유용하고 초기 로딩속도가 빠르다는 장점이 있다.
- 정적 페이지 생성기는 블로그와 같이 내용이 사용자 반응에 따라 바뀌지 않는 웹사이트를 쉽게 생성해 준다.
- Next.js, Gatsby가 인기가 높은 이유는 React 기반으로 만들어진 프레임워크이기 때문이다.
- 프론트엔드 프레임워크는 React의 인기가 매우 높기 때문에 React 유저들은 자연스럽게 React 기반으로 프레임워크를 선택하게 된다.
- 엄밀히 말해 Next.js, Gatsby, Nuxt는 모두 프론트엔드의 영역에 가깝고 순수 백엔드 프레임워크라고는 할 수 없다.
- 프레임워크가 해결하고자 하는 목적에 맞게 도입해서 함께 사용하면 좋은 프레임워크이다.
만족도
- NestJS 사용자들의 만족도는 다른 프레임워크에 비해 크게 차이가 나지 않는 것을 볼 수 있다.
- Express 보다, NestJS로 개발하는 것이 생산성이 더 좋고 모듈화가 편하다.

인지도
- 인기 있는 Express를 사용하는 것이 나은 선택일 수도 있지만 상용 제품을 만들기까지 시간이 오래 걸릴 수도 있다.
- NestJS는 백엔드 서버가 갖추어야 하는 많은 필수 기능을 프레임워크 내에 내장하고 있고 추가로 필요한 기능을 설치하고 적용하는 방법을 문서로 제공한다.
- 또한 DI, IoC를 채용하여 객체지향 프로그래밍과 모듈화를 쉽게 할 수 있다.
- Express를 사용한다면 이 모든 것들을 npm에서 찾아서 검토하는 과정이 필요하다. 필요한 기능들을 하나씩 검토하고 선택하는 노력도 무시할 수 없다.

Node.js 기반 웹 프레임워크가 갖춰야 할 필수 기능이라면 다음과 같은 것들이 있다.
- 최신 Ecma Script 지원
- Typescript (선택사항이나 사용 추세가 계속 늘어나고 있음)
- CORS
- HTTP 헤더 보안 (Express는 helmet을 사용)
- Configuration
- Interceptor
- Middleware
- Scheduling
- Logging
- Testing
- Swagger 문서화
- ORM
NestJS 깃허브에는 PR이 제출될 때마다 Express, Fastify와의 성능을 벤치마크해서 제시하고 있다.

NestJS에 Express와 Fastify를 적용했을 경우를 각각 구분하고 Express, Fastify 자체 성능도 측정한다.
측정 결과는 Express가 Fastify보다 느리고, NestJS에 각각을 적용하면 약간 더 성능이 떨어지는 것을 알 수 있다. 이는 NestJS가 기본 제공하는 프레임워크의 크기가 크기 때문이다.
하지만 순수 Express/Fastify로 서버를 개발하다 보면 필수로 요구하는 라이브러리들을 추가하고 되고 결국 NestJS에서 제공하는 기능들을 모두 구현한다고 했을 때 성능이 크게 차이가 나지는 않는다.
Express는 2019년 5월 26일 최근 4.17.2, 4.17.3 버전을 업데이트하였지만 그전까지 몇 년간 개발이 정체되어 있었다.
5.0을 준비하고 있기 때문일 수도 있고, 매우 안정적인 프레임워크라서 문제없이 운용되고 있는 것의 반증이라고 볼 수 있지만 최신 트렌드를 따라가지 못한다는 우려가 있는 것도 사실이다.
NestJS는 꾸준히 발전하고 있다. 2022년 3월에 version 8.4.0을 릴리즈하였고 깃허브를 통해 커뮤니케이션도 활발히 하고 있다.
출처 : wikidocs
'Frontend > Nest.js' 카테고리의 다른 글
NestJS : 형변환 (0) | 2023.01.09 |
---|---|
NestJS : 라우터 및 데코레이터 설명 (0) | 2023.01.09 |
NestJS : 아키텍처 (0) | 2023.01.09 |
Nuxt, Next, Nest 차이점 (0) | 2022.12.30 |
NestJS 소개 (0) | 2022.12.30 |