Service Mesh는 쉽게 말해 마이크로 서비스 간의 통신(네트워크)를 담당하는 인프라 계층
기존의 서비스 아키텍처에서의 호출이 직접 호출 방식이였다면, Service Mesh에서의 호출은 자체 인프라 계층의 proxy를 통해 이루어진다.
마이크로 서비스 구성 요소간 상호 통신을 위해 Service Discovery,Service Routing,Failure Recovery,Load Balancing,보안 등의 문제를 처리할 기능을 포함
(1) 이점
- 개발자들이 서비스 간의 안정적인 연동에 집중하는 대신 비즈니스 가치를 추구하는일 좀 더 집중 가능
- Jaeger Tracing을 통해 요청의 분산 추적은 서비스와 함께 가시적인 인프라 계층을 제공하여 문제를 손쉽게 인식하고 진단
- Service Mesh는 장애가 발생한 서비스로부터 요청을 재 라우팅하여 다운 타임 발생 시 어플리켕션 복구 능력 향상
- 성능 매트릭을 통해 런타임 환경에서 커뮤니케이션을 최적화 하는 방법 제안
(2) 주요 기능
- 요청 라우팅 제어
- 계단식 장애 방지(서킷브레이크)
- 부하 분산 알고리즘(로드밸런싱)
- 보안 기능 강화(TLS,암호화, 인증 및 권한 부여)
- 서비스 간 계층에서 계측 정보를 제공하는 매트릭
(1) 구조
기존의 서비스 아키텍처에서의 호출이 직접 호출 방식이였다면, Service Mesh에서의 호출은 서비스에 딸린 proxy끼리 이루어진다. 이는 서비스의 트래픽을 네트워크단에서 통제 할 수 있고 Client의 요구에 따라 proxy단에서 라우팅 서비스도 가능하게 한다.
이러한 다양한 기능을 수행하기에 기존 TCP 기반의 proxy로는 한계가 있어 Service Mesh에서의 통신은 사이드카로 배치된 경량화되고 L7 계층 기반의 proxy를 사용
(2) Control Plain,Data Plain
Control Plain
- Control Plain은 트래픽을 제어하는 정책 및 구성에 따라 proxy에게 설정값을 전달하고 관리하는 컨트롤러 역할
Data Plain
- Data Plain은 Proxy를 통해 마이크로 서비스 간에 오고 가는 모든 네트워크 통신을 조정하고 제어
- Service Discovery, Load Balancing, TLS Termination, Cricuit Breaker 등의 기능을 제공하며 가장 인기있는 Data Plain 인 Envoy proxy가 많이 사용된다.
(1) 차이
API Gateway는 중앙 집중식 제어 영역
Service Mesh는 애플리케이션 기능을 인프라 계층에 의해 관리되는 마이크로 서비스로 분리하는 방법
즉 API Gateway는 Service Mesh 아키텍처의 중재자 역할
최근 MSA에서 API Gateway는 외부(External)에 위치하여 내부서비스를보호 및 제어하는 역할을 하고, Service Mesh는 내부(Internal)에 위치하여 서비스를 관리하는 구조로 많이 사용 된다.
(2) 필요성
Service Mesh 와 API Gateway는 함께 작동하여 외부 트래픽을 효율적으로 수락 한 다음 해당 트래픽이 네트워크에 있으면 효과적 라우팅 가능
-> API Gateway는 인증,Edge Routing 및 기타 에지 기능을 처리하며 Service Mesh는 아키텍처에 대한 세밀한 관찰 및 제어를 제공
(3) 향후 전망
Service Mesh 기술이 빠르게 발전하고 API Gateway의 일부 기능을 수행
독립형 API Gateway의 많은 기능이 Service Mesh에 흡수되어 점점 더 적게 사용될 것으로 예측