개발 상식
eager 과 lazy loading
H-JJOO
2023. 2. 21. 00:28
Nest.js에서 "eager"는 모듈의 로딩 시점을 의미하는 옵션입니다.
Nest.js는 기본적으로 지연 로딩(lazy loading)을 사용하여 모듈의 로딩을 최소화하고 애플리케이션의 부하를 줄입니다. 이는 필요한 모듈만 로딩하기 때문에 애플리케이션의 시작 속도를 높이는 데 도움이 됩니다.
하지만, 때로는 애플리케이션 시작 시점에 모든 모듈을 로딩해야 할 때도 있습니다. 이때 "eager" 옵션을 사용하면 모든 모듈이 애플리케이션 시작 시점에 로딩됩니다.
예를 들어, 다음과 같이 AppModule에서 "eager" 옵션을 사용하여 모든 모듈을 애플리케이션 시작 시점에 로딩할 수 있습니다.
@Module({
imports: [
UsersModule,
PostsModule,
CommentsModule,
],
// 모든 모듈을 애플리케이션 시작 시점에 로딩합니다.
// (지연 로딩이 아닌 즉시 로딩)
exports: [],
controllers: [],
providers: [],
})
export class AppModule {}
이렇게 하면 모든 모듈이 애플리케이션 시작 시점에 로딩되므로, 모든 모듈의 컨트롤러와 프로바이더가 즉시 사용 가능해집니다. 하지만, 이는 모든 모듈을 로딩하기 때문에 애플리케이션 시작 속도가 느려질 수 있으므로, 사용에 유의해야 합니다.
※ 프로바이더 (Provider) : 애플리케이션의 기능을 제공하기 위한 클래스 또는 값(Value)을 의미한다. 프로바이더는 클래스, 팩토리, 값 등 다양한 형태가 있으며, Nest.js 의 DI 시스템을 통해 애플리케이션 내에서 사용된다.
즉, 프로바이더는 Nest.js 의 DI 시스템을 통해 의존성 주입을 관리하며, 애플리케이션 내에서 필요한 기능을 제공하는데 사용된다.