본문 바로가기

Back/Java

[Java] 서버 실행 환경 조회하기 (베타인지 확인해서 로직 적용)

 

배경

이메일 알림 발송 기능을 구현하던 중, 테스트 할때는 테스트용 계정에서 메일이 수신되도록 구현하려고 함.

로컬이나 알파에서는 테스트 계정.

베타에서는 실제 담당자한테 메일을 발송.

 

이슈

실행환경을 확인해서 beta가 아닐때는 (local 또는 alpha 일때) 테스트 계정으로 수신자를 설정.

String env = System.getproperty("spring.profiles.active");
if(env.equals("beta")) {
    // 실제 담당자로 수신인 셋팅
} else {
    // 테스트계정으로 수신인 셋팅
}

 

위와 같이 적용했을때 로컬에서는 알파환경으로 실행해도 이슈가 발생하지 않고 메일발송이 정상작동 함.

알파서버를 실제로 올렸을 때 에러로그없이 메일발송이 되지 않고, 500에러 발생.

 

 

 

문제 해결

어떤 부분에서 에러가 발생하는지 찾기 위해서 이메일 발송로직을 통째로 try catch로 잡아서 로그를 찍어봄.

환경을 조회하는 코드를 아래와 같이 변경.]

각 환경 프로퍼티 파일에 env를 지정.

필요한 곳에서 property를 읽어와서 사용.

 

//application-local.yml
env: local

//application-alpha.yml
env: alpha

//application-beta.yml
env: beta
@Value("${env}")
private String env;
    
public void sendEailEvent(String html, String lang) {
    if(env.equals("beta")) {
        // 실제 담당자로 수신인 셋팅
    } else {
        // 테스트계정으로 수신인 셋팅
    }
}

 

 

 

 

끝-.