NestJs와 Express를 알아보자.

wonjun.Aden·2022년 10월 5일
1
post-thumbnail

신규 서비스 런칭을 위하여 이번엔 프레임워크를 알아보았다.
우선 기존의 서비스는 nodejs + express 였다. 일단 nodejs+expres는 많은 사람들이 사용하여 압도적인 1위를 하고 있다.
하지만 현재 우리의 기존 서비스는 nodejs + express 만 사용하였다. 이번 기회를 통하여 네카라쿠배당토야의 네라만 아직 사용하는지 확인 못한 nestJs와 express를 알아보도록 하겠다.

일단 두가지를 비교하기 전에 내가 먼저 고려해본점들을 나열해보겠다.

고민

  • nestJS를 우리가 꼭 써야하는 이유가 있나?
  • Typescript
  • MSA
  • 러닝커브
  • 개발자 시장의 Trend에 맞는 pool?
  • 써드파티 라이브러리와의 호환
  • 커뮤니티(검색이 쉬운가?)

우선 nestjs를 우리가 꼭 써야하는 이유가 있는것인가??
음...개인적으로 네카라쿠배당토야의 네라만 안쓰고 있는 nestjs... 써서 가고싶다 ㅋㅋㅋㅋ
하지만 아직 이걸 왜! 무조건! 아 이거다! 라는 이유는 없었다.
typescript는 런타임 에러 분석을 위해서도 도입하는 것이 옳다고 생각한다.

NestJS 소개

  • Nodejs에 기반을 둔 웹 API프레임워크로서 express 또는 Fastify 프레임워크를 wrapping하여 동작함.
  • Database, ORM, 설정, 유효성 검사 등 수많은 기능을 기본 제공함.
  • 필요한 라이브러리를 쉽게 설치하여 기능을 확장할 수 있는 nodejs 장점을 그대로 가지고 있음.
  • 모듈/컴포넌트 기반으로 프로그램을 작성하여 코드 재사용성을 높일 수 있음.

NestJS 프레임워크 특징

  • Typescript로 빌드되고 완벽하게 지원(type오류 사전 방지 가능)
  • 테스트 코드를 쉽게 작성할 수 있도록 구현되어 있음.(Jest를 기본 테스트 프레임워크로 제공)
  • Nestjs를 사용하면 확장 가능하며 유지 관리가 쉬운 서버 어플리케이션 개발 가능
  • OOP(객체지향프로그래밍), FP(함수형 프로그래밍) 및 FRP(함수형 반응형 프로그래밍) 요소를 결합.
  • Nestjs는 DI, IoC, 모듈을 통한 구조화 등의 기술을 통해 생산성이 높음.(spring framework와 유사)
  • express 또는 Fastify 프레임워크를 wrapping하여 동작함

NestJS 장단점

장점

  • Express에 비해 Framework단에서 구성해주는 것이 많음.
  • Express에 비해 코드 아키텍처가 정의되어 있는 프레임워크이기에 유지보수에 용이함.
  • Annotation 기반 프로젝트 구성이 가능하여 코드를 깔끔하고 가독성 높게 유지할 수 있음.
  • Di를 지원하여 OOP 코드를 구성하기에 좋음.
  • 서드파티와 결합이 좋음.

단점

  • 추상화가 되어 구현이 되긴 했지만 Express를 Wrapping하여 만들다보니 프로젝트가 좀 무거움.
  • 프레임워크에 대한 러닝커브가 spring framework를 접해보지 않았다면 높을 수 있음

Express VS NestJS

나의 생각

음... nestjs는 typescript가 기본적으로 설정되어 있고 기본적으로 코드아키텍처가 정의되어 있어서 MSA환경에서 코드 관리 및 유지보수하기 좋을 것이라고 생각한다. nestJs는 코드 아키텍처가 정의되어 있다는 것이 가장 큰 장점이라고 생각한다. 하지만 spring과 비슷하게 사용한다는 점에서 spring을 사용하지 않은 사람들에게는 러닝커브가 꽤 높을 것이라고 생각한다.
express도 별로 사용해보지 않아서 뭐가 더 신규 프로젝트에서 좋을지 감이 잘 안선다... 팀원분들과 많은 이야기를 해보고 싶다.
어떤 프레임워크를 쓸지는 조만간 포스팅하도록 하겠다.

참고자료
https://velog.io/@cm961115/NestJS-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0
https://medium.com/daangn/typescript%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-%EC%84%9C%EB%B9%84%EC%8A%A4%EA%B0%9C%EB%B0%9C-73877a741dbc
https://velog.io/@hshs0409/NestJS
https://wikidocs.net/148195
https://nemne.tistory.com/m/26

profile
아프리카의 BackEnd Developer 장원준입니다.

0개의 댓글