본문 바로가기
Dev/SpringBoot

27. [springboot] 환경 구성 분리하기

by VIPeveloper 2020. 11. 16.
반응형

1. 서론

- 프로젝트를 진행하던 도중, AWS에서 운용되기 위한 환경과, Local에서 돌리는 환경을 다르게 구성하는 방법이 있다는 것을 알게 되었습니다.

- 이 글을 읽게되면 DEV, PROD 설정을 다르게 구성할 수 있게 됩니다.

2. 본론

- 강의로 보거나, 책으로 프로젝트를 만들게 되면, 대체로 application.yml 파일 하나만 사용하게 되는 경우가 많습니다.

하지만 어느정도 팀을 이루고, 함께 배포하자는 목표를 가지고 나아가다 보면, 환경 설정을 다르게 적용해야 하는 경우가 있습니다. 하지만 DB 구성도 다르고, 민감한 키값들을 Git에 바로 올리기에는 부담이 크다고 느꼈습니다.

- 이를 해결하기 위해 설정 파일을 구분하여 공개해도 되는 파일만 git에 올리는 방식을 공부해보았습니다. 

먼저 아래 사진과 같은 방식으로 설정을 나누어 줍니다.

application-dev.yml

spring:
  profiles: dev
  h2:
    console:
      enabled: true
  datasource:
    url: jdbc:h2:tcp://localhost/~/test
    username: sa
    password:
    driver-class-name: org.h2.Driver
  devtools:
    livereload:
      enabled: true   # 이 옵션은 정적 파일 변동 시 자동 반영될 수 있도록 돕는다.
  jpa:
    hibernate:
      ddl-auto: update  # 이 옵션은 애플리케이션 실행 시점에 테이블을 drop 하고, 다시 생성한다
    properties:
      hibernate:
        # show_sql: true
        format_sql: true
  thymeleaf:
    prefix: classpath:/templates/
    suffix: .html
logging:
  level:
    org.hibernate.SQL: debug
    org.hibernate.type: trace   # sql query 에 들어오는 파라메타 값 추적

application-prod.yml

spring:
  profiles: prod
  jackson:
    serialization:
      fail-on-empty-beans: false
  h2:
    console:
      enabled: false
  jwt:
    secret: ...
  jpa:
    show-sql: true
    hibernate:
      ddl-auto: none
  datasource:
    url: ...
    username: ...
    password: ...
    driver-class-name: org.mariadb.jdbc.Driver
cloud:
  aws:
    credentials:
      access-key: ...
      secret-key: ...
    s3:
      bucket: ...
    region:
      static: ap-northeast-2
    stack:
      auto: false

민감한 정보는 이렇게 설정파일을 분리해서 작성해 줍니다.

그 다음에 다음과 같이 설정해 줍니다.

spring.profiles.active=?

prov와 dev 별로 다르게 실행해서 테스트해볼 수 있습니다.

3. 결론

- 환경 설정을 구분해서 실행하는 방법을 알아보았습니다.

 

 

 

반응형