카테고리 없음
[8주차] Istio Traffic Flow : 사이드카 패턴
구구달스
2025. 5. 28. 10:46
CloudNet@ 가시다님이 진행하는 Istio Hands-on Study [1기]
https://jimmysong.io/en/blog/sidecar-injection-iptables-and-traffic-routing/#iptables-manipulation-analysis
의 내용을 정리
🚀 Sidecar 패턴 다이어그램 쉽게 이해하기
- 다이어그램은 Kubernetes의 Pod 또는 VM에서 Sidecar가 어떻게 동작하는지를 보여줍니다.
🌟 Sidecar 패턴이란?
- Sidecar 패턴은 메인 애플리케이션 옆에 보조 역할을 하는 Sidecar를 추가하는 방식입니다.
다이어그램에서 "Pod/VM" 안에 "Service"와 "Sidecar"가 함께 있는 모습을 볼 수 있습니다.
"Service"는 Business Logic(핵심 기능)을 처리하고, "Sidecar"는 부가적인 기능을 담당합니다. - Sidecar는 마치 오토바이 옆에 붙은 사이드카처럼 메인 애플리케이션과 함께 움직이며, 네트워크 관리, 모니터링 같은 작업을 대신 처리합니다. 이를 통해 메인 애플리케이션은 핵심 기능에만 집중할 수 있습니다.
Sidecar 패턴은
메인 애플리케이션 옆에 Sidecar를 추가해 부가 기능을 처리합니다.
🔧 다이어그램 속 구성 요소
- 다이어그램을 보면 두 개의 "Pod/VM"이 나옵니다. 각각은 "Service"와 "Sidecar"로 구성되어 있습니다.
"Service"는 Business Logic을 처리하는 부분이고, "Sidecar"는 추가 기능을 제공합니다.
Sidecar 안에는 여러 기능이 포함되어 있습니다:- Service Discovery: 다른 서비스를 찾는 기능.
- Load Balancer: 트래픽을 여러 서버에 분산.
- Rate Limiting: 요청 횟수를 제한.
- Service Routing: 트래픽을 올바른 경로로 안내.
- 이 기능들은 애플리케이션 코드와 독립적으로 동작하며, Sidecar가 이를 모두 관리합니다.
Sidecar는
Service Discovery, Load Balancer, Rate Limiting, Service Routing 같은 부가 기능을 제공합니다.
📡 Sidecar와 Service 간의 통신
- 다이어그램에서 "Service"와 "Sidecar" 사이에 화살표가 보입니다. 이는 두 컴포넌트가 서로 통신한다는 뜻입니다. "Service"는 Business Logic을 실행하고, 네트워크 요청(인바운드/아웃바운드)을 Sidecar로 보냅니다.
Sidecar는 이 요청을 받아 필요한 작업(예: 트래픽 분산, 제한)을 수행한 뒤 다른 "Pod/VM"으로 전달합니다. - 예를 들어, 한 Pod의 "Service"가 다른 Pod의 "Service"에 요청을 보낼 때, 먼저 자신의 Sidecar를 거칩니다.
Sidecar는 요청을 처리한 뒤 상대 Sidecar로 보내고, 최종적으로 상대 "Service"에 전달됩니다.
Sidecar는 Service 간 네트워크 통신을 중재하며,
트래픽을 처리하고 전달합니다.
🌐 Sidecar 패턴의 장점
- Sidecar 패턴은 다이어그램처럼 별도의 컴포넌트로 기능을 분리하기 때문에 몇 가지 장점이 있습니다:
- 코드 간소화: Business Logic과 관련 없는 기능(예: 모니터링)을 Sidecar로 분리해 애플리케이션 코드가 간단해집니다.
- 유연성: Sidecar는 독립적으로 업데이트되므로, 애플리케이션 코드 변경 없이 기능을 개선할 수 있습니다.
- 재사용성: 동일한 Sidecar를 여러 Pod에서 사용해 코드 중복을 줄입니다.
- 다이어그램에서 "..."는 Sidecar가 더 많은 기능을 추가할 수 있음을 나타냅니다.
Kubernetes에서는 Sidecar가 Pod 안에 컨테이너로 추가되어 리소스를 공유합니다.
Sidecar 패턴은
코드 간소화, 유연성, 재사용성을 제공합니다.
- "Service"는 레스토랑의 요리사, "Sidecar"는 서빙 직원입니다. 요리사는 음식(Business Logic)을 만드는 데 집중하고, 서빙 직원은 주문 접수, 손님 안내(Service Discovery, Load Balancing 등)를 담당합니다. 두 역할이 분리되어 있으니 요리사는 더 효율적으로 요리에 집중할 수 있죠.
- 다이어그램에서 두 Pod/VM이 통신하는 모습은 레스토랑에서 손님이 다른 지점으로 음식을 주문하는 상황과 비슷합니다. Sidecar가 중간에서 주문을 관리해줍니다.
Sidecar 패턴은
요리사와 서빙 직원처럼 역할을 분리해 효율성을 높입니다.
📌 핵심 요약
- Sidecar 패턴: 메인 애플리케이션(Service) 옆에 Sidecar를 추가해 부가 기능을 처리합니다.
- 구성 요소: Sidecar는 Service Discovery, Load Balancer, Rate Limiting, Service Routing 등을 제공합니다.
- 통신: Sidecar는 Service 간 네트워크 통신을 중재하고 트래픽을 관리합니다.
- 장점: 코드 간소화, 유연성, 재사용성을 통해 개발 효율성을 높입니다.
- 비유: 요리사(Service)와 서빙 직원(Sidecar)처럼 역할을 분리해 효율적으로 동작합니다.