데브허브 | DEVHUB | Spring Boot Profiles: Manage Dev, Staging & Production Environments EasilySpring Boot Profiles: Manage Dev, Staging & Production Environments Easily
- Spring Boot 프로파일은 개발, 스테이징, 프로덕션 환경을 명확히 구분하여 데이터 손실 위험을 방지하고 환경별 최적화된 설정을 가능하게 합니다. 🛡️
- 개발(Dev) 환경은 기능 개발 및 버그 수정용으로, IDE에서 실행되며 디버그 로그와 데이터베이스 자동 재생성 설정(
spring.flyway.clean-disabled=false, spring.sql.init.mode=always)이 일반적입니다. 🧑💻
- 스테이징(Staging) 환경은 프로덕션 배포 전 테스트를 위한 환경으로, 프로덕션과 유사하지만 실제 프로덕션 데이터베이스를 사용하지 않아 위험을 줄입니다. 🧪
- 프로덕션(Production) 환경은 실제 사용자를 위한 라이브 환경으로, 원격 서버에 배포되며 보안과 성능을 최우선으로 고려한 설정이 필요합니다. 🚀
- 프로파일은
application.properties (공통 설정)와 application-{profile}.properties (환경별 설정) 파일을 통해 관리됩니다. 📁
- 특정 프로파일을 활성화하려면 해당 프로파일 파일 내에
spring.config.activate.on-profile={profile_name}을 명시해야 합니다. 🔑
- 데이터베이스 설정은 환경별로 다르게 구성됩니다. 개발 환경에서는 하드코딩된 로컬 DB, 스테이징/프로덕션에서는 환경 변수나 시크릿 매니저를 통한 민감 정보 관리가 권장됩니다. 💾
- 로깅 레벨도 환경에 따라 조절됩니다. 개발은 상세한
DEBUG 레벨, 프로덕션은 비용 절감 및 민감 정보 노출 방지를 위해 WARN 레벨로 최소화하는 것이 일반적입니다. 📝
- Flyway 마이그레이션 설정은 개발 환경에서 DB 자동 재생성을 위해
clean-disabled=false로 설정할 수 있지만, 스테이징 및 프로덕션에서는 데이터 손실 방지를 위해 clean-disabled=true로 설정해야 합니다. 🔄
- Spring Boot Actuator의 헬스 엔드포인트 상세 정보는 프로덕션 환경에서 보안을 위해
management.endpoint.health.show-details=never로 설정하여 노출을 제한하는 것이 좋습니다. 🔒