ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 외부 설정이란?
    스프링/스프링부트 2023. 9. 30. 14:18

    애플리케이션이 사용되고 있을 때, 개발이 잘 진행되고 있는지, 운영이 잘 되고 있는지 확인하는 환경이 있다.

    • 개발 환경 : 개발 서버, 개발 DB 사용
    • 운영 환경 : 운영 서버, 운영 DB 사용

     

    개발DB와 운영DB에 접근하려면 서로 다른 url을 사용해야 한다는 문제점이 있다.

    사진 : 인프런 스프링 강의

    문제점을 해결하는 가장 단순한 방법은 각각의 환경에 맞게 애플리케이션을 빌드하는 방법이다.

     

    하지만 이러한 방법은 환경에 따라서 빌드를 여러번 해야하기 때문에 좋은 방법이 아니다.

    다른 빌드 결과를 사용하기 때문에 예상치 못한 문제가 발생할 수 있기 때문이다. 또한, 각 환경에 맞추어 최종 빌드가 나온 결과물은 다른 환경에서 사용할 수 없어서 유연성이 떨어지기에 다른 환경이 필요한 그곳에 맞춘 빌드를 또 생성해야 한다.

     

     

     

    외부 설정

    그래서 보통 아래 사진과 같이 빌드는 한 번만 하고 각 환경에 맞추어 실행 시점에 외부 설정값을 주입한다.

    사진 : 인프런 스프링 강의

    배포 환경과 무관하게 하나의 빌드 결과물을 만들 때 설정값을 포함시키지 않는다.

    설정값은 실행 시점에 따라 외부에서 각 환경별로 주입해준다. 개발 서버는 app.jar를 실행할 때 dev.db.com 값을 외부 설정으로 주입해주고, 운영 서버는 app.jar를 실행할 때 prod.db.com 값을 외부 설정으로 주입해준다.

     

     

    이렇게 하면 빌드도 한번만 하면 되고, 개발 버전과 운영 버전의 빌드 결과물이 같기 때문에 개발환경에서 검증되면 운영 환경에서도 믿고 사용할 수 있다. 이후에 새로운 환경이 추가되어도 별도의 빌드 과정 없이 app.jar를 사용해서 새로운 환경을 추가할 수 있다.

     

    유지보수하기 좋은 애플리케이션을 개발하는 데 중요한 것은 변하는 것과 변하지 않는 것의 분리이다. 각 환경에 따라 변하는 외부설정 값은 분리하고, 변하지 않는 코드와 빌드 결과물을 유지하는 것이 좋은 방법이다.

     

     

     

     

    애플리케이션을 실행할 때 필요한 설정값을 외부에서 어떻게 불러와서 애플리케이션에 전달할 수 있을까?

    1. OS 환경 변수 : OS에서 지원하는 외부 설정, 해당 OS를 사용하는 모든 프로세스에서 사용
    2. 자바 시스템 속성 : 자바에서 지원하는 외부 설정, 해당 JVM안에서 사용
    3. 자바 커맨트 라인 인수 : 커맨드 라인에서 전달하는 외부 설정, 실행시 main(args) 메서드에서 사용
    4. 외부 파일(설정 데이터) : 프로그램에서 외부 파일을 직접 읽어서 사용

     

     

    다음 포스팅부터 4개 모두를 공부하고, 스프링이 어떻게 통합하는지를 알아볼 것이다.

Designed by Tistory.