nhnacademy-aiot1-5 / study

공부한 내용을 기록하는 저장소입니다.
MIT License
0 stars 0 forks source link

프로퍼티 파일을 나누어 테스트 환경과 배포 환경 나누기 #7

Open jeongyongs opened 2 months ago

jeongyongs commented 2 months ago

Spring profile 나누기

기존 방식

기존에는 application.ymlapplication-secret.yml로 파일을 나누어 시크릿을 관리했습니다. application-secret.yml 파일은 .gitignore에 등록되어 원격 저장소에 업로드 되지 않습니다. 애플리케이션 배포 시 깃허브 액션을 통해 동적으로 application-secret.yml 파일을 생성하고 패키징합니다.

문제점

클라우드 인스턴스가 다른 인스턴스와 통신을 할 때는 사설 아이피를 사용합니다. 따라서 application-secret.yml에도 디스커버리 인스턴스의 사설 아이피로 설정되어 있습니다. 하지만, 깃허브 액션에서 컴파일 시 테스트가 수행되고 사설 아이피로 접속을 시도하기 때문에 디스커버리에 접속이 되지 않습니다. 타임 아웃이 발생할 때까지 서버의 응답을 기다리게 되고 테스트 수행 시간이 길어지게 됩니다. 이로 인해 깃허브 액션의 가상머신 사용시간이 낭비됩니다.

요구 사항

시크릿은 개발 환경과 배포 환경에 존재해야하며, 원격저장소에는 업로드 되지 않아야합니다.

변 경

spring profile을 devprod로 나누어 관리합니다. application-prod.yml을 서버에 미리 업로드 해두고, 쉘 스크립트 실행 시 스프링 환경변수로 prod profile을 사용하도록 합니다. 따라서, 깃허브 액션에서 컴파일 시 dev profile을 사용하여 테스트 수행이 짧아지며, 배포 환경에서는 prod profile을 사용하여 실제 디스커버리 환경에 접속할 수 있게 됩니다.