Local
: 컴퓨터에서 개발을 하려면 각 개발자 PC에 개발 및 테스트환경이 셋업되어야 한다.Dev
: 나 혼자 개발을 마친 뒤, 내가 만든 기능이 다른 팀원들과 함께 작업하는 공간에서도 잘 작동하는지 확인해야한다.Stage
: 기능 구현만 해 놓고 실제 데이터나 서버 규모는 훨씬 작은 dev와 달리, stage 환경에서는 prod와 거의 동일하게끔(db 세팅까지) 구성해 놓는다.Prod
: 실제 서비스 운영 환경이다.이렇게 하나의 기능이 개발되어 최종 서비스 단까지 나가려면,
local -> dev -> (QA) -> stage -> prod 라는 각기 다른 개발환경을 거치게 되는데,
각 환경마다 필요한 객체 주입부터 여러가지 설정이 달라진다.
따라서 어느 환경에 배포하느냐에 따라 설정에 필요한 값을 그때그때 바꾸어서 주입해주어야 한다.
Spring profile은 배포환경에 따라 자동으로 스프링 프레임워크 내 설정값에 대한 bean 주입을 각기 다르게 설정할 수 있도록 도와주는 역할을 한다.
profile
: 각기 다른 환경에 주입할 Bean의 묶음이다.property
: profile 안에 들어갈 외부 설정 값의 모음.properties
혹은 .yml
형태의 파일로 구현한다.