Envoy Proxy란?

Envoy Proxy는 고성능 분산 C++로 작성된 프록시로, 대형 MSA(Microservices Architecture)를 지원하기 위해 설계된 서비스입니다. 기존의 L3/L4 기반 프록시로는 처리하기 어려운 다양한 요구사항을 해결하기 위해, L7 기능을 갖춘 프록시로 주목받고 있습니다. Envoy는 네트워크 트래픽의 효율적인 처리 및 관리, 서비스 간 통신을 지원하는 기능들을 제공합니다.


주요 특징

1. L3/L4 계층 기능

  • TCP 프록시: TCP 기반의 트래픽 전달과 라우팅을 지원.
  • HTTP 프록시: HTTP 요청을 처리하고 라우팅.
  • TLS 인증: 보안 통신을 위한 TLS 인증 및 암호화 지원.

2. L7 계층 기능

  • 버퍼링: 요청 및 응답 데이터를 일시적으로 저장하여 효율적인 처리 제공.
  • 속도 제한: QoS(Quality of Service)를 위해 트래픽의 속도를 제한.
  • 라우팅/전달: 서비스 디스커버리 및 다중 라우팅 전략 지원.

사용 사례

  • Service Mesh 구성: Istio와 같은 Service Mesh에서 데이터 플레인으로 활용.
  • 로드 밸런싱: 트래픽을 균등하게 분배하여 서버 부하를 감소.
  • API Gateway 대용: L7 레벨에서의 정교한 트래픽 관리.

메모

  • HTTP 상태 코드 204 No Content는 요청이 서버에서 성공적으로 처리되었으나, 즉각적인 응답 콘텐츠가 없는 경우를 나타냅니다.
    • Envoy 서버로 프록시할 때 HTTP 204와 함께 response body를 실어보내도록 구현하는 경우, 문제가 발생할 여지가 있음

Envoy Proxy는 단순한 프록시 이상의 역할을 수행하며, MSA 환경에서 점점 더 중요한 역할을 담당하고 있습니다. HTTP 상태 코드와 같은 응답 관리도 서비스 통신의 중요한 부분으로, Envoy와 잘 결합될 수 있습니다.