티스토리 뷰
인프런 이동욱님의 'Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)'을 듣고 정리한 내용입니다.
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) - 인프런 | 강의
Spring framework의 Spring Cloud 제품군을 이용하여 마이크로서비스 애플리케이션을 개발해 보는 과정입니다. Cloud Native Application으로써의 Spring Cloud를 어떻게 사용하는지, 구성을 어떻게 하는지에 대해
www.inflearn.com
1. Spring Cloud Bus
여러 개의 마이크로서비스가 있을 경우, Actuator refresh를 사용하면 각각의 애플리케이션마다 refresh를 해야하기 때문에 번거롭다. 이 점을 개선하기 위해 Spring Cloud Bus를 사용해볼 것이다.
Spring Cloud Bus는 분산 시스템의 마이크로서비스들을 메시지 브로커(RabbitMQ)와 연결하고 상태 및 구성에 대한 변경 사항을 연결된 마이크로서비스에게 전달한다.
P2P 방식이 아닌 중간에 있는 미들웨어를 사용함으로써 안정적이고 상대방에 개의치 않고 프로세스를 진행할 수 있다.
Spring Cloud Bus를 사용하는 방식은 두 가지가 있다.
1. AMQP
AMQP는 메시지 지향 미들웨어를 위한 개방형 표준 응용 계층 프로콜로, 신뢰성과 보안을 중시한다. 주로, Erlang, RabbitMA에서 사용한다.
2. Kafka 프로젝트
Scalar 언어로 개발한 오픈 소스 메시지 브로커 프로젝트이다. 분산형 스트리밍 플랫폼을 지원하고 대용량의 데이터를 처리 가능한 메시징 시스템이다.
기존 Actuator refresh를 사용할 때는 변경된 내용을 각각의 마이크로서비스마다 refresh를 해주어야만 변경된 사항을 확인할 수 있었다.
하지만 Spring Cloud Bus를 사용하면 busrefresh를 호출할 시 해당하는 마이크로서비스에 연결된 다른 마이크로서비스에게 전달시켜주는 역할을 한다.
2. RabbitMQ 설치
-brew 이용하여 설치-
3. 프로젝트 수정 - Actuator 추가
pom.xml - dependency 추가
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
application.yml - rabbitmq 설정 추가
rabbitmq:
host: 127.0.0.1
port: 5672
stream:
username: guest
password: guest
config server, user microservice, gateway servie의 application.yml에 rabbitmq를 설정해줌으로 각각의 마이크로서비스들이 rabbitmq에 노드로서 연결된다.
4. 테스트
여기서 token.secret 값을 변경한다면?
성공이긴 한데 서버로부터 받아올 값이 없다는 의미이다.
지금은 user-service 하나만 업데이트한 것이다.
user-service의 log를 보면!
apigateway-service에서도 동일한 log를 볼 수 있다.
근데... 127.0.0.1:8000/actuator/busrefresh로 호출하면 왜 안될까 .. .. ..
'Spring' 카테고리의 다른 글
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) #10 (0) | 2023.08.18 |
---|---|
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) #9 (0) | 2023.08.11 |
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) #7 (0) | 2023.08.08 |
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) #6 (0) | 2023.08.02 |
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) #5 (0) | 2023.07.28 |