NestJS는 플랫폼으로 Express와 Fastify를 지원한다.
그럼 당연히 떠오르는 질문은 둘 중에 무엇을 쓸까?
일단 아무 설정도 하지 않으면 디폴트는 Express로 돌아간다.
NestJS의 공식 문서는 다음과 같이 두 플랫폼을 묘사한다.
Express | Fastify |
Well-known | High Performance |
Battle Tested | Low Overhead |
Production Ready | Maximum Efficiency & Speed |
대충 요약하자면...
- Express: 활성화된 커뮤니티에 의해 실서비스 안정성이 검증된 안정적인 선택지
- Fastify: 퍼포먼스! 퍼포먼스! 퍼포먼스!
약간 도전적인 선택이 가능한 개발자라면 Fastify에 꽂힐 것이고,
실서비스 구축을 준비중인 개발자라면 Express에 더 끌릴 것이다.
창업 아이템을 개발하면서 처음에 Fastify로 설정을 했는데, 그 이유는 다음과 같다.
- 백엔드에 복잡한 기능을 넣을 계획이 없다.
- 그럼 퍼포먼스 위주로 가면 서버 비용을 조금이라도 덜 낼 수 있다!!!
- Fastify가 그렇게 빠르다는데 써보고 싶다!!!
- 플랫폼 의존적 코드가 없다면 코드 몇 줄로 Express로 돌아갈 수 있다. (중요)
NestJS에 플랫폼 Specific한 코드를 넣는 것은 지양하는게 좋다고 생각한다.
- 플랫폼 의존적인 코드가 들어가면 NestJS를 쓰는 의미가 희미해진다.
- 문제가 발생했을 때 고민할 포인트가 늘어난다.
현재는 Express로 플랫폼을 되돌려둔 상태인데, 그 이유는 파일 업로드 때문이다.
아래는 공식 문서의 File upload 항목인데, 상단에 신경쓰이는 warning이 있다.
WARNING Multer cannot process data which is not in the supported multipart format (multipart/form-data). Also, note that this package is not compatible with the FastifyAdapter. |
파일 업로드에 사용하는 Multer 패키지가 Fastify는 지원하지 않는다!
근데 예제는 Multer를 사용한다!
나는 자바스크립트도 타입스크립트도 익숙하지 않은데 시간도 없다.
...파일 업로드를 위해 또 헤매는 건 좀 아닌데...
그래서 결국 Express로 방향을 전환했다. (main.ts에서 2~3줄 정도 바꾸고 import 지우면 끝)
Express와 Fastify 중에 고민하고 있다면, 아래와 같이 권하고 싶다.
- 회사 업무라면 일단 Express로 개발하자.
- Node.js로 백엔드 개발을 지겨울 정도로 해본 후에 Fastify를 고려하자.
새로운 기술은 언제나 매력적이고 멋지지만, 리스크가 많기 때문에 높은 숙련도를 요구한다.
'개발공부 > NestJS' 카테고리의 다른 글
[NestJS] Controller로 Request를 받아보자! (0) | 2021.09.11 |
---|---|
[NestJS] Modules & Controllers & Providers (3) (0) | 2021.09.11 |
[NestJS] Modules & Controllers & Providers (2) (0) | 2021.09.11 |
[NestJS] Modules & Controllers & Providers (1) (0) | 2021.09.10 |
NestJS 설치 (0) | 2021.04.23 |