MSA 란 무엇일까?
MSA는 하나의 애플리케이션을 여러 개의 독립적인 서비스로 분리하여 개발, 배포, 유지보수를 용이하게 하는 소프트웨어 아키텍처 스타일이다.
즉, 모든 코드가 하나의 코드베이스에 포함되어있는 모놀리틱 아키텍처와 달리, MSA는 각 서비스가 각각 독립적으로 구성되어 있다.

MSA를 사용하는 기업은 대표적으로 넷플릭스가 있다.

이렇게 MSA는 특정 서비스에 대한 확장성과 독립적 배포, 유연성이 높지만 그만큼 복잡성과 운영비용이 크다.
Spring Cloud란 무엇일까?
Spring Cloud는 MSA 개발을 위해 다양한 도구와 서비스를 제공하는 Spring 프레임워크의 확장이다.
Spring Cloud의 주요 모듈

서비스 등록 및 디스커버리 - Eureka
Eureka는 넷플릭스가 개발한 서비스 디스커버리 서버로, MSA에서 각 서비스의 위치를 동적으로 관리한다.
- 서비스 레지스트리 : 모든 서비스 인스턴스의 위치를 저장하는 중앙 저장소
- 헬스 체크 : 서비스 인스턴스의 상태를 주기적으로 확인
로드 밸런싱 - Ribbon
Ribbon은 넷플릭스가 개발한 클라이언트 사이드 로드 밸런서로, 서비스 인스턴스 간의 부하를 분산시킨다.
- Eureka로부터 서비스 인스턴스 리스트를 제공받아 로드 밸런싱에 사용한다.
- 라운드 로빈, 가중치 기반 등 다양한 로드 밸런싱 알고리즘을 지원한다.
- Failover : 요청 실패 시 다른 인스턴스로 자동 전환한다.
서킷 브레이커 - Hystrix, Resilence4j
Hystrix는 넷플릭스가 개발한 서킷 브레이커 라이브러리로, 서비스 간의 호출 실패를 감지하며 시스템의 전체적인 안정성을 유지한다.
- 클로즈드, 오픈, 하프-오픈 상태를 통해 호출 실패를 관리한다.
- Failback : 호출 실패 시 대체 로직을 제공하여 시스템 안정성을 확보한다.
- Hystrix Dashboard를 통해 서킷 브레이커 상태를 모니터링한다.
Resilience4j는 자바 기반의 경량 서킷 브레이커 라이브러리로, 넷플릭스 Hystrix의 대안으로 개발되었다.
- 호출 실패 관리
- 호출 실패 시 대체 로직 제공
- 타임아웃 설정으로 호출의 응답 시간 설정가능
- 재시도 기능을 지원하여 일시적인 네트워크 문제에 대응
Spring Cloud 구성 요소의 활용
API 게이트웨이 - Zuul, Cloud Geteway
Zuul은 넷플릭스가 개발한 API 게이트웨이로, 모든 서비스 요청을 중앙에서 관리한다.
- 라우팅, 필터, 모니터링 역할을 맡는다. 로그인도 API 게이트웨이의 필터에서 실행한다.
Cloud Gateway는 스프링 클라우드에서 제공하는 API 게이트웨이이다.
- 라우팅, 필터, 보안, 효율성(MSA 에서 필요한 요청 처리 및 분산 환경의 관리를 효율적으로 수행함)
구성 관리 - Spring Cloud Config
분산된 환경에서 중앙 집중식 설정 관리를 제공한다.
- Config 서버 : 중앙에서 설정 파일을 관리하고 각 서비스에 제공한다.
- Config 클라이언트 : Config 서버에서 설정을 받아서 사용하는 서비스이다.
- 설정갱신 : 설정 변경 시 서비스 재시작 없이 실시간으로 반영한다.
'Backend > MSA' 카테고리의 다른 글
| 241125 보안 구성 (OAuth2 + JWT) 실습 TIL (1) | 2024.11.25 |
|---|---|
| 241122 API 게이트웨이 실습 TIL (0) | 2024.11.22 |
| 241121 서킷 브레이커 (Resilience4j) 실습 TIL (0) | 2024.11.21 |
| 241121 클라이언트 사이드 로드 밸런싱 (FeignClient) 실습 TIL (2) | 2024.11.21 |
| 241120 서비스 디스커버리 (Eureka) 실습 TIL (0) | 2024.11.21 |