자바공화국 배민도 Nest.js를 사내 공식 개발 프레임웍으로 지정했다는데..
장점
- 공식 문서 깔끔 (https://docs.nestjs.com/)
- DI, IoC, 데코레이터 등 OOP 개발에 용이
- 기능별 모듈화를 통한 직관적인 개발, 확장 가능성, 유지보수 용이한 개발 가능. -> 생산성 향상
- Typescript 기반으로 컴파일 오류 방지, 테스트 코드 작성에 용이하므로 TDD를 쉽게 적용 가능. (Express에서의 ts 세팅보다 매우 간단)
- Spring 과 유사한 UX로 추후 이벤트 플랫폼 개선시 유사한 아키텍처 구조 사용 가능.
- 아주 간단히 Swagger 초기 세팅으로 코드 수정시 자동 반영 (https://jhyeok.com/nestjs-swagger/)
- Webpack HMR로 필요한 부분만 비동기 핫 리로드 지원.
- Node Http 프레임워크 선택가능 (express, fasify ..)
단점
- 처음 접하면 러닝커브가 높을 수 있다.
- Express에 비해 작은 생태계, 낮은 점유율 (이지만 바짝 쫓아옴 2023.04 기준 Express 6만, Nest 5.5만 스타 - https://github.com/VanoDevium/node-framework-stars)
와 이제 역전함~!
- 기획전 프론트에서 직접적인 DB 접근을 하지 않기에 ORM 사용 등에 제한적
- 동일한 기능을 위한 코드가 express보다 길다.
결론
프로젝트 성격에 따라 취사선택 해야 한다.
유연하고 확장성이 높은 Express는 작은 규모, 적은 기능의 어플리케이션이 적합하다.
반대로 Enterprise급, 여러 개발자가 빈번하게 기능 개발 등이 필요할 땐 Nest.js가 적합해보인다.
그러나 개인적으로.. 굳이 Nest.js 쓸 필요 있을까? 스타트업의 기술스택으로는 적합할 수도 있겠다. 초기 개발자가 적을 때 프/백 같이 할 수 있는 js/ts로 개발할 수 있으니. 근데 nest.js는 인력 풀이 좁아서 회사가 성장함에 따라 spring으로 바꾸는게 국룰이라 생각한다.
ChatGPT 피셜 :
Q) Nest.js 에서의 디버깅은 어렵다?!
A) 주로 아키텍처 및 디자인 철학의 차이로 인해 Express에 비해 Nest.js에서 디버깅이 더 어려울 수 있습니다. 다음은 Nest.js에서 디버깅이 더 어려운 것으로 간주될 수 있는 몇 가지 이유입니다.
- 추상화 계층: Nest.js는 데코레이터, 모듈 및 종속성 주입과 같은 추가 추상화 계층을 도입합니다. 이러한 추상화는 응용 프로그램 구축에 대한 체계적이고 조직적인 접근 방식을 제공하지만 오류를 추적하고 디버깅할 때 응용 프로그램의 흐름을 이해하기 어렵게 만들 수 있습니다.
- 복잡성: Nest.js는 프레임워크를 처음 사용하는 개발자가 탐색하고 이해하기 더 어려울 수 있는 더 복잡한 아키텍처를 가지고 있습니다. 이로 인해 학습 곡선이 길어지고 디버깅 중에 문제의 근본 원인을 찾는 것이 더 어려워질 수 있습니다.
- 스택 추적: 추가 추상화 및 기능으로 인해 Nest.js의 스택 추적은 때때로 Express와 같은 단순한 프레임워크에 비해 해석하기 어려울 수 있습니다. 이로 인해 오류의 원인을 정확히 찾아내기가 더 어려워질 수 있습니다.
- 툴링: Nest.js 에코시스템이 성장하는 동안 더 오래 사용되어 더 큰 커뮤니티가 있는 Express와 동일한 수준의 성숙한 디버깅 및 프로파일링 툴이 아직 없을 수 있습니다.
즉, Nest.js의 디버깅은 본질적으로 Express보다 어렵지 않습니다. 문제는 주로 프레임워크 설계의 차이와 Nest.js에서 도입한 개념에 대한 개발자의 친숙도에서 발생합니다. 개발자가 Nest.js에 더 익숙해지면 시간이 지남에 따라 디버깅이 더 쉬워집니다. 또한 Nest.js는 디버깅 프로세스 중에 개발자를 지원할 수 있는 훌륭한 문서 및 도구 지원을 제공합니다.
- Spring 과의 비교 https://blog.naver.com/PostView.naver?blogId=biud436&logNo=222611201210&categoryNo=201&proxyReferer=
<참고>
- https://blog.logrocket.com/nestjs-vs-express-js/
- https://velog.io/@leo3179/Nest.js-%EB%A6%AC%EB%B7%B0
- https://velog.io/@cm961115/NestJS-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0
- https://choseongho93.tistory.com/318
'Back-end' 카테고리의 다른 글
실시간 게시글 추천 초간단 구현 (0) | 2024.10.23 |
---|---|
Protobuf와 Map Struct 친해지길 바래 (0) | 2024.10.15 |
[Redis] 나야 조회수 (3) | 2024.10.15 |
[Redis] Redis 데이터 저장 근데 protobuf를 곁들인 (3) | 2024.10.14 |
[gRPC] Armeria + gRPC 띄워보기 (7) | 2024.10.07 |