티스토리 뷰
환경별 설정 중요성
애플리케이션을 개발 할 때 로컬 환경, 개발(테스트) 환경, 운영 환경 마다 다른 설정이 필요하게 됩니다.
예를 들어, 로컬 환경 및 개발(테스트) 환경은 로컬 DB, 개발 DB를 사용해야하지만 운영 환경에는 사용자들이 사용하고 보는 운영 DB를 사용해야하기 때문입니다.
이렇게 환경별로 설정하여 관리하면 유지보수가 좋아지고 오류를 줄일 수 있을 것입니다.
" 그럼 코드를 공통적으로 사용하는데 설정 값들을 서버 실행할 때 마다 다르게 할 수 있나? 그럼 어떻게 설정하지? " 라는 대답을 아래로 쭉 작성하려고 합니다.
설정하는 방법
환경별 설정 세팅하는 방법에는 2가지가 있습니다.
- application.yml : 기본 설정 파일안에서 분리하여 작성하기
- application-{profile}.yml : 특정 프로필 파일을 따로 생성하기
application.yml에서 설정 나누기
--- 을 사용해서 분리를 할 수 있습니다.
application.yml
# application.yml 예시
# ===============================
# local Server Property
# ===============================
spring:
config:
activate:
on-profile: local
datasource: ~ 이하 생략
---
# ===============================
# prod Profile 설정
# ===============================
spring:
config:
activate:
on-profile: prod
datasource: ~ 이하 생략
또한 그룹으로 묶어서 사용할 수 도 있습니다.
MSA 구조를 사용한다면 엄청난 이점을 가진 설정입니다.
application.yml
# application.yml 예시 group버전
spring:
profiles:
group:
dev: # 'dev' 그룹 프로파일 설정
- local
- dev
prod: # 'prod' 그룹 프로파일 설정
- prod
---
spring:
config:
activate:
on-profile: local
datasource: ~ 이하 생략
---
spring:
config:
activate:
on-profile: prod
datasource: ~ 이하 생략
application-{profile}.yml 로 특정 파일 사용하기
파일을 따로 생성하는 것입니다.
기존에 있던 application.yml은 이제 공통 파일이 되는 것이며, 특정 프로필에 따라 설정하는 파일은 따로 존재하게 되는 것입니다.
application-local.yml
# application-local.yml
spring:
config:
activate:
on-profile: local
datasource: ~ 이하 생략
application-prod.yml
# application-prod.yml
spring:
config:
activate:
on-profile: prod
datasource: ~ 이하 생략
서버 실행
상황1) 로컬 일 때
Spring을 사용하기 때문에 인텔리제이를 많이 사용하므로 인텔리제이로 설정하는 방법을 알려드리겠습니다.
저 칸에 아래 문자열을 넣어주시면 됩니다.
뜻은 스프링 서버 기동(실행) 할 때 local 프로필 가진 것으로 실행할거야~ 하는 옵션입니다.
-Dspring.profiles.active=local
상황2) 배포된 환경 운영 환경 일 때
현재 CICD 구축 상태가 아니고 운영환경에서 빌드한 jar로 기동한다고 가정하겠습니다.
EC2 우분투에 접속하자마자 있는 위치에서 아래와 같은 명령어를 입력하여 prod profile을 바라보게 합니다.
java -jar -Dspring.profiles.active=prod /home/ubuntu/yourproject-0.0.1-SNAPSHOT.jar
감사합니다.
'백엔드 > 🌸Spring' 카테고리의 다른 글
[Spring] Spring Boot3에 Swagger 적용하기 (6) | 2024.10.17 |
---|---|
[Spring] ThreadLocal : 동시성을 해결하는 물품 보관소 (0) | 2024.05.10 |
[Spring] ArgumentResolver : @Pathvariable 요청 정보 가져오기 (0) | 2024.04.24 |
[Spring] 첨부파일과 여러 데이터 전송하기 (0) | 2024.04.10 |
[Spring] Validation : 데이터 유효성 검사의 핵심 요소 (0) | 2024.03.27 |
- Total
- Today
- Yesterday
- Fetch
- Mac
- 개발환경
- Cors
- DBeaver
- 네트워크
- 비동기
- Spring Security
- 코딩테스트
- Front
- aws
- 디자인패턴
- 프로세스
- 개발
- 오라클
- 개발자
- 자바스크립트
- AJAX
- 데이터 베이스
- JavaScript
- git
- java
- 개발블로그
- 템플릿
- spring
- 프론트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |