03. MicroService(Outer)

클라우드 네이티브 네트워킹 기술: Envoy, Ingress, Istio

카이저일공 2024. 1. 21. 00:12
클라우드 네이티브 네트워킹 기술: Envoy, Ingress, Istio

클라우드 네이티브 네트워킹 기술: Envoy, Ingress, Istio

가. Envoy의 주요 특징과 활용 방안

1. 개요

Envoy는 마이크로서비스 아키텍처에서 서비스 간의 통신을 관리하고 최적화하는 데 중점을 둔 고성능 프록시입니다. 클라우드 환경과 컨테이너화된 애플리케이션에 특히 적합합니다.

2. 주요 특징

(1)다양한 네트워크 프로토콜 지원

Envoy는 HTTP/2, gRPC, MongoDB, Redis 등 다양한 애플리케이션 프로토콜을 지원합니다. 이를 통해 여러 종류의 트래픽과 네트워크 패턴을 효율적으로 처리할 수 있습니다.

(2)서비스 메쉬 구성 요소로 활용

서비스 메쉬 아키텍처에서 Envoy는 각 마이크로서비스 인스턴스 옆에 배치되어 서비스 간 통신을 중재합니다. 이를 사이드카(Sidecar) 패턴이라고 합니다. 서비스 메쉬에서의 Envoy 사용은 네트워크 통신의 복잡성을 추상화하고, 개발자가 비즈니스 로직에 더 집중할 수 있게 해줍니다.

(3)고성능 및 동적 구성 가능

Envoy는 멀티스레딩과 비동기 프로그래밍 모델을 활용하여 고성능을 제공합니다. API를 통한 동적 구성이 가능하여, 런타임 중에도 프록시 동작을 변경할 수 있습니다.

(4)Istio와의 통합

Envoy는 Istio 서비스 메쉬의 기본 프록시로 사용되며, Istio의 정책과 규칙을 구현합니다. Istio와 결합할 때, Envoy는 강화된 보안, 트래픽 관리, 서비스 간 통신의 관찰성 및 모니터링 기능을 제공합니다.

3. 사용 사례

Envoy는 클라우드 기반의 마이크로서비스 환경에서 널리 사용됩니다. 특히, 서비스 간 통신의 복잡성을 관리하고, 네트워크 성능을 최적화하며, 보안을 강화하는 데 탁월한 성능을 발휘합니다.

나. Ingress의 주요 특징과 사용 사례

1. 개요

Ingress는 쿠버네티스 클러스터의 외부 인터페이스 역할을 하며, 외부에서 오는 요청을 클러스터 내부의 서비스로 정확하게 라우팅합니다.

2. 주요 특징

(1)외부 트래픽 라우팅 및 관리

Ingress는 클러스터 외부에서 들어오는 HTTP/HTTPS 요청을 클러스터 내의 특정 서비스로 라우팅합니다. URL, 도메인, 경로 기반 라우팅을 통해 복수의 서비스로 트래픽을 분산시킬 수 있습니다.

(2)로드 밸런싱 기능

Ingress는 로드 밸런싱을 제공하여, 들어오는 트래픽을 여러 서비스 인스턴스에 균등하게 분배합니다. 이는 고가용성과 트래픽 처리 효율성을 높이는 데 기여합니다.

(3)SSL/TLS 종료

Ingress는 SSL/TLS 종료를 지원하여, 보안 연결을 통한 트래픽을 처리할 수 있습니다. 이는 클러스터 내부의 서비스들이 SSL/TLS 처리에 대한 부담 없이 운영될 수 있게 합니다.

(4)가상 호스팅 제공

다양한 호스트 이름과 경로에 대한 라우팅 규칙을 정의할 수 있습니다. 이를 통해 단일 Ingress로 여러 도메인의 트래픽을 관리할 수 있습니다.

(5)클라우드 네이티브 트래픽 관리

Ingress는 쿠버네티스 환경에 최적화된 트래픽 관리 기능을 제공합니다. 클라우드 네이티브 애플리케이션의 접근성과 운영 효율성을 높여줍니다.

3. 사용 사례

Ingress는 특히 대규모 웹 애플리케이션, 마이크로서비스 기반 아키텍처, 다중 도메인을 가진 애플리케이션의 외부 트래픽 관리에 적합합니다.

다. Istio의 주요 특징과 사용 사례

1. 개요

Istio는 서비스 메쉬를 구축하여 마이크로서비스 간의 복잡한 통신을 관리하고, 트래픽 관리, 보안, 관찰성 등을 제공합니다.

2. 주요 특징

(1)서비스 간 통신의 제어 및 관찰

Istio는 서비스 간의 통신을 효과적으로 제어하고 관찰할 수 있는 기능을 제공합니다. 트래픽 라우팅, 접근 제어, 장애 주입, 테스트를 위한 트래픽 쉐도잉 등의 기능을 통해 복잡한 네트워크 상호작용을 관리합니다.

(2)Envoy를 통한 효과적인 트래픽 관리

Istio는 Envoy 프록시를 사용하여 각 마이크로서비스의 트래픽을 관리합니다. 이를 통해 라우팅 규칙, 재시도, 장애 복구, 트래픽 분할 등의 고급 트래픽 관리 기능을 쉽게 구현할 수 있습니다.

(3)로드 밸런싱 및 장애 격리

Istio는 로드 밸런싱을 통해 트래픽을 효율적으로 분산시킵니다. 장애 격리 기능을 제공하여, 한 서비스의 문제가 전체 시스템에 영향을 미치는 것을 방지합니다.

(4)네트워크 정책 및 보안 강화

Istio는 서비스 간 통신의 보안을 강화하기 위한 정책을 적용할 수 있습니다. JWT 인증, mTLS(상호 TLS)를 통한 암호화된 통신, 정책 기반의 접근 제어 등을 통해 보안을 강화합니다.

(5)관찰성 및 모니터링

Istio는 서비스 간의 트래픽과 성능 메트릭을 수집하고, 이를 통해 시스템의 상태를 실시간으로 모니터링할 수 있습니다. 이러한 메트릭은 시스템 성능 평가, 문제 해결, 보안 감사 등에 사용될 수 있습니다.

3. 사용 사례

Istio는 복잡한 마이크로서비스 환경에서의 네트워킹 관리를 단순화하고, 보안과 안정성을 향상시키는 데 널리 사용됩니다. 특히, 대규모 시스템에서 여러 서비스 간의 통신을 효과적으로 관리하고자 할 때 유용합니다.

라. Envoy vs Ingress vs Istio 비교

1. 용도

Envoy: 프록시로서의 역할에 중점을 두며, 마이크로서비스 간의 통신을 관리하고 최적화합니다.

Ingress: Kubernetes 클러스터로 들어오는 외부 트래픽을 클러스터 내부의 서비스로 라우팅하는 데 초점을 맞춥니다.

Istio: 전체 서비스 메쉬를 관리하는 데 중점을 두며, Envoy를 포함하여 서비스 간의 통신을 포괄적으로 관리합니다.

2. 기능적 측면

Envoy: 다양한 네트워크 프로토콜을 지원하며, 동적 구성이 가능한 고성능 프록시로서, 트래픽 관리, 로드 밸런싱, 장애 복구 등의 기능을 제공합니다.

Ingress: 클러스터 외부의 HTTP/HTTPS 트래픽을 클러스터 내 서비스로 라우팅하는 기능에 특화되어 있으며, 도메인 기반 라우팅, SSL 종료 등의 기능을 제공합니다.

Istio: Envoy를 기반으로 하는 서비스 메쉬 구성을 통해, 보다 광범위한 트래픽 관리, 보안, 관찰성 기능을 제공합니다. 이는 서비스 간의 통신을 보다 세밀하게 제어하고 관찰할 수 있게 해줍니다.

3. 적용 범위

Envoy와 Istio: 복잡한 마이크로서비스 아키텍처에서 서비스 간의 통신을 관리하는 데 적합합니다. Istio는 Envoy를 포함하여 보다 광범위한 네트워킹 요구사항을 충족시키며, 마이크로서비스의 보안, 가용성, 관찰성을 향상시킵니다.

Ingress: 주로 Kubernetes 클러스터 내부의 트래픽 라우팅과 관련된 간단한 요구사항에 적합합니다. 외부에서 클러스터로 들어오는 트래픽을 효과적으로 관리할 수 있습니다.