Print
카테고리: [ Cloud Computing & MSA ]
조회수: 3974

0. 연관 문서


1. Istio란 무엇인가?

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

Spring Cloud Netflix와 유사하지만 좀 더 발전된 형태라고 할 수 있는데, 비교를 해보자면..

물론 Spring Cloud는 필요한 도구만 선택적으로 선택할 수 있으며, 애플리케이션에 직접 적용하기 때문에 유연하게 적용 가능하다. 대신 자바와 스프링이라는 제약이 발생하고 코드 레벨에서 제어해야 한다는 점이 있다.

반대로 Istio는 응용(코드) 레벨이 아닌 인프라 레벨로 존재하여 플랫폼 의존성이 적고 개발 언어에도 독립적이다. 근데 아직 시장 성숙도가 낮고 서비스마다 Proxy가 추가되는 형태로 오버헤드가 크다.


2. Service Mesh란?

Service Mesh는 Micro Service Architecture의 원활한 통신을 지원하고 각 서비스간 통신 방법을 구체화한 방법이다.

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

다음과 같은 기능을 제공한다.

2.1. Trafic Management

Istio의 쉬운 규칙 설정 및 트래픽 라우팅은 서비스간 트래픽 흐름과 API 콜을 제어할 수 있게 해준다. 

2.2. Security

Istio의 보안 기능은 개발자들에게 애플리케이션 단에서의 보안에 대산 근심을 덜어준다.

2.3. Policies

Istio는 애플리케이션을 위한 커스텀 정책을 설정할 수 있게 해준다.

2.4. Observability

Istio의 트레이싱, 모니터링, 로깅 기능은 서비스 매시 배포 내부를 더 깊이 살펴볼 수 있게 해준다.


3. 구조

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

3.1. Data plane

3.2. Control Plane

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


4. Envoy

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

L7이기 때문에 다른 L4 Proxy에 비해서는 다소 느리다.


5. 기타

5.1. Amazon App Mesh

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

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

5.2. Google Istio

Istio 그 자체이다.