728x90
MSA를 지원하는 Spring Cloud
Spring Cloud란 MSA 방식으로 개발하는 것을 도와주는 Spring에서 만든 라이브러리 입니다.
MSA에 대한 내용을 알고 있다는 가정하에 설명하겠습니다.
아래 사진이 Spring Cloud의 구조와 구성요소들을 나타낸 것입니다.
전체 동작과정을 설명하기전에 각 구성요소들의 역할을 먼저 알아보겠습니다.
API Gateway(SCG)
API Gateway는 Spring Cloud Gateway(SCG)라고도 불립니다.
SCG는 사용자의 요청을 해당 요청을 처리할 수 있는 MicroService로 전달해 줍니다.
즉, 요청을 라우팅하는 일을 합니다.
SCG의 내부 구조는 아래 사진과 같습니다.
SCG의 동작과정을 알아보겠습니다.
1. 사용자가 요청을 전송
2. GatewayHandler Mapping에서 요청경로와 일치여부를 판단후 Gateway Web Handler에 요청 전송
3. Gateway Web Handler에서 요청과 관련된 FilterChain을 통해 요청을 Filter에 전송
SCG의 기능은 요청 매핑외에도 Filter를 통한 인증,인가, 모니터링등이 있습니다.
SCG를 구현할 때는 클래스오가아닌 yaml파일을 사용해서 구현합니다.
yaml파일 구성요소는 아래와 같습니다
Route - 응답을 보낼 목적지 URI와 Filter항목을 식별하기 위한 ID로 구성되고 라우팅 목적지를 의미
Predicate - 요청을 처리하기 전 HTTP요청이 정의된 조건에 부합하는지 검사
Filter - Gateway에서 받은 요청과 응답을 수정
Service Registry
Service Registry는 Micro Service와 통신하며 관리하는 역할을 합니다.
DNS&IP or Native Cloud
Config Server
전체 설정을 관리하는 서버로 각 구성요소들에 변수를 사용하거나, 공통으로 사용되는 요소의 설정을
저장하고 있는 서버입니다.
대부분 설정에 관련된 것은 application.yml 파일에 작성하지만 수정사항이 발생할 경우에는 서비스를 중단한 뒤에
수정을 해야합니다. 이런 문제점을 해결하기 위해 설정에 관한 정보들을 따로 저장하는 공간을 만든 것입니다.
Server Discovery(Eureka)
서버의 등록과 검색을 해주는 서비스이고 서버의 부하로 인한 자동 Scale Out이 발생할 경우 새로운 서버에 대한 경로를 SCG에게 전달하는 기능을 하기도 합니다
구현 방법은 application.yml 파일에 설정을 하고 main class에 @EnableDiscoveryClient를 선언하는 것입니다.
메시지 큐(RabbitMQ,kafka)
메세지 큐는 MicroService가 API를 호출할 때 보내는 Data들을 처리하는 역할을 합니다.
메시지를 발행하는 서버를 Publisher, 메시지를 구독하고 받아서 처리하는 Subscibe, 메시지 처리하고 수신자에게 메시지를 전달하는 시스템인 Message Brocker로 구성되어있습니다.
동작 과정은 아래와 같습니다
1. Publisher가 메시지를 생성하고 전송
2. Brocker가 메시지를 Queue에 저장
3. Queue의 메시지를 적절한 Subscriber에게 전송
'Spring Cloud' 카테고리의 다른 글
Feign Client (1) | 2024.01.25 |
---|---|
Spring Cloud Config (0) | 2024.01.24 |
Spring Cloud 동작 과정 (0) | 2024.01.22 |