티스토리 뷰

 

 

 

환경별 설정 중요성

 

애플리케이션을 개발 할 때 로컬 환경, 개발(테스트) 환경, 운영 환경 마다 다른 설정이 필요하게 됩니다.

예를 들어, 로컬 환경 및 개발(테스트) 환경은 로컬 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을 사용하기 때문에 인텔리제이를 많이 사용하므로 인텔리제이로 설정하는 방법을 알려드리겠습니다.

[그림1] 인텔리제이 설정 수정
[그림2] Modify options
[그림3] VM options 추가

 

저 칸에 아래 문자열을 넣어주시면 됩니다.

뜻은 스프링 서버 기동(실행) 할 때 local 프로필 가진 것으로 실행할거야~ 하는 옵션입니다.

-Dspring.profiles.active=local

 

[그림4] 실행 할 때 active profile

 

 

 

상황2) 배포된 환경 운영 환경 일 때 

현재 CICD 구축 상태가 아니고 운영환경에서 빌드한 jar로 기동한다고 가정하겠습니다.

 

EC2 우분투에 접속하자마자 있는 위치에서 아래와 같은 명령어를 입력하여 prod profile을 바라보게 합니다.

java -jar -Dspring.profiles.active=prod /home/ubuntu/yourproject-0.0.1-SNAPSHOT.jar

 

 

 

감사합니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함