1. Istio란 무엇인가?

IBM, Google에 의해, Sidecar 패턴을 이용한 Service Mesh Architecture 구현체이다.

Spring Cloud Netflix와 유사하지만 좀 더 발전된 형태라고 할 수 있다.


2. Service Mesh란?

Micro Service Architecture의 각 서비스간 통신 방법을 구체화한 방법이다.

각 서비스에 Sidecar로 위치하면서 서비스의 인/아웃 트래픽을 제어한다.

다음과 같은 기능을 필요로 한다.

  • Discovery
  • Load Balance
  • Failure Recovery
  • Monitoring

3. 구조

내부적으로 Data plane과 Control plane으로 구분된다.

3.1. Data plane

  • Envoy 셋으로 구성
  • Sidecar 형태로 배포
  • 서비스간의 통신을 연결, 제어

3.2. Control Plane

  • Envoy가 네트워크 트래픽을 라우팅할 수 있도록 설정 및 관리
  • Mixers가 정책을 적용하고 telemetry를 수집하도록 설정하는 역할

** Mixer : 플랫폼 독립적인 구성 요소로 Service Mesh 전반에 접근 제어와 정책 사용을 적용하며 Envoy proxy와 다른 서비스들로부터 telemetry 데이터를 수집한다.


4. Envoy

L7 프록시로 로드 밸런스 정책을 정의, 적용할 수 있다.


5. 기타

5.1. Amazon App Mesh

2019년 현재 일부 지역에서만 제한적으로 제공이 되고 있다. Fargate, ECS, EKS 등과 함께 사용 가능하다.

App Mesh도 컨테이너에 오가는 트래픽 관리를 위해 Envoy를 사용한다. 애플리케이션 내부 코드 수정이나 로드 밸런서 사용이 필요 없다.  각 마이크로 서비스 시작 시 프록시가 App Mesh에 연결하고 다른 마이크로 서비스의 위치를 담고 있는 데이터를 받는다.

5.2. Google Istio

Istio 그 자체이다.