[스프링 핵심 원리와 활용] #7. 외부 설정과 프로필 #842
Develop-KIM
started this conversation in
동환
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
외부 설정이란?
하나의 애플리케이션을 여러 다른 환경에서 사용해야 할 때가 있다.
대표적인 예시
문제는 각각의 환경에 따라서 서로 다른 설정값이 존재한다는 점이다. 예를 들어서 애플리케이션이 개발DB에 접근하려면

dev.db.com이라는 url 정보가 필요한데, 운영DB에 접근하려면prod.db.com이라는 서로 다른 url을 사용해야 한다.이 문제를 해결하는 가장 단순한 방법은 다음과 같이 각각의 환경에 맞게 애플리케이션을 빌드하는 것이다.
dev.db.com이 필요하므로 이 값을 애플리케이션 코드에 넣은 다음에 빌드해서개발 app.jar를 만든다.prod.db.com이 필요하므로 이 값을 애플리케이션 코드에 넣은 다음에 빌드해서운영 app.jar를 만든다.이렇게 하면 각각의 환경에 맞는
개발app.jar,운영app.jar가 만들어지므로 해당 파일들을 각 환경별로 배포하면 된다.하지만 이것은 다음과 이유로 좋은 방법이 아니다.
운영 환경에서 다른 빌드 결과를 사용하기 때문에 예상치 못한 문제가 발생할 수 있다.
개발용 빌드가 끝나고 검증한 다음에 운영용 빌드를 해야 하는데 그 사이에 누군가 다른 코드를 변경할 수도 있다.
한마디로 진짜 같은 소스코드에서 나온 결과물인지 검증하기가 어렵다.
향후 다른 환경이 필요하면 그곳에 맞도록 또 빌드를 해야 한다.
그래서 보통 다음과 같이 빌드는 한번만 하고 각 환경에 맞추어 실행 시점에 외부 설정값을 주입한다.

app.jar를 빌드한다. 이 안에는 설정값을 두지 않는다.app.jar를 실행할 때dev.db.com값을 외부 설정으로 주입한다.app.jar를 실행할 때prod.db.com값을 외부 설정으로 주입한다.이렇게 하면 빌드도 한번만 하면 되고, 개발 버전과 운영 버전의 빌드 결과물이 같기 때문에 개발환경에서 검증되면 운영 환경에서도 믿고 사용할 수 있다.
그리고 이후에 새로운 환경이 추가되어도 별도의 빌드 과정 없이 기존
app.jar를 사용해서 손쉽게 새로운 환경을 추가할 수 있다.유지보수하기 좋은 애플리케이션 개발의 가장 기본 원칙은 변하는 것과 변하지 않는 것을 분리하는 것이다.
유지보수하기 좋은 애플리케이션을 개발하는 단순하면서도 중요한 원칙은 변하는 것과 변하지 않는 것을 분리하는 것이다.
각 환경에 따라 변하는 외부 설정값은 분리하고, 변하지 않는 코드와 빌드 결과물은 유지했다.
덕분에 빌드 과정을 줄이고, 환경에 따른 유연성을 확보하게 되었다.
외부 설정
애플리케이션을 실행할 때 필요한 설정값을 외부에서 어떻게 불러와서 애플리케이션에 전달할 수 있을까?

외부 설정은 일반적으로 다음 4가지 방법이 있다.
main(args)메서드에서 사용data/hello.txthello.txt:url=dev.db.comhello.txt:url=prod.db.comBeta Was this translation helpful? Give feedback.
All reactions