1. Static Module Binding

정적 모듈 바인딩이라고 불리는 nestjs 기술은 모듈을 서로 연결하는 기본적인 기술이다.

코드로 보면 이해가 쉽다.

@Module({
	imports: [UserModule], // 정적 모듈 바인딩
	providers: [AuthService],
	exports: [AuthService],
})
export class AuthModule {}

여기서 다루는 Dynamic Module은 Static Module이랑은 조금 다른 형태로 바인딩한다.


2. Dynamic Module

정적 모듈의 단점은 바인딩할 때, 세부 정보를 커스텀할 수 없게 된다.

예를 들어, 환경 변수를 나눌 때 development, test, production 환경으로 나눈다. 각 환경은 설정이 다를 것이고, 환경에 맞게 모듈을 어떻게 바인딩할 것인지도 나뉜다. 이때, 정적 모듈로 바인딩하게 되면 각 환경에 맞게 하드코딩해야할 것이고, 유지 보수 및 배포 프로세스나 개발에 어려움을 겪을 것이다.

이것을 해결해주는게 Dynamic Module이다.

동적 모듈은 속성 및 동작을 사용자 정의할 수 있도록 한다.

@Module({
  imports: [ConfigModule.register({ folder: './config' })], // 동적 모듈 바인딩
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}