2022년 5월 18일 수요일

Service Mesh 에서의 Sidecar

지난 글에서 살펴본 각 Service 간 직접 호출 방식으로 구성되는 기존의 Micro Service Architecture 에서 발생 가능한 운영 및 관리 복잡성에 대한 대안인 Service Mesh Architecture 의 소개에 이어 이러한 Service Mesh 의 Data Plane 인 Sidecar (Proxy) 에 대해 알아보고자 한다.

Service Mesh 기반 Architecture 에서는 서비스 간 호출을 Proxy 를 통해 수행하게 되는데 서비스와 별도로 구성되어 운영되므로 이를 Sidecar 라고 부르기도 하며, Sidecar (proxy) 들이 모여 Mesh 형태의 Network 를 구성하여 네트워크 로직을 처리한다.

Sidecar on Service Mesh

이렇게 Sidecar (Proxy) 간 호출 수행을 통한 Service 의 트래픽에 대한 Network Layer 를 별도 구성함으로써 사용자의 요구 사항에 충족하는 트래픽 경로 설정을 비롯한 다양한 기능을 지원할 수 있게 되며 기존에 우리가 흔히 접했던 Proxy 들은 주로 TCP/IP 기반의 Layer 4 로 작동하는 것이 일반적인데, Service Mesh 에서의 Proxy 는 HTTP URL 기반 라우팅을 비롯한 다양한 요건을 충족해야 함에 따라 Layer 7 기반으로 구성되어 있다.

대표적인 Sidecar 로 Envoy 1 를 예로 들 수 있는데, “Network는 Application 에 투명해야 하고, 서비스에 문제가 발생 했을 때 문제의 원인을 쉽게 파악할 수 있어야 한다” 라는 디자인 목표를 가지고 만들어졌다. Envoy 가 제공하는 기능은 아래와 같다.

  1. L3 / L4 Proxy: TCP/UDP Proxy, TLS 인증 지원
  2. L7 Proxy: 버퍼링, 속도제한, 경로/Content 종류/Runtime 값 등에 기반한 라우팅
  3. HTTP/2: HTTP/1.1 뿐만 아니라 HTTP/2 2 까지 지원
  4. Service Discovery: Service, Cluster, HTTP Routing, Listener Socket 정보를 동적으로 수집하여 Service 탐색 및 Health Check 수행
  5. Advanced Loadbalancing: 자동 재시도, 이상치 감지, 서비스 장애 발생 시 Circuit Break 통한 장애 범위 최소화

Cloud Service에서 기본 제공하는 Load Balancer 를 비롯한 네트워크 기능으로는 구현하기 불가능한 기능들이 Envoy 와 같은 Proxy 에서 제공되는 기능을 통해 Service 운영에 필요한 설정들을 더 세밀하게 구성 하여 운영 효율성을 높일 수 있다.

Service 의 규모가 커지면 커질수록 연동이 필요한 Sidecar 의 수도 늘어나게 되어 이들을 관리하기 위한 중앙집중식 Controller 가 요구 되는데 Hashicorp 의 Consul 3 이 대표적인 예이다. Consul 이 Control Plane 으로 동작하여 Service 에 필요한 정책 및 설정을 관리하게 되고 이렇게 지정된 정책 및 설정에 대해 각 Service 의 Sidecar 가 실제 수행하는 Data Plane 으로 동작하게 된다.

Webblog App using Consul Connect Service Mesh
Webblog App using Consul Connect Service Mesh4

다음 글에서는 Service Mesh 의 Control Plane 의 예인 Consul 에 대해 알아볼 예정이다.

  1. What is Envoy
  2. HTTP/2 소개
  3. Hashicorp Consul
  4. Webblog App Part 3 – Consul Connect Service Mesh

    Related Posts

    클라우드 환경에서의 데이터베이스 가용성
    Cloud 환경에서의 효율적인 보안 및 인증 관리
    Service Mesh 에서의 Control Plane, Consul

    Leave a Reply