AppModule (root)
├ AModule
│ ├ Entity
│ ├ Controller
│ ├ Service
│ ├ Repository
│ └ ValidationPipe | JWT, Passport | ...
├ BModule
└─CModule
@Module() 데코레이터로 주석이 달린 클래스로, @Module() 데코레이터는 Nest가 애플레이션 구조를 구성하는 데 사용하는 메타데이터를 제공한다.
모든 NestJS 애플리케이션에는 반드시 하나의 루트 모듈이 있어야 한다.
루트 모듈은 Nest가 사용하는 시작점이다.
모듈은 밀접하게 관련된 기능들을 하나로 묶는 데 사용된다.
같은 기능에 속하는 구성 요소(컨트롤러, 서비스, 프로바이더 등)를 한 모듈 안에 배치하여 관리한다.
모듈은 기본적으로 싱글톤으로 동작한다.
따라서 여러 모듈 간에 동일한 프로바이더 인스턴스를 공유할 수 있다.
기능별로 모듈을 나누면 프로젝트가 커져도 유지보수와 확장이 쉽다.
NestJS 모듈은 관련된 기능 집합을 체계적으로 관리하며,
재사용성과 유지보수성을 극대화하기 위한 핵심적인 설계 도구이다.