스프링 클라우드 컨피그 갱신 되지 않는 이슈(feat. 서비스 디스커버리)
Last updated
Last updated
스프링 클라우드 컨피그 서버를 구축했다면 프로퍼티를 어떻게 갱신할지 고민할 것이다
우선 스프링 클라우드 컨피그를 갱신하는 방법에 대해서 살펴보자
애플리케이션을 재시작 한다
actuator의 refersh를 사용하여 변경된 프로퍼티를 사용하는 애플리케이션만 업데이트 해준다
bus-refresh를 사용하여 스프링 클라우드 컨피그를 사용하는 모든 클라이언트를 업데이트 해준다
애플리케이션을 매번 재시작하는건 스프링 클라우드 컨피그를 사용하는 메리트가 없다
refresh를 사용하여 특정 애플리케이션에만 업데이트해주는 것도 매번 프로퍼티를 갱신할 때마다 사용되고 있는 클라이언트를 알아야 하므로 번거로울 수 있다
결국 bus-refresh를 사용하는게 관리하기도 편하고 심플할것 같다
bus-refresh를 사용하는 방법은 간단하다
프로퍼티가 변경되는 시점에 스프링 클라우드 서버에 bus-refresh를 호출해주면 된다
스프링 클라우드 서버는 바라보고 있는 클라이언트 모두에게 프로퍼티를 갱신해줄 것이다
bus-refresh API를 호출하는 시점을 github에서 푸시 이벤트가 발생할때 호출하도록 웹훅을 설정하였다
github 웹훅 내역을 보면 response status code는 200으로 정상적으로 호출되었다고 기록되어 있다
그 이유는 서비스 디스커버리 때문이었다
하나의 프로퍼티를 사용하는 애플리케이션이 여러개 일 수도 있는데 각각의 클라이언트 정보가 고유하지 않아서 스프링 클라우드 컨피그 서버에서 클라이언트에게 갱신할 수 있는 정보를 전달하지 못하는 이슈가 있었다
그래서 스프링 클라우드 컨피그를 사용하는 클라이언트들은 본인의 고유값 정보를 서버에 전달해주어야 한다