Express vs NestJS

Jina Kim·2022년 9월 30일
1

NestJS

목록 보기
1/6
post-thumbnail
post-custom-banner

Node.js의 프레임워크

Node.js + Typescript + 프레임워크의 형태로 서비스 스펙이 정해졌다.
그중 프레임워크를 Express를 쓰느냐 NestJS를 쓰느냐 를 결정해야 한다.

express 기반에 추가 기능들을 더해 놓은 게 NestJS

기존에는 nodejs + express로 사용하고 있었다.

express는 npm으로 쉽게 설치 가능하고,
손쉽게 서버를 띄울 수 있으며
필요한 모듈들을 내 입맛에 맞게 npm으로 설치할 수 있다는 장점이 있다.

nestJS는 express에 비해 커뮤니티는 작지만,
미들웨어, IoC, CQRS 등 이미 많은 기능을 프레임워크 자체에 포함하고 있으며,
Typescript를 적극적으로 도입 및 지원한다는 장점이 있다.

Express 키워드🚝

1. nodejs 프레임워크 1위

가장 커뮤니티가 크고 문서도 많다.
구글링을 통한 레퍼런스 얻기 쉬움

2. 구조 자유 설계

nestJS와 달리 폴더를 마음대로 설계 가능하다.
각 개발자별 입맛에 맞게 아키텍쳐링이 가능(But, 내가 개발하지 않았으면 co-worker에게 물어봐야함)

3. 쉬운 라우팅

//express
app.use('/user', require('./userRouter'));

// nest.js
import { Module } from "@nestjs/common";
import { UsersController } from "./users.controller";
import { UsersService } from "./users.service";
//...

@Module({
  imports: [
    TypeOrmModule.forFeature([UsersRepository], DB_CONNECTION),
    S3ImageModule,
  ],
  providers: [UsersService, HttpService, ImageFileService],
  controllers: [UsersController],
})
export class UsersModule {}

출처: https://choseongho93.tistory.com/318 [TROLL:티스토리]

express는 단순하게 끝내는 라우팅을
nestJS는 모듈별로 라우팅 해야함

NestJS 키워드🐱

1. 정해진 구조

express가 개인적 취향 설계를 추구하는 반면,
nestJS는 정해진 구조가 있어서 프로젝트 구조 설계 속도가 빨라질 것이다.
물론 이 때문에 러닝커브가 있다. (그러나 공식 문서가 잘 되어있다고 한다. https://docs.nestjs.com/)
또한 기본적으로 마이크로서비스 아키텍처(MSA) 개발 스타일을 제공한다고 하니까
우리가 원하는 서비스 스펙에 적합하지 않을까 생각해본다.

2. Typescript 지원

express위에서도 typescript를 쓸 수 있지만 세팅하는 과정이 복잡.
nestjs에서는 쉽게 쓸 수 있다.
typescript 및 OOP (객체 지향 프로그래밍), FP (기능 프로그래밍), FRP (기능 반응성 프로그래밍) 요소를 결합. 효율성도 증가하고, 생산성도 높아진다.

3. swagger 문서 자동화

백엔드 개발자의 숙명.
API의 request, response parameter가 담긴 명세서를 수동으로 만드는건 굉장히 귀찮다.
수정사항이 있을 때도 특히!

$ yarn add @nestjs/swagger swagger-ui-express

swagger 모듈 설치 후

import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';

문서 상단에 요걸 달아주면 아주 쉽게 api 문서화가 끝남

결론

사실 어떤게 더 나은지는 고민을 해봐야할 것 같다.
express도 1년 밖에 안 써봐서, nestJS 써보고 싶기도 하고 ㅎ

근데 또 공식 문서 보다보니 구조가 꽤 복잡하더라....
끝나지 않는 스터디.. 언어 마스터의 길은 복잡하다..
당장 서비스를 시작해야해! 이러면 express가 간편.
우리는 좀더 큰 그림을 설계한다~ 이러면 nestJS가 좋을 것 같다.

참고 및 출처

  1. https://webaura.tistory.com/entry/NestJS-NestJS-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-Express-%EC%99%80%EC%9D%98-%EB%B9%84%EA%B5%90
  2. https://choseongho93.tistory.com/318
  3. https://velog.io/@kakasoo/Express%EB%A7%8C-%ED%95%98%EB%8B%A4%EA%B0%80-Nest%EB%A5%BC-%ED%95%98%EA%B3%A0-%EB%8A%90%EB%82%80-%EC%A0%90
  4. https://velog.io/@mhj6380/Nestjs-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EC%97%90-Swagger-%EB%8F%84%EC%9E%85%ED%95%98%EA%B8%B0
profile
Hello, World!
post-custom-banner

0개의 댓글