[Nest.JS] 환경변수를 활용하여 애플리케이션 설정 관리하기

궁금하면 500원·2024년 8월 12일
0

NestJS에서 환경변수의 중요성 및 사용 방법

환경변수는 애플리케이션 설정을 코드와 분리하여 관리할 수 있게 해주며, 보안, 유연성, 유지보수성, 통일성을 높이는 데 중요한 역할을 합니다.

NestJS에서는 환경변수를 사용하여 애플리케이션의 설정을 관리하고, 다양한 환경에서 일관된 동작을 보장할 수 있습니다.

환경변수의 중요성

  • 보안: API 키, 데이터베이스 비밀번호 등 민감한 정보를 코드에 직접 작성하지 않고, 환경변수를 통해 안전하게 관리할 수 있습니다.
    이는 코드 유출 시 보안 위험을 줄여줍니다.

  • 유연성: 애플리케이션을 다양한 환경(개발, 테스트, 운영)에서 쉽게 설정하고 실행할 수 있도록 도와줍니다.
    환경별로 설정을 다르게 하여 코드 변경 없이 환경에 맞는 설정을 적용할 수 있습니다.

  • 유지보수성: 설정 변경 시 코드 수정 없이 환경변수 파일을 통해 간단히 업데이트할 수 있어 유지보수성을 높입니다.
    설정이 외부 파일에 분리되어 있어 코드와 설정을 독립적으로 관리할 수 있습니다.

  • 통일성: 동일한 애플리케이션을 여러 환경에서 일관된 방식으로 배포하고 운영할 수 있도록 합니다.
    환경변수를 통해 환경 간의 설정 차이를 쉽게 관리할 수 있습니다.

NestJS에서 환경변수 사용 방법

1. 환경변수 설치 및 설정

NestJS에서 환경변수를 쉽게 사용하려면 dotenv 패키지를 설치하고, .env 파일을 통해 설정을 관리합니다.

설치

npm install dotenv

2. .env 파일 생성 및 설정

루트 디렉토리에 .env 파일을 생성하고, 환경변수를 정의합니다.

# .env 파일
DATABASE_HOST=localhost
DATABASE_PORT=5432
DATABASE_USER=myuser
DATABASE_PASSWORD=mypassword
API_KEY=supersecretapikey

3. NestJS에서 환경변수 로드 및 사용

NestJS의 ConfigModule을 사용하여 환경변수를 쉽게 로드하고 사용할 수 있습니다.

설정

import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true, // 전역으로 설정하여 어디서든 사용 가능
    }),
  ],
})
export class AppModule {}

환경변수 사용: NestJS의 ConfigService를 통해 환경변수를 사용할 수 있습니다.

import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';

@Injectable()
export class DatabaseService {
  constructor(private configService: ConfigService) {}

  getDatabaseConfig() {
    const host = this.configService.get<string>('DATABASE_HOST');
    const port = this.configService.get<number>('DATABASE_PORT');
    const user = this.configService.get<string>('DATABASE_USER');
    const password = this.configService.get<string>('DATABASE_PASSWORD');

    return {
      host,
      port,
      user,
      password,
    };
  }
}

4.예제

다음은 ConfigService를 사용하여 환경변수를 읽어오는 간단한 예제입니다.

import { Controller, Get } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';

@Controller('config')
export class ConfigController {
  constructor(private configService: ConfigService) {}

  @Get()
  getConfig() {
    const apiKey = this.configService.get<string>('API_KEY');
    return { apiKey };
  }
}

이 코드에서는 ConfigService를 통해 API_KEY 환경변수를 가져와 응답으로 반환합니다.

환경변수를 적절히 활용하면 애플리케이션의 보안, 유연성, 유지보수성, 통일성을 크게 향상시킬 수 있습니다.

NestJS에서 환경변수를 사용하는 방법을 이해하게 되었고 좀더 활용하면 보다 견고하고 관리하기 쉬운 애플리케이션을 만들 수 있다는 생각이 들었습니다.

profile
꾸준히, 의미있는 사이드 프로젝트 경험과 문제해결 과정을 기록하기 위한 공간입니다.

0개의 댓글