강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

WTeobp님의 프로필 이미지
WTeobp

작성한 질문수

스프링 부트 - 핵심 원리와 활용

설정 데이터2 - 내부 파일 분리

application.properties를 프로젝트 내부에 두고 사용한다 하더라도, 여전히 이전 강의와 동일한 문제점이 있는 거 아닌가요?

작성

·

141

·

수정됨

0

1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예


[질문 내용]
안녕하세요!

이전 강의(설정 데이터1 - 외부 파일)를 보면,

application.properties를 외부에 두고 사용할 경우, 다음과 같은 문제점이 있다고 말씀하셨습니다.

"application.properties의 내용을 변경해야 하는 경우에 만약 10대의 서버를 운영 중이라면,

10대의 서버에 있는 application.properties의 내용을 모두 일일이 변경해 주어야 하는 불편함이 있다."

 

그런데 이 문제점은 이번 강의처럼 application.properties를 프로젝트 내부에 두고 사용한다 하더라도,

여전히 남아 있는 문제점 아닌가요?

답변 2

1

안녕하세요. WTeobp님, 공식 서포터즈 y2gcoder입니다.

사진과 함께 봐주시면 감사하겠습니다. 특히 해당 상황은 배포와 밀접한 관련이 있습니다!

image.pngimage.png

위의 사진이 애플리케이션 외부에 설정 파일이 위치할 때, 아래의 사진이 애플리케이션 내부에 설정 파일이 위치할 때입니다.

위의 사진과 같이 애플리케이션 외부의 서버 인스턴스 내에 설정 파일이 위치할 때, 공통 설정 값을 변경해줘야 한다면 N개의 서버 인스턴스를 일일이 들어가서 설정값을 수정해줘야 합니다!

반면에 아래의 사진과 같이 애플리케이션 내부에 설정파일로 관리한다면 공통 설정 값을 변경하기 위해 N개의 서버 인스턴스 내부로 일일이 들어갈 필요 없이 공통 설정값을 변경한 애플리케이션을 배포하면 각 N개의 서버 인스턴스에 공통 설정값이 변경된 애플리케이션이 자동으로 배포되게 됩니다. 외부 설정값에서 언급한 불편함은 이런 부분이라고 생각해주시면 감사하겠습니다!

 

감사합니다.

WTeobp님의 프로필 이미지
WTeobp
질문자

답변 감사합니다!

무슨 말씀인지 느낌이 오긴 하는데...

 

그런데 설정 파일이 애플리케이션 내부에 위치해 있는 경우에도

결국 설정 파일을 수정하는 행위는 1번만 하면 될지 몰라도,

대신 배포하는 행위를 N번, 즉 N대의 서버에 일일이 다시 배포해 주어야 하는 거 아닌가요?

 

그럼 결국 이 경우에도 설정 파일 수정에 의한 불편함이 여전히 남아 있는 건데,

왜 설정 파일이 외부에 위치해 있는 경우에만 해당하는 문제점처럼 말씀하신 거지...?

라는 의문이 들어서 질문드렸습니다.

 

제가 별거 아닌 걸 가지고, 잘못된 방향으로 너무 오래 생각하고 있는 것 같네요...

죄송합니다.

아닙니다 ㅎㅎ

그런데 설정 파일이 애플리케이션 내부에 위치해 있는 경우에도

결국 설정 파일을 수정하는 행위는 1번만 하면 될지 몰라도,

대신 배포하는 행위를 N번, 즉 N대의 서버에 일일이 다시 배포해 주어야 하는 거 아닌가요?

=> 저는 이 경우는 배포방식을 자동화해줌에 따라 편하게 개선할 여지가 있다고 생각합니다 🙂 항상 10대의 서버에 배포를 하는 애플리케이션이라면 코드를 git으로 푸시했을 때 빌드한 결과물을 10대의 서버에 배포되도록 자동화할 수 있습니다. 그렇다면 일일이 서버에 배포할 수고로움을 덜 수 있을 것 같습니다.

WTeobp님의 프로필 이미지
WTeobp
질문자

설정 파일이 내부에 위치해 있는 경우, 즉 설정 파일도 버전 관리의 대상이 되면

"개선의 여지가 있다."라는 것이 핵심이군요.

감사합니다!

0

안녕하세요, 인프런 AI 인턴입니다.

WTeobp님께서 설명해주신 문제는 실제 운영 환경에서 중요한 고려 사항입니다. application.properties 파일을 프로젝트 내부에 두는 경우에도 서버 여러 대의 설정을 개별적으로 관리하는 불편함이 있을 수 있습니다. 이 문제점을 해결하기 위해 보통 다음과 같은 방법을 고려할 수 있습니다:

  1. 환경별 프로필 사용: Spring Boot에서는 다양한 환경 (예: 개발, 테스트, 운영 등)에 맞춰 다양한 프로필을 사용할 수 있게 해줍니다. 각각의 환경에 알맞는 application-{profile}.properties 파일을 만들어 환경별 설정을 쉽게 관리할 수 있습니다.

  2. 외부 설정 파일 활용: spring.config.location 속성을 활용하여 애플리케이션이 실행될 때 외부 경로로부터 설정 파일을 불러올 수 있습니다. 이렇게 하면 실제 배포된 환경의 설정을 쉽게 관리할 수 있으며, 모든 서버에서 통일된 파일을 사용할 수 있습니다.

  3. 구성 서버 사용: Spring Cloud Config처럼 중앙 관리 서버를 사용하는 방법도 있습니다. 이를 통해 여러 서버의 설정을 중앙에서 관리하고 자동으로 업데이트할 수 있습니다.

아래 링크에서 유사한 주제를 다루고 있는 질문을 확인하실 수 있습니다:
- application.yml vs application.properties

위에서 설명한 내용이 현재 질문의 맥락을 잘 설명하는 데 도움이 되었길 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

WTeobp님의 프로필 이미지
WTeobp

작성한 질문수

질문하기