배경
Istio 서비스메시의 아키텍처 중에서 컨트롤 플레인과 데이터 플레인에 대해 정리해본다.
내용
서비스메시를 얘기하다보면 L4/L5나 L7 레이어에 대해 언급하게 된다.
이러한 용어는 OSI 에서 나온 것으로 아래와 같이 네트워크 통신을 위한 7가지 레이어가 있다.
•
레이어 1 : 물리 레이어 {Physical Layer}
•
레이어 2 : 데이터 링크 레이어 {Data Link Layer}
•
레이어 3 : 네트워크 레이어 {Network Layer}
•
레이어 4 : 전송 레이어 {Transport Layer}
•
레이어 5 : 세션 레이어 {Session Layer}
•
레이어 6 : 표현 레이어 {Presentation Layer}
•
레이어 7 : 애플리케이션 레이어 {Application Layer}
서비스메시는 OSI 모델의 레이어7에서 마이크로서비스간의 트래픽을 관리한다.
전반적으로 서비스메시는 서비스 간 통신을 처리하기 위한 인프라다.
컨트롤 플레인과 데이터 플레인이라는 용어는 처음에는 소프트웨어 정의 네트워크에서 사용되었다.
컨트롤 플레인은 네트워크의 두뇌, 데이터 플레인은 네트워크 트래픽이 통과하는 장치로 생각할 수 있다.
컨트롤 플레인은 두뇌이기 때문에 서버로 비유하면 CPU 같은 처리를 하는 역할을 하고,트래픽이 통과하는 장치로 생각할 수 있기 때문에 데이터 플레인은 라우터{L3}로도 생각할 수 있다.
예를들어 몇년 전에 자체 소프트웨어와 함께 제공된 라우터{ex)공유기}를 구입했다고 가정해보자.
나중에 하드웨어를 변경하지 않고도 소프트웨어를 업그레이드할 수 있음을 알게 됐다.
소프트웨어는 컨트롤 플레인이고, 물리적 장치는 데이터 플레인 또는 포워딩 플레인이다.
프록시가 서비스 간 통신을 처리하는 서비스메시 아키텍처에도 동일한 개념이 적용된다.
컨트롤 플레인은 정책과 구성을 통해 데이터 플레인에서 실행되는 프록시를 관리한다.
Istio는 Envoy Proxy 를 사용한다.
Envoy 는 트래픽의 상태, 이동, 분할, 라우트를 수집하고 모든 서비스 호출에 대한 텔레메트리를 수집한다.
HTTP/1.1, HTTP/2, gRPC, TCP와 같은 여러 프로토콜에 대한 L3레이어와 L4레이어의 바이트-인 바이트-아웃 데이터를 필터링할 수 있다.
Envoy는 서비스와 클라이언트 간의 호출을 가로채는 사이드카 프록시로서 모든 서비스 Pod 와 함께 배포된다.
Envoy는 라이브러리가 아니라 프록싱하는 마이크로서비스와 독립적으로 업데이트할 수 있는 별도의 컨테이너이다.