티스토리 뷰
📌 NestJS + Kubernetes & 마이크로서비스 배포: 실전 가이드 - NestJS 환경 구성 및 설정 관리 전략 – Dev, Stage, Prod 환경 분리하기
octo54 2025. 6. 9. 10:18📌 NestJS + Kubernetes & 마이크로서비스 배포: 실전 가이드
42. NestJS 환경 구성 및 설정 관리 전략 – Dev, Stage, Prod 환경 분리하기
마이크로서비스 프로젝트가 커질수록 운영 환경 분리는 필수입니다.
로컬 개발(Dev), 스테이징(Stage), 프로덕션(Prod) 환경마다 다른 DB, API, 보안 키 등이 사용되기 때문입니다.
이번 글에서는 NestJS 프로젝트에서 다양한 환경을 체계적으로 분리하고, 보안과 효율성을 높이는 방법을 다룹니다. 🌍
✅ 1. 환경 분리의 필요성
환경 특징
Dev | 개발자 개인 환경, mocking 가능 |
Stage | 실제 배포 환경과 동일, QA 테스트용 |
Prod | 실제 사용자 대상, 보안과 성능 최우선 |
코드베이스는 하나, 환경만 다르게 구성하는 것이 핵심입니다.
✅ 2. NestJS의 환경 설정 기본 방식
NestJS는 @nestjs/config 모듈을 통해 .env 파일 기반 설정을 지원합니다.
📦 설치
npm install @nestjs/config
📂 main.ts
import { ConfigModule } from '@nestjs/config';
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
envFilePath: `.env.${process.env.NODE_ENV || 'dev'}`,
}),
],
})
예시: .env.dev, .env.stage, .env.prod
# .env.dev
PORT=3000
DATABASE_URL=postgres://localhost/devdb
JWT_SECRET=dev-secret
✅ 3. 환경 변수 사용 예시
📂 config.service.ts
@Injectable()
export class ConfigService {
constructor(@Inject(ConfigService) private config: ConfigService) {}
get databaseUrl(): string {
return this.config.get<string>('DATABASE_URL');
}
}
환경에 따라 .env.* 파일을 자동으로 로드하도록 처리
✅ 4. 실행 환경 설정 방법
로컬 개발 시
NODE_ENV=dev nest start
GitHub Actions 또는 Dockerfile 내 환경 주입
ENV NODE_ENV=prod
✅ 5. Kubernetes 환경에서 환경 설정 분리
- ConfigMap → 일반 설정 (PORT, MODE)
- Secret → 민감 설정 (JWT_SECRET, DB_PASSWORD)
📂 configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: nestjs-config
data:
NODE_ENV: "prod"
PORT: "3000"
📂 secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: nestjs-secret
type: Opaque
data:
JWT_SECRET: cHJvZF9zZWNyZXQ= # base64 인코딩
📂 deployment.yaml 내 적용
envFrom:
- configMapRef:
name: nestjs-config
- secretRef:
name: nestjs-secret
✅ 6. 환경 설정 전략 정리
구분 추천 방법
로컬 개발 | .env.dev 파일 직접 사용 |
팀 협업/스테이징 | .env.stage + GitHub Secrets or CI 설정 |
운영 환경 | K8s ConfigMap/Secret 연동 |
민감 정보 | 절대 Git에 커밋 ❌, secret manager 사용 추천 |
✅ 결론: 환경 설정은 프로젝트 신뢰성과 직결된다
✅ 모든 환경별 설정을 .env 또는 K8s 리소스로 분리
✅ 민감 정보는 안전하게 보호 (Secret, Vault, GitHub Secret)
✅ @nestjs/config 모듈로 구성하면 유지보수가 쉬움
✅ Dev → Stage → Prod로 무중단 전환도 가능해짐
다음 글에서는 NestJS에서 Observability(가시성) 구현을 위한 구조: 로그, 메트릭, 트레이싱을 통합하는 전략을 다룰 예정입니다. 📊
🔍 다음 글 예고: NestJS Observability 실전 – 로그, 메트릭, 트레이싱 한 번에
📌 다음 편: 43. NestJS Observability 구축 전략
NestJS 환경 구성,NestJS 설정 관리,NestJS 환경 변수,NestJS .env 사용법,NestJS ConfigModule,NestJS K8s 설정,NestJS Secret 관리,NestJS 환경 분리 전략,NestJS Dev Stage Prod,NestJS 환경 보안
'project > NestJS + Kubernetes & 마이크로서비스 배포' 카테고리의 다른 글
- Total
- Today
- Yesterday
- Ktor
- AI챗봇
- JAX
- kotlin
- App Router
- 프론트엔드면접
- rag
- 파이썬알고리즘
- nodejs
- Python
- NestJS
- SEO 최적화
- 웹개발
- REACT
- seo 최적화 10개
- gatsbyjs
- CI/CD
- 백엔드개발
- fastapi
- 딥러닝
- 개발블로그
- llm
- Prisma
- Docker
- PostgreSQL
- 프론트엔드
- Next.js
- SEO최적화
- flax
- nextJS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |