Spring Cloud Bus 는 분산 시스템 환경, 마이크로서비스 환경에서 각각의 노드나 서비스를 연결시켜주는 경량 메시지 브로커이다.
또는 Spring cloud bus는 동적으로 config 변경을 적용하기 위한 MQ(Message Queue) Handler이다.
config가 변경되면 각 마이크로서비스는 최신 값을 갖고 오기 위해 POST로 http[s]://{microservice host}/actuator/refresh를 해줘야 한다.
이 작업을 자동화할 수도 있으나, config server가 각 마이크로서비스의 주소를 모두 관리해야 하니 비효율적이다.
즉, actuator refresh 기능은 매 어플리케이션 서비스마다 각각 실행 시켜줘야해서 불편한데
스프링 클라우드 버스 기능으로 한 번에 일괄적으로 업데이트 할 수 있다.
Spring Cloud Bus 의 구체적인 역할은 다음과 같다.
1. 메시지 큐(Mesaage Queue)에 Publish ( = config server)와 Subscriber(마이크로서비스)를 등록
2. config 변경 정보를 MQ에 전송
3. 각 마이크로서비스에서 config 동적 반영
동작 순서는 다음과 같다.
- 개발자는 configuration file 을 remote repository 에 push 한다.
- Spring Cloud Bus 가 Message Broker 로 변경된 설정 정보에 대한 Message 를 발행한다.
- Message Broker는 설정 정보를 저장하고 있는다.
- 개발자가 설정 정보가 변경되었음을 Config Server 에게 알려준다.
- Message Broker 가 해당 메시지를 Subscribing 하고 있는 Application 들 에게 Broadcasting(상태 및 구성에 대한 변경 사항을 연결된 노드에게 전달) 한다.
- 각각의 Application 은 Spring Cloud Bus 가 받은 설정 정보를 반영한다.
위에는 remote repository 기준으로 설명했으나
private git repository 어느것이든 사용이 가능하다.
local이든 remote든 native 이든 상관 없다.
또한 post/busrefresh를 어디에 하든 상관없다.
즉, 어떤 마이크로 서비스든 Spring cloud config server든 gateway든 Spring cloud bus에 연결된 누구라도 busrefresh를 호출하면
해당 하는 서비스가 변경된 사항을 Spring Cloud Bus에게 알려주고 Spring cloud bus가 이를 감지하면
자기가 관리하고 있는 다른 클라이언트에게 변경사항을 업데이트한다.
참고자료
https://happycloud-lee.tistory.com/211
'개발일지 > MSA 및 api gateway' 카테고리의 다른 글
Spring Cloud Config (0) | 2022.08.22 |
---|---|
API Gateway Service 사용(Spring Cloud Gateway + Eureka) (0) | 2022.08.17 |
Cloud Native Application (0) | 2022.08.10 |