Spring Profile
Spring Profile
입사하고 얼마 지나지 않아 서비스를 운영하게 되는데 Spring profile에 대해서 처음알게 되었다. 항상 하나의 개발 환경세팅만 하다보니 각 환경에 대해서 분리해서 개발을 진행하게 되는지 처음 알았다. 우선 Spring Profile이란 Spring 애플리케이션에서 환경에 따라 다르게 동작하도록 설정을 분리하는 기능이다. 이를 통해 개발, 테스트, 프로덕션 등 여러 환경에 맞게 설정을 관리할 수 있다. Spring Profile을 사용하면, 각 환경에 특화된 설정을 선언하고, 애플리케이션이 실행될 때 해당 프로파일에 맞는 설정을 자동으로 로드할 수 있다.
왜 중요할까?
환경에 맞는 설정을 자동으로 적용한다. 예를 들어, application-dev.properties 파일과 application-prod.properties 파일을 두고, 개발 환경에서는 개발용 데이터베이스 설정을, 운영 환경에서는 실제 운영 데이터베이스 설정을 자동으로 읽어올 수 있다. 환경에 따른 Bean 설정: @Profile 어노테이션을 사용하여 특정 환경에서만 활성화되는 Bean을 정의할 수 있다. 예를 들어, 개발 환경에서는 디버깅용으로 로깅 레벨을 높게 설정하고, 운영 환경에서는 성능을 고려한 로깅 설정을 할 수 있다.
각 프로파일에 따른 설정
local, prod, dev 세 가지 프로파일로 나뉘어져 있다. 각 프로파일에 대해 다른 설정을 적용할 수 있다.
- local: 개발자가 로컬 환경에서 실행할 때 사용하는 프로파일로, 로컬 데이터베이스나 디버깅 설정 등을 포함할 수 있다.
- prod: 운영 환경에서 사용하는 프로파일로, 실제 서비스에 배포되는 설정을 포함한다. 보통 보안이나 성능 관련 설정이 중요하다.
- dev: 개발 환경에서 사용하는 프로파일로, 개발 중에 사용되는 설정이 포함한다. 로깅이나 디버깅을 위해 다양한 설정을 추가할 수 있다.
Reference
https://docs.spring.io/spring-boot/docs/1.2.0.M1/reference/html/boot-features-profiles.html