MSA의 통신의 복잡함 해결
- 각 서비스 간의 통신의 복잡함 → 서비스 간 연결 구조를 알기 어려워 장애가 생겼을 시 위치 파악이 어려움
- ex) 클라이언트 → 서비스A → 서비스B 로 통신을 한다고 했을 때, 서비스B가 느려지거나 장애가 생긴다면 서비스 A에서 파악이 어려움
- 위와 같은 상황을 해결하기 위한 기술 → Service Mesh
Service Mesh
MSA의 단점을 인프라 단계에서 해결
Service Mesh
- 서비스와 서비스간의 통신이 있을 때, 서비스마다 프록시를 둠.
- 서비스간의 통신은 프록시를 통해서 해결하고, 한쪽 서버에서 장애가 났을 때 프록시가 서킷 브레이커 역할을 대신해준다.
- 서킷 브레이커(Circuit breaker)?
- 디자인 패턴의 종류
- 서비스A → 서킷 브레이커 → 서비스B 를 예시로 들었을 때, 서비스B가 장애가 발생했다면 서킷브레이커는 서비스B와의 통신을 끊고, 서비스A에게 에러를 반환하여 서비스A가 서비스B를 기다리지 않고 에러 로직을 처리 할 수 있도록 한다.
- Netflix에서 이러한 마이크로서비스 패턴을 오픈소스화 함
- 서킷 브레이커(Circuit breaker)?
- 서비스간의 통신은 프록시를 통해서 해결하고, 한쪽 서버에서 장애가 났을 때 프록시가 서킷 브레이커 역할을 대신해준다.
- 컨트롤 플레인과 데이터 플레인을 통해 관리
- 컨트롤 플레인(Control Plane)
- 프록시들에게 설정 정보를 넣어주고, 수행할 작업을 알려줌
- 서비스 검색, TLS 읹으서 발급, 매트릭 집계 등 데이터 플레인이 작동하는데 필요한 컴포넌트를 제공
- 데이터 플레인(Data Plane)
- 설정 정보 값을 바탕으로 트래픽을 제어
- 모든 서비스에 대한 인바운드/아웃바운드 트래픽을 관장
- 인바운드(inbound)?
- 네트워크에 들어오는 정보
- 메시지가 클라이언트에서 서버로 향하는 것
- ex) 첨부파일을 서버에 저장 할 때(업로드)
- 아웃바운드(outbound)
- 네트워크에서 나가는 정보
- 클라이언트의 요청을 처리하고, 메시지가 서버에서 클라이언트로 다시 향하는 것
- ex) 첨부파일을 다운로드 할 때(다운로드)
Service Mesh 종류
- Spring Cloud Netfix
- Java언어만 지원하는 Library 형식으로 코드와의 결합도가 높음
- Istio 솔루션
- 결합도가 낮음
'Web' 카테고리의 다른 글
[Web] MFA란(Micro Frontend Architecture) (0) | 2024.05.03 |
---|---|
[Web] 쿠키, 세션, 웹 스토리지의 차이점과 사용처 (0) | 2023.02.08 |
[Web] HTTP와 WebSocket의 차이 (0) | 2022.12.29 |