Nest.js 기본 아키텍처 살펴보기
- 아래는 참고용 Request Lifecycle 아키텍처 그림이다.
- Controller, Service, Repository 가 요청 로직을 실제로 처리하는 부분이다.
- 나머지는 없어도 동작을 하지만 요청 로직을 실제로 처리하는 부분은 반드시 있어야 한다.
미들웨어
- request 와 resoponse 그리고
next()
함수에 접근할 수 있는 함수를 구성할 때 사용된다. - 로깅이나 요청 검증 등에 사용 가능하다.
가드
- 인증 및 권한 부여에 사용된다.
CanActivate
인터페이스를 구현한다.
인터셉터
- 메서드 실행 전 후에 추가 로직을 바인딩한다.
- 메서드 결과를 변형한다.
- 응답을 확장한다.
파이프
- 라우트 핸들러가 처리할 인수에 대해 작동한다.
- 데이터 유효성 검사 혹은 변환에 사용된다.
PipeTransform
인터페이스를 구현한다.
컨트롤러 (Controller)
@Controller
데코레이터가 달린 클래스.- 인바운드 요청을 처리하고 응답을 생성한다.
- HTTP 컨트롤러는 HTTP 메서드와 경로에 따른 처리를 한다.
- 마이크로서비스 컨트롤러는 다양한 전송을 통해 실행되는 요청과 이벤트에 응답한다.
필터
- HTTP 요청을 실행하는 동안 발생하는 예외를 처리한다.
ExceptionFilter
인터페이스를 구현하여 사용자 정의 예외 필터를 정의 가능하다.
모듈 (Module)
@Module
데코레이터가 달린 클래스.- 앱 구조를 스코프로 구성하는데 사용.
- 컨트롤러와 프로바이더는 선언된 모듈에 의해 범위가 지정된다.
- 모듈과 해당 클래스(Controller 와 Provider)는 Nest.js 가 의존성 주입을 수행하는 방식을 결정하는 그래프를 형성한다.
프로바이더 (Provider)
@Injectable()
로 데코레이팅되어 Nest의 의존성 주입 시스템의 일부가 된다.- Nest 에 내장된 의존성 주입 시스템 (DI System) 을 사용하여 생성자 매개변수 주입을 통해 다른 클래스에 주입할 수 있다.
- 주입 시, 주입되는 클래스의 모듈 범위 내에 표시되어야 한다.
- 프로바이더를 같은 모듈 스코프에 정의한다.
- 한 모듈 스코프에서 프로바이더를 내보내고 해당 모듈을 주입되는 클래스의 모듈 스코프로 가져오기
@Global()
데코레이터를 사용하여 글로벌로 표시된 모듈에서 프로바이더를 내보내기
- 서비스, 리포지토리, 팩토리, 헬퍼 등을 포괄하는 광범위한 카테고리다.
- 컨트롤러와 다른 프로바이더에 프로바이더를 주입할 수 있다.
의존성 주입
- Nest 는 강력한 의존성 주입 시스템을 사용하여 다양한 컴포넌트 간의 종속성을 정의한다.
마이크로서비스
TCP, Redis, MQTT 와 같은 다양한 전송 계층을 사용하는 마이크로 서비스 아키텍처를 지원한다.
반응형
'프레임워크 > Nest.js' 카테고리의 다른 글
Nest.js 인터셉터 (Interceptor) 란? (0) | 2024.02.07 |
---|---|
Nest.js 의 Class Validator 란? (0) | 2024.02.02 |
Nest.js 의 가드(Guard) 란? (0) | 2024.02.02 |
Nest.js 의 파이프(Pipes) 란? (0) | 2024.01.13 |
Nest.js 소개 (0) | 2024.01.06 |