이번 챕터에서는 Spring Cloud Bus와 Spring Cloud Config Monitor를 사용하여 마이크로서비스 구성 변경을 자동화하는 방법을 배웁니다.
이 방법을 사용하면 GitHub의 변경 사항이 자동으로 Spring Cloud Config Server로 전달되고, 구성 파일이 업데이트되며, 마이크로서비스 인스턴스들이 새로고침 없이 최신 구성을 반영할 수 있습니다.
config-server의 pom.xml 파일에 Spring Cloud Config Monitor 의존성을 추가합니다.
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-monitor</artifactId>
</dependency>
이 의존성을 추가하면 config-server는 /monitor라는 새로운 API 엔드포인트를 노출합니다.
config-server의 application.yml 파일에서, management.endpoints.web.exposure.include 설정을 추가하여 모든 관리 엔드포인트를 노출합니다.
management:
endpoints:
web:
exposure:
include: "*"
config-server와 모든 마이크로서비스의 application.yml 파일에 RabbitMQ 연결 설정을 추가합니다.
spring:
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
GitHub 리포지토리 설정에서 Webhook을 추가합니다. Webhook은 GitHub에서 변경이 발생할 때마다 자동으로 /monitor API를 호출합니다.
Webhook URL은 다음과 같이 설정합니다:
http://:8071/monitor
이 설정은 GitHub의 변경 사항이 자동으로 Config Server로 전달되도록 합니다.
변경 사항이 GitHub에 커밋되면, Webhook이 자동으로 /monitor API를 호출하고, Spring Cloud Bus와 RabbitMQ를 통해 모든 관련 마이크로서비스 인스턴스에 구성 변경 사항이 전파됩니다.
이 과정에서 수동으로 bus refresh 또는 refresh API를 호출할 필요가 없습니다.
GitHub 리포지토리에서 Webhook을 설정하고, 변경 사항이 푸시될 때마다 /monitor API를 호출하도록 구성합니다.
GitHub에서 구성 파일을 수정하고 커밋합니다.
변경 사항이 적용된 후, 각 마이크로서비스 인스턴스가 새로운 구성을 반영하는지 확인합니다. 이전과 달리 bus refresh를 수동으로 호출할 필요가 없습니다.
이 방법을 사용하면 마이크로서비스의 구성 변경을 자동화할 수 있으며, 수동 개입 없이 구성 파일 변경 사항이 자동으로 전파됩니다. 이를 통해 운영의 편의성과 효율성을 크게 향상시킬 수 있습니다.
다음 챕터부턴 마이크로서비스를 Docker 이미지로 변환하고, 이를 Docker Compose를 사용해 실행하는 방법을 다룹니다.