[Spring Boot] Spring Profile 을 통한 개발 환경 분산 관리

2024. 6. 21. 10:09기술 창고/Spring

728x90
반응형
SMALL

Spring Boot에서 개발 완료 후 어플리케이션을 실행하여 테스트할 때 현재 개발 환경인지, 실제 운영 환경인지에 따라 설정되는 개발 환경이 다 다를 것입니다.

이를 일일히 바꾸기에는 수고스럽기 때문에 이를 제어하기 위한 Spring Profile을 활용하여 편리하게 개발 환경을 변경해주는 작업을 해보겠습니다.

 

# yml 파일로 Profile을 관리할 수 있지만 저는 properties 파일로 진행하였습니다.


 

우선, 앞서 말한 로컬 개발 환경, 운영 개발 환경 처럼 때에 따라 바뀌는 이러한 환경을 Spring Boot 에서는 Profile이라고 말합니다.

이 Profile은 기본적으로 Spring Boot 프로젝트의 properties 파일을 통해 관리해줍니다.

 

기본적으로 application.properties 파일은 생성되어있으며, 추가하고자 하는 개발 환경들에 따라 이 properties 파일 Profile을 추가적으로 만들어주고 빌드 및 실행 시 해당 Profile을 사용하겠다는 명령만 내리면 일일히 수정을 거칠 필요없이 한번에 개발환경이 전환되게 되는 것입니다.

 

 

(1) application-{profile}.properties 설정

첫 번째로 개발 환경 properties 파일을 만들어줍니다.

보통 일반적으로 개발 환경인 dev, 테스트 환경인 test, 실 운영 환경인 prod profile들을 사용합니다.

 

- 개발 환경 : application-dev.properties

- 테스트 환경 : application-test.properties

- 실 운영 환경 : application-prod.properties

 

일반적으로 위의 세 가지의 환경 Profile들을 사용한다고는 하지만 강제되지 않습니다.

자신이 원하는 Profile 명으로 생성하고 사용할 때, 해당 properties 파일을 사용하겠다고만 명시하면 됩니다.

 

만약, 아무런 추가 Profile 이 존재하지 않는 다면, 기본적인 application.properties 파일의 기본 Profile이 적용됩니다.

 

 

[간단한 개발 환경 properties 파일 내용]

active.host=DEVELOPMENT

 

[간단한 실 운영 환경 properties 파일 내용]

active.host=PRODUCE

 

저는 일단 두 가지의 properties Profile을 만들고 확인하기 위한 간단한 설정 내용을 넣어주었습니다.

이 각각의 properties Profile에 DB를 연결하는 설정이나 파일 크기 설정 혹은 다양한 설정값 및 사용자 지정 값들을 넣어주고 관리하면 됩니다.

 

 

spring.profiles.active={개발 환경 명}
# 예 : spring.profiles.active=dev

이제 사용하고자 하는 properties Profile 을 active 설정을 통해 활성화시켜주면 됩니다.

 

 

 

(2) build.gradle 설정

bootRun {
    String activeProfile = System.properties['spring.profiles.active']
    systemProperty "spring.profiles.active", activeProfile
}

properties Profile들의 생성 및 활성화 설정이 완료되었으면 이제, build gradle의 최하단 부분에 빌드 실행 시 추가적으로 동작될 bootRun 설정을 넣어주고 gradle 업데이트를 진행해줍니다.

 

내용을 보면, bootRun 빌드 task가 실행될 때, spring.profiles.active 설정을 통해 활성화된 Profile을 빌드 실행 시 환경으로 등록하겠다는 것입니다.

 

 

 

(3) 개발 도구 Profile 활성화 설정

여기서 끝이 아니라 현 개발 도구인 Intellij의 설정을 변경해주어야 합니다.

 

메뉴 도구의 Run 에서 Edit Configurations를 눌러줍니다.

 

 

Spring Boot 의 현재 Application에서 Active profiles를 설정해줍니다.

앞서 application-dev를 사용한다면 dev를, application-prod 를 사용한다면 prod를 넣어주고 apply 해주면 됩니다.

 

이제 준비가 끝났으니 확인 해보도록 하겠습니다.

 

 

 

(4) 실행 후 확인

[로컬 application 실행 후 확인]

dev 환경으로 설정하여 실행했을 때 Profile이 활성화되면서 찍어놓은 로그 또한 개발 환경으로 설정되었다는 것을 알 수 있습니다.

 

 

다시 prod 환경으로 실행했을 때 해당 Profile이 활성화되면서 변경되는 것을 확인할 수 있습니다.

 

이는 지금 Intellij 개발 도구 상에서 로컬로 실행해본 Profile 결과이고, 이번에는 리눅스와 같은 서버에 배포하여 확인해보도록 하겠습니다.

 

 

[배포 서버 application 실행 후 확인]

빌드한 jar 파일을 서버에 배포하고 실행하여 확인해줍니다.

# [Profile에 따라 빌드 후 배포 시 실행 명령어]
java -Dspring.profiles.active={properties 파일의 -기호와 .properties 구문 사이에 있는 개발 환경 파일 명, 여기서는 dev(예 : applcation-dev.properties 에서 dev)} -jar {빌드 파일 명.jar} &

 

- 일반 서버 배포 시 : java -Dspring.profiles.active=dev -jar {빌드 파일 명.jar}

- 무중단 서버 배포 시 : nohup java -Dspring.profiles.active=dev -jar {빌드 파일 명.jar} &

 

 

배포한 서버에서도 정상적으로 Profile이 지정되어 실행된 것을 확인할 수 있었습니다.

 

이로써 Profile을 통한 개발 환경 관리 방법에 대해서 정리해보았습니다.

728x90
반응형
LIST