2024. 6. 21. 10:09ㆍ기술 창고/Spring
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을 통한 개발 환경 관리 방법에 대해서 정리해보았습니다.
'기술 창고 > Spring' 카테고리의 다른 글
[Spring Boot] js, css 와 같은 Resources 버전 관리 (feat. 캐시 스택킹 제거) (1) | 2024.11.19 |
---|---|
[Spring Boot] 서버 자체에 ssl 적용이 아닌 내장 Tomcat에 ssl 적용하여 https 활성화 (jks 파일 기준) (0) | 2024.08.14 |
[Spring Boot] 타임리프 문법 - th:href (0) | 2023.11.22 |
[Spring Boot] Thymeleaf (타임리프) (0) | 2023.11.13 |
[Spring Boot] 로컬 환경 + 배포 서버에 파일 업로드 (trasferTo 사용법) (0) | 2023.10.19 |