마이크로서비스 간 데이터 공유를 제어하는 기반을 제공하는 오픈소스 Service Mesh Platform, ISTIO

마이크로서비스 간 데이터 공유를 제어하는 기반을 제공하는 오픈소스 Service Mesh Platform, ISTIO

트래픽 라우팅 및 룰 설정을 통해 서비스 간 트래픽 흐름 및 API 호출 제어

기본 통신 채널 제공, 스케일에 따른 인증, 권한 부여 및 서비스 통신 암호화 관리

추적, 모니터링 및 로깅 기능을 통해 Service Mesh 배포 환경에 대한 인사이트 확보

 

Istio는 Service Mesh를 구현할 수 있는 오픈소스 툴입니다. 분산 네트워크 환경, 즉, Kubernetes환경에서 가장 많이 사용되는 Service Mesh 오픈소스입니다.

마이크로 서비스 간의 모든 네트워크 통신을 담당할 수 있는 프록시인 Envoy를 사이드카 패턴으로 마이크로 서비스들에 배포한 다음, 프록시들의 설정 값 저장 및 관리/감독을 수행하고, 프록시들에 설정 값을 전달하는 컨트롤러 역할을 수행합니다. 각각의 마이크로 서비스에 사이드카 패턴으로 배포된 Envoy 프록시를 Data Plane이라고 하고, Data Plane을 컨트롤 하는 부분은 Control Plane이라고 합니다.

서로 다른 버전의 서비스를 배포하고 버전 별로 트래픽 양을 조절하거나 단순하게 connection기반으로 트래픽을 분할하는 것이 아니라 조금 더 발전된 기능으로 네트워크 패킷의 내용을 기반으로 라우팅이 가능합니다.

서비스에 대한 보안 기능이 기본적으로 존재합니다. 인증 뿐만 아니라 서비스에 대한 접근 권한 통제가 가능하고 기본적으로 역할 기반의 권한 인증(RBAC)을 지원합니다. envoy를 통해서 통신하는 모든 트래픽을 자동으로 TLS를 이용하여 암호화합니다. 이때 사용되는 인증서는 Citadel에 저장되어 있는 인증서를 암호화하여 이용하는데 Citadel은 Istio Control Plane에 존재하는 모듈입니다.

마이크로서비스의 문제점 중 하나는 서비스가 많아지면서 어떤 서비스가 어떤 서비스를 부르는지 서비스간의 의존성을 알기 어렵고, 각 서비스를 개별적으로 모니터링하기 어렵다는 문제가 있습니다. Istio는 네트워크 트래픽을 모니터링함으로써, 서비스 간에 호출 관계가 어떻게 되고, 서비스의 응답 시간, 처리량 등의 다양한 지표를 수집하여 모니터링할 수 있습니다.