해당 스터디는 90DaysOfDevOps
https://github.com/MichaelCade/90DaysOfDevOps
를 기반으로 진행한 내용입니다.
Day 43 - Let's go sidecarless in Ambient Mesh
마이크로서비스 아키텍처는 분산된 특성으로 인해 서비스 간 통신 보안, 관찰 가능성, 트래픽 제어 등 다양한 도전 과제를 안고 있다.
통신 보안: 서비스 간 mTLS를 통한 안전한 통신
관찰 가능성: 트래픽 메트릭, 로깅, 트레이싱을 통한 상호 작용 모니터링
트래픽 제어: 로드 밸런싱, 속도 제한, 재시도 등의 정책 적용
Service Mesh는 이러한 분산 시스템의 공통적인 문제들을 애플리케이션 코드의 수정 없이 처리하기 위해 등장한 인프라 계층이다.

서비스 간 통신을 위한 프로그래밍 가능한 프레임워크를 제공하여, 개발자들이 비즈니스 로직에만 집중할 수 있도록 돕는다. 이 분야의 대표적인 솔루션이 바로 Istio이다.
기존 Istio는 사이드카 (Sidecar) 패턴을 사용하여 서비스 메쉬 기능을 구현하였다. 이는 각 워크로드 컨테이너 옆에 Envoy 프록시를 별도의 컨테이너로 배포하는 방식이다.

하지만 해당 방식은 다음과 같은 운영적 한계를 야기하였다.
리소스 오버헤드: 클러스터 내 모든 파드에 사이드카가 배포되므로 리소스 사용량이 2배 이상 증가하여 비용과 성능에 부담
운영 복잡성: 각 사이드카의 인증서 관리 및 업그레이드/패치 부담이 개별 워크로드로 전가되어 복잡성이 커짐
유연성 부족: 단순한 L4 전송 보안만 필요한 경우에도, L7 기능을 포함한 무거운 사이드카를 배포하고 관리해야 하는 불편함 존재
이러한 배경 속에서 Istio는 새로운 아키텍처인 Ambient Mesh (앰비언트 메쉬)를 선보이며, 사이드카 없이도 동일한 서비스 메쉬 기능을 제공하는 아키텍처를 선보였다.
추가로, Ambient Mesh는 Istio.io와 Google의 주도로 개발된 오픈 소스 프로젝트이다.
Ambient Mesh는 기존의 컨테이너당 하나의 프록시 (사이드카) 대신 '노드당 하나의 프록시 아키텍처'를 채택하여 운영 및 비용 효율성을 극대화한다.

비용 및 운영 효율성 극대화: 단순화된 운영, 유지 보수 감소, 쉬운 업그레이드의 이점을 얻고, 비즈니스 측면에서는 리소스 사용량 감소로 인한 비용 절감 효과를 누릴 수 있음.
애플리케이션 투명성: 앱에 투명하게 작동하므로 애플리케이션 로직을 변경할 필요가 없음.
Zero-Trust 보안: mTLS (상호 TLS)와 ID 관리를 사용하여 기본적으로 Zero-Trust 보안을 제공

앰비언트 메쉬는 기능을 레이어 4(L4)와 레이어 7(L7)로 분리하고, 이를 위해 두 가지 유형의 프록시를 사용한다.
Ztunnel :
역할: L3 및 L4 기능을 담당하는 노드당 프록시
기능: 워크로드를 안전하게 연결하고 인증하며, mTLS를 통한 보안 통신을 처리
배포: 클러스터의 각 노드에서 실행
통신 방법 (HBONE):
Ztunnel은 HBONE (HTTP Based Overlay Network)이라는 HTTP/2 기반 터널링 프로토콜을 사용하여 노드 간에 안전한 L3/L4 연결을 설정
이를 통해 L7 기능이 필요 없는 경우에도 L4 수준의 보안 메쉬 기능을 활용할 수 있음.
Waypoint Proxy :
역할: L7 관련 기능 (예: 트래픽 라우팅, 속도 제한 등)을 담당하는 서비스별 프록시
배포: L7 기능이 필요한 특정 서비스에 대해 별도로 배포
+ HBONE: HTTP/2 기반 보안 터널링

Ambient Mesh에서는 HBONE (HTTP Based Overlay Network Encapsulation) 프로토콜을 사용하여 ztunnel 간 표준 HTTP CONNECT 기반 터널링을 구현한다.
TCP 상위 계층에 HTTP/2 프로토콜을 사용하며, TLS로 상호 인증 및 암호화가 제공되며, ztunnel은 포트 15008을 통해 HBONE 터널을 수립한다.
앞서 설명한 대로, 전통적인 Istio는 모든 데이터 플레인 기능을 사이드카라는 단일 아키텍처 구성으로 구현하였다.
이러한 아키텍처 구성으로 인해 몇가지의 불편함을 야기시키게 되었다.
단일 선택지: 기본적인 암호화 기능부터 고급 L7 정책 기능까지, 모든 기능을 사용하려면 사이드카를 배포해야 하는 불편함 야기
운영 비효율성: 워크로드에 단순히 전송 보안 (L4) 기능만 필요한 경우에도, 관리자는 사이드카를 배포하고 관리해야 하는 고정적인 운영 비용과 부담 존재
유연성 부족: 사이드카는 워크로드마다 고정적인 비용이 발생하므로 복잡한 유스케이스에 따라 기능을 적절하게 변경하고 조절하기 어려움.
이러한 불편함으로 인해, Ambient Mesh는 Istio의 데이터 플레인 기능을 두 가지 레이어로 분리하여 이러한 비효율성을 해소하였다.
이는 사용자에게 '기능의 경량화 (Secure Overlay)' 또는 '전체화 (L7 Processing)' 옵션을 제공한다.

Secure Overlay Layer (보안 오버레이 계층)
역할 : 트래픽에 대한 라우팅과 제로 트러스트 보안을 담당하는 기본 레이어 (주로 L4 기능 담당)
특징 :
경량이며 필수적인 보안 기능을 제공
모든 트래픽에 대한 기본적인 보안과 연결 관리를 처리
L7 Processing Layer (L7 처리 계층)
역할 : Istio의 전체 기능이 필요한 경우 선택적으로 활성화하는 레이어 (주로 L7 기능 담당)
특징 : Secure Overlay Layer보다 무겁지만, 트래픽 제어, 고급 정책 등 고급 기능을 제공
이러한 레이어 구분 구성은 사용자에게 다음과 같은 유연한 전환 및 상호 운용성을 제공한다.
점진적 도입: 사용자는 네임스페이스별로 Istio를 '사용하지 않는 환경 → Secure Overlay 환경 → L7 Processing 환경' 으로 단계를 거쳐 원활하게 전환할 수 있음.
애플리케이션 비침해적: L7 처리 모드는 Secure Overlay 모드와 마찬가지로 Ambient 구성요소로서 동작하므로, 전통적인 사이드카 형태와 달리 애플리케이션 파드의 수정이 필요하지 않음.
혼합 환경 지원: Ambient Mesh와 사이드카가 혼합되어 동작하는 워크로드 환경에서도 원활하게 상호 운용되므로, 사용자는 시간에 따라 요구되는 다양한 요구사항을 유연하게 구성할 수 있음.
Ambient Mesh는 OSI 7계층 모델을 기반으로 기능을 분리하여 효율성을 높인다.
그러면 L3/L4기능과 L7기능의 차이점에 대하여 알아보도록 하겠다.
| 기능 계층 | OSI 모델 계층 | 핵심 기능 | Ambient Mesh 역할 |
|---|---|---|---|
| L3 (네트워크) / L4 (전송) | 3/4 | IP 기반 라우팅, TCP/UDP 통신, 연결 설정 및 종료, 기본 보안 (mTLS) | Ztunnel이 담당하며, 주로 서비스 간의 기본 연결 보안 및 인증에 초점 |
| L7 (애플리케이션) | 7 | HTTP, gRPC 등 애플리케이션 프로토콜 이해, 요청 기반 트래픽 제어, 속도 제한, 로깅, 모니터링 | Waypoint Proxy가 담당하며, 요청의 내용을 검사하고 고급 트래픽 관리 및 정책 적용을 수행 |
L3/L4 기능은 주로 서비스가 존재하고 연결되는 방식을 다룬다.
L7 기능은 서비스가 서로 대화하는 방식을 다룬다.
"들어오는 HTTP 요청 헤더를 확인하고, 사용자 10%의 트래픽만 베타 버전으로 라우팅할 수 있는가?"
"특정 API에 초당 100개 이상의 요청이 오지 못하도록 속도 제한할 수 있는가?"
Istio는 Ambient Mesh 아키텍처를 통해서 서비스 메쉬의 핵심 기능들을 제공한다. 이러한 기능들은 분산 애플리케이션의 관리 및 운영을 용이하게 한다.

트래픽 관리: 로드 밸런싱 및 서비스 디스커버리와 특정 조건에 따라 트래픽을 분할하거나 라우팅 규칙을 변경하는 트래픽 제어 기능을 제공
보안: 보안된 서비스 간 통신(mTLS)을 통해 네트워크 전체의 보안을 강화
정책 적용: 정책 기반 및 의도 기반 접근 제어를 통해 세밀한 보안 및 운영 정책을 적용할 수 있음.
관찰 가능성: 트래픽 메트릭 및 연결 정보를 수집하여 서비스 간의 상호 작용을 관찰하고 문제를 진단할 수 있는 프로그래밍 가능한 API 인터페이스를 제공
Istio Ambient Mesh는 Service Mesh의 강력한 기능을 유지하면서도 사이드카의 복잡성과 리소스 오버헤드를 근본적으로 해결한 아키텍쳐이다.
노드당 Ztunnel을 통해 L4 보안을 기본으로 제공하고, L7 기능이 필요할 때만 웨이포인트 프록시를 선택적으로 사용하여 운영의 유연성과 성능을 크게 향상시켰다.
Istio는 최근 CNCF 프로젝트로 졸업하며 커뮤니티의 폭넓은 지원을 받고 있으며, Ambient Mesh를 통해 더욱 발전된 서비스 메쉬 아키텍처의 미래를 열어가고 있다.