더북(TheBook)

마이크로서비스 갱신

마이크로서비스와 함께 스프링 클라우드 컨피그 서비스를 사용할 때 프로퍼티를 동적으로 변경하기 전에 먼저 고려해야 할 사항은 동일한 서비스에 대한 여러 인스턴스가 실행 중일 수 있다는 것이다. 서비스의 모든 인스턴스를 새로운 애플리케이션 구성으로 갱신해야 한다. 이러한 문제를 해결할 몇 가지 방법이 있다.

스프링 클라우드 컨피그 서비스는 변경이 발생할 때 이 서비스를 사용하는 모든 클라이언트에 게시(publish)할 수 있는 스프링 클라우드 버스(Spring Cloud Bus)라는 푸시(push) 기반의 메커니즘을 제공한다. 이 스프링 클라우드 버스에는 별도 미들웨어인 RabbitMQ가 필요하다. 이 방법은 변경을 감지하는 매우 유용한 수단이지만 모든 스프링 클라우드 컨피그 백엔드(예를 들어 콘술(Consul))가 이 푸시 메커니즘을 지원하는 것은 아니다. 다음 장에서 스프링 클라우드 서비스 디스커버리와 유레카(Eureka)를 사용하여 서비스의 모든 인스턴스를 등록할 것이다.

애플리케이션 구성 갱신 이벤트를 처리하는 기술 중 하나는 스프링 클라우드 컨피그에서 애플리케이션 프로퍼티를 새로 고치는 것이다. 그런 다음 서비스 디스커버리 엔진에 질의하여 서비스의 모든 인스턴스를 찾고 /refresh 엔드포인트를 직접 호출하는 간단한 스크립트를 작성한다.

물론 모든 서버를 재시작하여 새로운 프로퍼티를 가져올 수도 있다. 이 방법은 특히 도커 같은 컨테이너에서 서비스를 운영하고 있다면 손쉽게 할 수 있는 일이다. 도커 컨테이너는 수초 만에 재시작되고 애플리케이션 구성을 강제로 다시 읽게 한다.

클라우드 기반 서버는 일시적(ephemeral)이라는 것을 기억하라. 새로운 구성으로 새 인스턴스를 시작한 후 이전 서비스를 해체하는 것을 두려워하지 마라.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.