카테고리 없음

[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 패턴 다이어그램 쉽게 이해하기

https://jimmysong.io/en/blog/sidecar-injection-iptables-and-traffic-routing/#iptables-manipulation-analysis

  • 다이어그램은 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)처럼 역할을 분리해 효율적으로 동작합니다.