-
Spring Boot 시리즈 25편 – 멀티 프로파일 설정 전략: dev/staging/prod 환경 분리 실전 가이드언어 및 프레임워크/Spring Boot 2025. 5. 4. 11:41728x90
Spring Boot에서 dev, staging, prod 환경을 분리해 설정값을 관리하는 멀티 프로파일 전략을 소개합니다. 실무 기준의 yml 설정 구조와 운영 자동화를 함께 설명합니다.
Spring Boot 시리즈 25편 – 멀티 프로파일 설정 전략: dev/staging/prod 환경 분리 실전 가이드
실제 서비스에서는 하나의 코드를 가지고도
개발, 테스트, 운영 환경에서 다른 설정을 적용해야 할 때가 많습니다.
이런 환경 분리를 효율적으로 지원하기 위한 핵심 기능이 바로
Spring Boot의 프로파일(Profile) 기능입니다.
이번 글에서는 실전 프로젝트 기준으로
- 개발(dev), 스테이징(staging), 운영(prod) 환경을 분리하는 구조
- 프로파일에 따른 설정값 자동 적용
- CI/CD 및 서버 배포 연계 전략
- 까지 통합적으로 다뤄보겠습니다.
📌 1. 프로파일이란?
Spring Boot에서는 --spring.profiles.active 값을 통해
환경별 설정(yml, bean, 설정 파일 등)을 선택적으로 적용할 수 있습니다.
✅ 2. yml 기반 멀티 프로파일 구성 방법
1️⃣ 기본 구조
src/ └── main/ └── resources/ ├── application.yml ├── application-dev.yml ├── application-staging.yml └── application-prod.yml
2️⃣ application.yml (공통 설정)
spring: application: name: my-service profiles: active: dev # 기본값 (배포 시 override 가능)
3️⃣ application-dev.yml
server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/dev_db username: dev password: dev123
4️⃣ application-prod.yml
server: port: 8081 spring: datasource: url: jdbc:mysql://prod-db:3306/prod_db username: prod_user password: secure-password
🛠️ 3. 프로파일별 Bean 설정 방법
@Configuration public class CacheConfig { @Bean @Profile("dev") public CacheManager devCacheManager() { return new ConcurrentMapCacheManager(); } @Bean @Profile("prod") public CacheManager redisCacheManager() { // Redis 기반 설정 return new RedisCacheManager(...); } }
- 프로파일에 따라 특정 Bean만 생성 가능
- dev 환경에서는 가볍게, prod 환경에서는 확장성 있게 구성
⚙️ 4. 실행 시 프로파일 지정 방법
1️⃣ IntelliJ에서
- Edit Configurations → VM Options 입력:
-Dspring.profiles.active=staging
2️⃣ CLI로 실행 시
java -jar myapp.jar --spring.profiles.active=prod
3️⃣ Dockerfile 내 ENV 설정
ENV SPRING_PROFILES_ACTIVE=prod
🚀 5. 배포 자동화 연계 전략 (CI/CD)
항목적용 예시
GitHub Actions .env 파일 내 SPRING_PROFILES_ACTIVE 설정 AWS CodeDeploy EC2 UserData에서 export SPRING_PROFILES_ACTIVE=prod Kubernetes env: 필드에 환경변수 지정 Jenkins Build Parameter로 프로파일 설정 후 전달
🧠 실무 적용 팁
항목전략
yml 분리 기준 DB, 외부 연동, 로그 레벨 등 환경별로 달라지는 값만 분리 민감 정보 처리 application-prod.yml은 Git에 포함시키지 않도록 .gitignore 설정 또는 외부 Secrets 관리 Default fall-back application.yml은 항상 공통 설정으로 유지 (모든 프로파일 공통 사용 가능) 운영 안전성 운영 환경은 반드시 prod 고정, staging은 실서비스 직전 테스트로 구성
✅ 마무리 요약
항목요약
멀티 환경 설정 Spring Boot의 application-*.yml 구조로 프로파일 분리 실행 제어 --spring.profiles.active 로 환경별 설정 적용 Bean 조건부 생성 @Profile("dev") 등으로 환경별 로직 분기 배포 전략 CI/CD, Docker, Kubernetes 등과 연계 필수 운영 팁 보안 설정 분리, Git 관리 주의, 로깅/모니터링 환경별 분리
📌 다음 편 예고
Spring Boot 시리즈 26편: 운영 환경 로그 전략 – Logback, 로그 분리, Cloud 환경 대응까지
728x90'언어 및 프레임워크 > Spring Boot' 카테고리의 다른 글