부트캠프

NEST.js 에 대한 정리

ohs020105 2025. 2. 11. 20:39

오늘은 전에도 사용했던 nest에 대해서 다시 공부하는 계기를 가지게 되어서 정리해보는 시간을 가져보겠다.

 


NEST란? 

NestJS는 NodeJS 기반의 백엔드 프레임워크 이다.

 

여기서 프레임워크란?

개발을 쉽게 할 수 있도록 제공되는 기본 구조 또는 재사용 가능한 코드와 라이브러리의 집합 이다.

express도 프레임워크고, NextJs도 프레임워크고, NestJS도 당연히 프레임 워크이다.

 

그렇담 왜? NestJS를 사용하는걸까?

1. 구조적이고 체계적인 아키텍쳐

 => '컨트롤러' , '서비스' , '레파지토리'

2. 대규모 프로젝트에서도 유지보수성이 뛰어남

=> 의존성을 주입하는 방식이라 테스트도 쉽고 여러가지 기능이 다 들어있어서 그 틀에서 벗어나지 않아도 되지 모두가 이해하기 쉽다.

3. 현재 기업(스타트업 포함) 에서 적극적으로 사용중!

=> 최신 기술도 잘 통합되고 구조화도 쉬워서 인수인계도 쉽고, 빠르게 시작할 수 있으니 좋다.

 

그러면 Express로도 가능하지 않나?

좋은 질문이다.

근데 Express를 써본 사람은 알겠지만 Express에서는 내가 원하는대로 개발을 진행하기가 쉽다.

이걸 ' 자유도가 높다 ' 라고 하는데 

자유도가 높으면 처음에는 쉬워보이지만 규모가 커질수록 구조가 복잡해지고 유지보수 어렵다.

마치 아무런 가이드 없이 게임을 하면 처음엔 신기하고 재미있어 보여도 장기적으로 캐릭터를 잘 육성하기는 어렵다...

하지만 가이드나 다른 영상같은걸 보면서 잘 배우면? 처음에는 어려워보여도 장기적으로 좋은 캐릭터를 잘 육성할 수 있는 것과 마찬가지다.

 


기본 개념 및 아키텍쳐

1. Module (모듈)

- 블록처럼 기능을 나누는 개념

 

NestJS 프로젝트는 여러 개의 모듈로 구성된다.

그리고 기능 별로 독립적인 모듈로 분리해서 관리한다. 

예: AppModule, UserModule, AuthModule, PayModule 등

각각의 모듈에는 컨트롤러, 서비스, 레포지토리 등이 포함된다.

 

각각의 모듈을 개발하면 그 다음에는 각각의 모듈을 '레고'처럼 조립하면 된다.

예를 들어 User 블록, 인증 블록, 주문 블록을 연결해서 사용할 수 있다.

 

아래 코드를 보면 PayModule 에서 Auth,User 모듈을 가져와서 쓰고 있다.

@Module({
  imports: [AuthModule, UserModule], // 다른 모듈들을 포함
  controllers: [AppController], // 이 모듈에서 사용할 컨트롤러
  providers: [AppService], // 이 모듈에서 사용할 서비스
})
export class PayModule {}

 

이걸 그래프로 보면 다음과 같다.

 

만약 유저 정보에 대한 수정이 필요하다면 어떻게 하는게 좋을까?

그렇담 간단하게 생각해서 그냥 UserModule을 수정하면 된다.

 

 

'부트캠프' 카테고리의 다른 글

class - transfomer 사용법 ( NestJS )  (0) 2025.02.13
69일차 TIL ( 면접 카타 3일차 )  (0) 2025.02.12
68일차 TIL (면접카타 2일차)  (0) 2025.02.11
67일차 TIL (면접카타 1일차)  (0) 2025.02.10
WIL  (0) 2025.02.07