Skip to content

Latest commit

 

History

History
182 lines (111 loc) · 7.47 KB

service-mesh.md

File metadata and controls

182 lines (111 loc) · 7.47 KB

서비스 메시(Service Mesh)

목차


서비스 메시란?

서비스 메시(Service Mesh) 는 마이크로서비스 아키텍처(MSA)에서 서비스 간 통신을 관리하고, 보안, 트래픽 관리, 모니터링 등의 기능을 제공하는 인프라 레이어입니다.

  • 서비스 메시를 사용하면, 서비스 간의 직접적인 통신 로직을 애플리케이션에서 제거하고, 이를 메시 레이어에서 처리할 수 있습니다.
  • 대표적인 서비스 메시 도구로는 Istio, Linkerd, Consul, AWS App Mesh 등이 있습니다.

서비스 메시의 필요성

1. MSA의 복잡성 증가

  • MSA는 작은 서비스들이 독립적으로 배포되고, 서로 통신해야 하기 때문에 네트워크 트래픽 관리와 보안 설정이 복잡해집니다.
  • 서비스 메시를 통해 이러한 문제를 표준화된 방식으로 처리 가능.

2. 서비스 간 통신 문제 해결

  • 트래픽 라우팅: 서비스 업데이트 중 트래픽을 특정 버전으로 라우팅.
  • 장애 복구: 네트워크 장애 발생 시 자동으로 대체 경로를 찾거나 재시도.
  • 보안 강화: 통신 간 TLS 암호화를 자동 처리.

3. 운영 관리 효율화

  • 모니터링 및 로깅: 서비스 간 통신의 지표와 로그를 중앙에서 수집.
  • 정책 적용: 인증, 권한 부여와 같은 정책을 쉽게 적용.

서비스 메시의 주요 기능

1. 트래픽 관리

  • 로드 밸런싱: 요청을 여러 인스턴스로 균등 분배.
  • 트래픽 분할: A/B 테스트, Canary 배포 등 특정 비율로 트래픽 분배.
  • 트래픽 라우팅: 요청을 특정 버전 또는 특정 지역의 서비스로 라우팅.

2. 보안

  • TLS 암호화: 서비스 간 트래픽을 암호화하여 데이터 보안 보장.
  • 인증 및 권한 관리: 서비스 식별 및 액세스 권한 제어.
  • 제로 트러스트 네트워크: 서비스 간 모든 통신을 인증 및 암호화.

3. 모니터링 및 로깅

  • 분산 트레이싱: 서비스 호출 간 지연 시간 및 오류 추적.
  • 메트릭 수집: CPU, 메모리, 네트워크 트래픽, 응답 시간 등 모니터링.
  • 로그 관리: 서비스 메시에서 발생한 네트워크 요청과 응답 로그 저장.

4. 장애 복구

  • 자동 재시도: 요청 실패 시 재시도.
  • 시간 초과 설정: 요청 대기 시간을 제한.
  • 서킷 브레이커: 연쇄적인 장애 방지를 위해 요청 차단.

5. 서비스 디스커버리

  • 서비스 메시 내부에서 서비스의 위치와 상태를 자동으로 관리.

서비스 메시 아키텍처

1. 데이터 플레인(Data Plane)

  • 실제 서비스 간 네트워크 트래픽을 관리.
  • 각 서비스의 사이드카 프록시가 트래픽을 처리하며, Envoy와 같은 프록시 도구가 사용됨.

2. 컨트롤 플레인(Control Plane)

  • 데이터 플레인을 관리하고 정책을 설정.
  • 트래픽 라우팅, 보안 설정, 모니터링 등 제어 기능을 수행.
  • 대표적인 컨트롤 플레인 도구: Istio, Linkerd.

아키텍처 다이어그램 예시

Service A ----> Envoy Proxy ----> Service B Control Plane

서비스 메시의 장점

  1. 서비스 간 통신 표준화

    • 각 서비스의 네트워크 로직을 메시로 이동하여 코드 단순화.
  2. 보안 강화

    • TLS 암호화와 인증을 자동화하여 보안 위험 감소.
  3. 운영 효율성 향상

    • 중앙 집중화된 트래픽 관리 및 정책 설정으로 운영 부담 감소.
  4. 확장성

    • 수십, 수백 개의 마이크로서비스를 효율적으로 관리 가능.
  5. 모니터링 및 디버깅

    • 서비스 호출 간의 성능 및 오류를 실시간으로 추적 가능.

서비스 메시의 단점

  1. 운영 복잡성

    • 새로운 레이어를 추가하므로 설정 및 운영이 복잡.
    • 컨트롤 플레인과 데이터 플레인을 모두 관리해야 함.
  2. 성능 오버헤드

    • 프록시를 통해 트래픽을 처리하므로, 네트워크 대기 시간과 CPU, 메모리 사용량 증가.
  3. 학습 곡선

    • 서비스 메시 아키텍처와 도구(Istio, Linkerd 등)를 이해해야 하므로 초기 학습 비용이 높음.
  4. 추가 인프라 비용

    • 사이드카 프록시와 컨트롤 플레인 운영에 추가 리소스 필요.

주요 서비스 메시 도구 비교

특징 Istio Linkerd Consul
주요 사용 사례 고성능, 복잡한 트래픽 제어 간단한 설정과 빠른 배포 서비스 디스커버리와 통합된 메시
컨트롤 플레인 강력하고 세부적인 설정 가능 단순하고 가벼운 설정 서비스 디스커버리와 네이티브 통합
데이터 플레인 Envoy Rust 기반 프록시 사용 Envoy
학습 난이도 높음 낮음 중간
확장성 대규모 시스템에 적합 중소규모 시스템에 적합 다양한 워크로드에 유연
보안 고급 보안 정책 지원 기본적인 TLS 암호화 제공 ACL, TLS 인증

서비스 메시 사용 시 주의사항

  1. 설계의 복잡성

    • 네트워크 설정과 트래픽 라우팅 정책 설계 시 복잡도가 증가할 수 있음.
    • 사전에 명확한 요구사항 정의 필요.
  2. 리소스 오버헤드

    • 추가적인 CPU와 메모리 사용량이 발생하므로, 클러스터 리소스 계획을 세심하게 수립.
  3. 초기 학습 비용

    • Istio와 같은 강력한 도구는 초기 설정과 학습이 까다로울 수 있음.
    • 운영 팀의 기술 숙련도 필요.
  4. 모니터링 필요

    • 서비스 메시 자체의 상태와 성능을 지속적으로 모니터링하여 장애를 예방해야 함.
  5. 서비스 메시 도구 선택

    • 시스템 규모와 요구사항에 따라 적합한 서비스 메시 도구를 선택해야 함.
    • Istio는 강력한 기능을 제공하지만 복잡하며, Linkerd는 가볍고 간단한 사용 사례에 적합.

결론

서비스 메시는 MSA 환경에서 서비스 간 통신을 효율적으로 관리하고, 보안, 트래픽 제어, 모니터링 등의 기능을 제공합니다. Istio, Linkerd 등 다양한 도구를 활용하면 복잡한 분산 시스템에서도 안정성과 운영 효율성을 높일 수 있습니다. 그러나 운영 비용과 설정 복잡성을 고려하여 적절히 도입하는 것이 중요합니다.