서버 환경을 분리해보자

콜트·2021년 3월 22일
1

Edit. 앱 개발기

목록 보기
2/11
post-thumbnail

앞선 프로젝트와는 달리 이번 앱 런칭 프로젝트는 실제 앱의 런칭까지 이루어질 것이다.
그러한 연유로, 개발 서버와 실제 운영 서버, 테스트 서버 등등 각각의 환경을 구분해야 했다.
자세한 내용은 추후에 다루도록 하고 실제 사용한 부분만 다루도록 하겠다.


application.*

Spring Boot에서는 Embedded Tomcat, Application 설정 관련 및 기타 정적인 값을 Key - Value 형식으로 관리한다. 이때 해당 설정을 지정해주는 파일이 있는데, 바로 src/main/resources/에 위치하는 application.properties, application.yml 이다.

여기서 만약 application.propertiesapplication.yml 파일이 둘 다 존재하면 application.yml 파일만 오버라이드 되어 적용된다.

위 사진에서 보면 application-xxx.yml 의 형태의 설정 파일도 볼 수 있는데, 이는 설정 파일 내부에 존재하는 profile을 의미한다. 그러니까, -(대시)로 설정 파일의 profile을 구분한다.

💢 yml은 특히 들여쓰기에 주의해야 한다! 기억해!


profile에 해당하는 설정 파일 적용

이제 상황에 맞게 설정 파일을 적용해야 한다. application.yml에 아래 사진과 같이 활성화할 profile을 입력해주면 프로젝트를 구동할 때 자동으로 해당 설정이 적용된다. 아래 사진에서 profiles 부분을 주목하자. active에 활성화하고 싶은 설정 profile을 입력하면 된다. 만약 active에 해당하는 설정 파일이 존재하지 않으면 application.yml의 설정이 적용된다.

위 사진에서 보이는 include 옵션은 자동으로 설정에 credentials 프로필도 포함시키는 역할을 한다. 만약 특정 프로필에 include 옵션을 사용하면 해당 프로필을 실행시킬 때 include에 지정된 특정 프로필을 포함시킨다.

  • 이를 특정 프로필이 아닌 전역으로 지정하면, 마치 그냥 설정 파일을 include 하는 것 처럼 된다. 마찬가지로 include에 설정해준 프로필이 활성화 된다.
  • 각 프로필에서 다시 나눠서 특정 프로필을 지정하고 설정해도 무시되며, 그 속에서 별도로 profile을 만들고 active: {별도로 만든 프로필 명}과 같이 설정을 추가해줘야 한다.
  • 즉, 최초 시작 설정 파일은 application.yml 이어야만 include 된 설정 안에서의 profile 구분이 정상적으로 작동한다. 애초에 최초 시작 설정 파일을 application-prod.yml로 한 상태에서 include는 그 안의 profile 구분이 무시된다.

하나의 파일에서 profile 구분

하나의 파일에서 ---를 구분자로 하여 profile을 분리할 수 있다(2.4버전부터는 Deprecate되고 새로운 규칙을 사용한다.).

위 사진과 같이 설정을 적용하고 실행했을 때의 결과이다. 콘솔을 보면 colt1에 설정된 포트번호인 8000 포트 번호로 실행된 것을 확인할 수 있다.


참고자료


profile
개발 블로그이지만 꼭 개발 이야기만 쓰라는 법은 없으니, 그냥 쓰고 싶은 내용이면 뭐든 쓰려고 합니다. 코드는 깃허브에다 작성할 수도 있으니까요.

0개의 댓글