오늘은 전에도 사용했던 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 |