1. 서비스 메시란?
서비스 메시는 마이크로서비스 아키텍처에서 서비스 간 통신을 관리하는 인프라 레이어다.
각 서비스가 서로 직접 통신하는 것이 아니라, 프록시(proxy) 또는 사이드카(sidecar) 패턴을 활용하여 트래픽을 제어, 보안 강화, 모니터링하는 역할을 수행한다.
🛠 서비스 메시의 주요 기능
✅ 트래픽 관리: 서비스 간의 요청을 라우팅하고 로드 밸런싱 수행
✅ 보안 강화: TLS 암호화, 서비스 간 인증 및 인가 (mTLS)
✅ 관찰성(Observability): 메트릭 수집, 로깅, 분산 추적 제공
✅ 정책 적용: 리트라이, 타임아웃, 회로 차단(Circuit Breaking) 설정
2. 주요 서비스 메시 비교: Istio, Linkerd, Envoy
특징 | Istio | Linkerd | Envoy |
---|---|---|---|
개발사 | Google, IBM, Lyft | Buoyant | Lyft |
배포 구조 | Control Plane + Data Plane | 단순한 Control Plane | 단일 Proxy |
프록시 | Envoy 사용 | 자체 프록시 | 독립 실행 가능 |
보안 기능 | mTLS, 인증/인가 | 기본적인 mTLS 지원 | 인증 기능 없음 |
트래픽 관리 | Canary, A/B 테스트, Traffic Shifting | 기본적인 트래픽 라우팅 | 독립 실행형 Reverse Proxy |
모니터링 | Prometheus, Grafana, Kiali | Prometheus, Grafana | 없음 (추가 설정 필요) |
설정 복잡도 | 높은 편 (YAML 설정이 많음) | 비교적 간단 | 직접 설정해야 함 |
🔹 ① Istio: 가장 강력한 서비스 메시
✔ 가장 널리 사용되는 서비스 메시이며, 기능이 가장 풍부함
✔ Envoy 기반 프록시를 활용하여 트래픽을 관리
✔ Canary 배포, A/B 테스트, 서킷 브레이킹, 재시도 등의 강력한 기능 제공
✔ 단점: 설정이 복잡하고 리소스 사용량이 많음
➡ 언제 사용할까?
✔ 대규모 Kubernetes 클러스터에서 정교한 트래픽 제어가 필요할 때
✔ 강력한 보안 및 인증 기능(mTLS, RBAC)이 필요한 경우
🔹 ② Linkerd: 가벼운 서비스 메시
✔ 설치 및 운영이 쉬운 경량 서비스 메시
✔ 자체 개발한 Rust 기반 프록시 사용 (Envoy보다 가벼움)
✔ 기본적인 mTLS 제공 (보안 강화)
✔ 단점: Istio보다 기능이 적고 확장성이 낮음
➡ 언제 사용할까?
✔ 리소스가 적은 환경에서 서비스 메시를 빠르게 구축하고 싶을 때
✔ 기본적인 보안(mTLS)과 트래픽 관리만 필요한 경우
🔹 ③ Envoy: 고성능 프록시
✔ Lyft가 개발한 독립 실행형 L7 프록시
✔ 서비스 메시뿐만 아니라 API Gateway, Edge Proxy 역할도 수행 가능
✔ 강력한 트래픽 관리 기능 (서킷 브레이킹, 타임아웃, 리트라이 등)
✔ 단점: 서비스 메시 자체 기능이 없고, 직접 설정해야 함
➡ 언제 사용할까?
✔ API Gateway, Reverse Proxy 역할을 수행하는 경우
✔ Istio, Consul, AWS App Mesh와 함께 사용하려는 경우
3. 서비스 메시 선택 가이드
✅ “완전한 기능이 필요하다” → Istio
✅ “설정이 쉬운 가벼운 메시가 필요하다” → Linkerd
✅ “단순한 L7 프록시가 필요하다” → Envoy
📌 결론:
- Istio는 가장 강력한 기능을 제공하지만, 운영이 어렵다.
- Linkerd는 쉽게 배포 가능하지만, 기능이 제한적이다.
- Envoy는 서비스 메시가 아니라 L7 프록시이므로 단독으로는 부족할 수 있다.
4. Kubernetes에서 Istio 배포하기 (간단 예제)
Step 1: Istio 설치
curl -L https://istio.io/downloadIstio | sh -
cd istio-*
export PATH=$PWD/bin:$PATH
istioctl install --set profile=demo -y
✅ Istio의 기본 Demo Profile을 설치함
Step 2: Namespace에 Istio 자동 사이드카 주입 설정
kubectl label namespace default istio-injection=enabled
✅ default
네임스페이스에 사이드카 자동 주입 활성화
Step 3: 샘플 애플리케이션 배포
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
✅ bookinfo
샘플 애플리케이션 배포
5. 마무리
✔ 서비스 메시는 마이크로서비스 환경에서 보안, 트래픽 관리, 모니터링을 위한 중요한 기술
✔ Istio는 강력하지만 복잡하고, Linkerd는 가볍지만 기능이 제한됨
✔ Envoy는 독립적인 프록시로서 서비스 메시의 일부로 활용 가능