Service Mesh와 Istio

vernolog·2024년 6월 23일
post-thumbnail

MSA 단점

거대해진 MSA 시스템을 보면, 수십개의 microservice로 분리되어 있고 운영환경에서는 수천개의 서비스 인스턴스가 동작하고 있음
→ 관리자가 이 많은 인스턴스들을 모니터링하고 로깅, 관리해야함. 또한 서비스간 통신도 매우 복잡해짐
→ 이와 같은 관리 및 프로그래밍 오버헤드를 낮추기 위해 나온 아키텍처가 Service Mesh


Service Mesh

Service Mesh

  • 마이크로서비스 아키텍처에서 서비스간 통신을 제어하고 관찰하기 위한 인프라 레이어.
    • 이를 통해 복잡한 마이크로 서비스 환경에서 통신을 더 효율적으로 관리 간으
  • Service Mesh는 일반적으로 사이드카 프록시 패턴을 사용하여 구현됨. 각 마이크로 서비스 인스턴스에 사이드카 프록시를 배포하고 모든 서비스 간 통신을 이 프록시를 통해 라우팅함으로써 → 트래픽 관리, 서비스 디스커버리, 보안 등 기능 제공
    • 이때 L7 계층 기반의 proxy 사용 ← path 기반의 통신이 되어야 하므로
  • 대표적인 Service Mesh 구현체로는 Istio, Linkerd, Consul Connect 등이 있음.

Service Mesh 주요 컴포넌트

주요 컴포넌트는 크게 Control Plane과 Data Plane으로 Data Plane이 실제 트래픽을 처리하는 동안, Control Plane은 이를 설정하고 감독함으로써 전체 Service Mesh 운영을 최적화함

Control Plane

  • Control Plane은 일반적으로 중앙화된 컨포넌트로 구성되며, 여러 데이터 플레인을 구성하고 관리하는 역할
  • 대표적인 Control Plane
    • Istio : Pilot, Mixer, Citadel 등이 있으며, 각 컴포넌트가 데이터 플레인의 설정 및 관리를 담당
    • Linkerd: 컨트롤 플레인 구성 요소가 데이터 플레인을 설정하고 관리
  • 기능
    • 구성 관리: 데이터 플레인 컴포넌트(예: 프록시)의 설정을 관리하고, 이를 서비스 메쉬의 각 프록시에 전달합니다.
    • 정책 적용: 보안, 트래픽 관리, 접근 제어 등의 정책을 정의하고 이를 데이터 플레인에 적용합니다.
    • 서비스 디스커버리 및 레지스트리 관리: 서비스의 위치 정보를 관리하고 데이터 플레인에 전달합니다.
    • 모니터링 및 텔레메트리 수집: 데이터 플레인에서 수집된 메트릭과 로그를 수집하고 분석합니다.

Data Plane

  • 서비스 간의 실제 네트워크 트래픽을 처리하는 부분
  • 마이크로서비스 인스턴스에 사이트카 패턴으로 배포된 프록시(예: Envoy)를 통해 수행됨
  • 사이드카 프록시는 서비스 인스턴스와 함께 배포되어 모든 네트워크 트래픽을 가로채고 처리함.
  • 기능
    • 트래픽 라우팅 : 서비스 간의 요청을 적절한 서비스로 라우팅
    • 로드 밸런싱 : 여러 서비스 인스턴스 간에 트래픽을 분배하여, 부하르 고르게 분산
    • 서비스 디스커버리 : 서비스의 위치를 파악하고, 요청을 해당 서비스로 전달
    • 보안 : 서비스 간의 통신을 암호화하고 인증 및 권한 부여 처리
    • 모니터링 및 로깅 : 트래픽을 관찬하고 매트릭, 로그 수집

예시: Istio의 데이터 플레인과 컨트롤 플레인

  • Control Plane: Pilot(트래픽 관리), Mixer(정책 적용 및 텔레메트리 수집), Citadel(보안)이 주요 컴포넌트로, 데이터 플레인 프록시들을 구성하고 관리합니다.
  • Data Plane: Envoy 프록시가 각 서비스 인스턴스에 사이드카로 배포되어 트래픽을 처리합니다.

Istio

Istio란

  • 오픈소스 Service Mesh 솔루션
  • Istio는 서비스 간 통신을 관리하고 모니터링하며, Envoy 프록시를 통해 실제 기능을 실현함.
  • 네트워크 트래픽 관리, 서비스 디스커버리, 로드 밸런싱, 인증 및 인가, 장애 주입, 모니터링 등 다양한 기능 제공
  • 주요 컴포넌트
    • Pilot : 서비스 디스커버리 및 트래픽 관리 설정을 Envoy 프록시에 전달
    • Mixer : 정책 적용 및 telemetry 데이터 수집
    • Citadel : 서비스 간의 보안 통신을 위해 인증서 관리
    • Galley : Istio 설정 검증 및 배포

참고자료

https://gruuuuu.github.io/cloud/service-mesh-istio/
https://velog.io/@beryl/Istio-개념

0개의 댓글