컨트롤러는?
웹 애플리케이션에서 컨트롤러는 외부의 요청을 처리하는 모듈을 의미합니다.
하나 이상의 클라이언트가 보내는 요청을 처리하고 요청을 보낸 클라이언트에게 응답을 반환하는 역할
이라고도 표현할 수 있습니다.
컨트롤러의 목적은 애플리케이션에 대한 특정 요청을 수신하는 것에 있습니다.
라우팅 매커니즘은 어떤 컨트롤러가 해당 요청을 처리할지를 조정하는 역할을 합니다.
보통은 각 컨트롤러는 하나 이상의 경로가 있고
각기 다른 경로는 각기 다른 행동을 수행합니다.
프로바이더
프로바이더는 nest의 기본 개념으로 서비스, 레포지토리, 팩토리, 헬퍼 등등이
프로바이더로 취급될 수 있습니다.
프로바이더의 주요 아이디어는 의존성 주입 (DI) 입니다.
제어의 역전 , 의존성 주입은 익숙한데 계층형 구조(Layerd Architecture)가 낯섭니다.
서비스를 이해하기 위해서는 계층형 구조 / 다층 구조(n-tier architecture)를 이해해야합니다.
3-tier architecutre라는 개념이 있습니다.
이는 주로 아래와 같이 나누게 되는데요
Persentation Tier : 사용자 인터페이스 / 외부와의 통신을 담당합니다.
Application Tier: Logic Tier라고도 하며 비즈니스 로직을 구현하고 Presentation Tierdㅘ Data Tier를 연결합니다.
Data Tier: 데이터베이스에 데이터를 읽고 쓰는 역할을 담당합니다.
nest로 치환해서 생각하면 presentation은 컨트롤러
application은 서비스로 구분할 수 있습니다.
모듈
각 프로그램은 하나 이상의 루트 모듈이 있습니다.
nest에서는 애플리케이션 그래프를 구성하기 위한 시작점의 역할을 하는 모듈이 존재합니다.
nest 에서 모듈은 기본적으로 싱글톤이라는 것을 기억해야합니다.
이 특성을 통해 nest 에서는 여러 모듈간에 쉽게 공급자의 동일한 인스턴스를 공유합니다.
또한 모든 모듈은 자동으로 공유 모듈입니다.
공유가 가능한 모듈이라는 뜻이며 생성되면 모든 모듈에서 재사용이 가능합니다.
전역 모듈(global modules)
어디에서나 사용할 수 있어야 하는 프로바이더를 제공하기 위해서 nest는
@Global() 데코레이터를 이용합니다.
전역 모듈은 일반적으로 루트 / 코어 모듈에 의해 단 한번만 등록되어야 합니다.
또한 모든 모듈을 전역으로 만드는 것은 좋은 디자인이 아닙니다.
동적 모듈
nest의 모듈 시스템에는 동적 모듈이라는 기능이 포함되어 있습니다.
이 기능을 통해 프로바이더를 동적으로 등록하고 구성할 수 있습니다.
레퍼런스
https://www.wisewiredbooks.com/nestjs/overview/05-modules.html
'Nestjs' 카테고리의 다른 글
nestjs 와 데코레이터 (0) | 2023.08.02 |
---|---|
NestJS 시작해보기 (0) | 2023.07.07 |