.yml파일 local,dev,prod 환경 분리하기

구본식·2023년 1월 27일
0

프로젝트 후반부에 테스트, 로컬, 운영 환경으로 분리해야되는 경우가 생겼습니다.

보통 테스트, 로컬, 개발, 운영로 구분하는데 프로젝트의 백엔드 개발자가 저 혼자이기 때문에 개발환경은 필요없다고 느껴 제외하여 환경을 구축하였습니다.

찾아본 결과 여러가지 방법이 있었습니다. 현재 프로젝트에 필요한 수준과 편리성을 고려하려 최대한 간단한 설정하는 방식을 설명해보도록 하겠습니다.


위와 같이 각 환경에 맞는 yml파일을 생성한 모습이 되겠습니다.


application.yml

---으로 구분하여 환경을 분리했습니다.

build된 실행파일을 실행할때 profile에 맞는 설정값을 주고 실행시키게 되면 해당 파일로 실행되는 것입니다.
예) 옵션으로 prod -> application-prod.yml 파일이 실행

실제 원하는 profile의 옵션으로 실행하는 명령어는 뒤에서 보여드리겠습니다.


application-local.yml(prod)

전체 코드가 아니라 일부의 내용입니다.
local, prod 대부분의 파일 설정은 비슷합니다. 차이점은 RDS, Redis 설정과 ddl-auto 설정등을 각 환경에 맞게 설정해놓았습니다.

참고로 실행파일이 실행될때 쉽게 알아보기 위해서 각 환경에 banner를 추가하여 시각적으로 쉽게 볼수있게 하였습니다.

https://www.youtube.com/watch?v=b1alHOwje_U&t=626s


test.yml

프로젝트에 작정해논 통합테스트 코드들을 실행할때 사용할 환경을 따로 설정해놓았습니다.

위와 같이 별개로 패키지와 yml파일을 생성합니다.
yml 파일안에는 위에서 작성한 파일과 비슷하다. 테스트 코드를 실행할 환경에 맞게 설정하면 된다.


Dockerfile

프로젝트가 Docker를 통해 실행파일이 실행된다.

그래서 배포후 운영서버에서는 ~prod.yml 파일으로 실행되야하므로 아래와 같이 설정하였다.

앞서 정의한 환경에 맞게 profile을 실행시키는 명령어는 아래와 같다.

java -jar -Dspring.profiles.active-prod *jar


프로젝트에 적용한 yml파일을 환경에 맞게 분리하는 방법을 간단하게 설명해보았습니다.

profile
백엔드 개발자를 꿈꾸며 기록중💻

0개의 댓글