MSA 2024. 4. 21. 02:04

[MSA] Service Mesh

목차
  1. 정의
  2. 도입 이유
  3. 이점
  4. 동작 방식
  5. 프록시 (사이드카)
  6. 데이터 플레인
  7. 제어 플레인
  8. Istio
  9. 출처

정의

서비스 간 통신을 처리하는 소프트웨어 계층

  • 컨테이너화[각주:1]된 마이크로서비스로 구성
  • 서비스 간 연결을 관리하기 위해 모니터링, 로깅, 추적, 트래픽 제어 등 기능 제공
    • 마이크로서비스 수가 증가하여 서비스 성능 모니터링하기 어려워지는 문제 해결

도입 이유

애플리케이션 성능은 서비스 간 통신 속도와 탄력성에 따라 좌우된다. 그러나 MSA에서는 분산된 마이크로서비스를 모니터링하기 어렵다.

  • 서비스 레벨에서 모니터링
    • 많은 서비스가 연동하여 작동하는 방식을 이해하기 어려움
      • ex) 다운스트림 및 업스트림 종속성
    • 서비스와 워크로드[각주:2]가 통신하는 방식을 더 잘 관찰
  • 서비스 레벨에서 제어
    • 서비스가 서로 통신하고 수행하는 작업을 제어
    • 서비스의 동작, 정책, 상호 작용에 대한 세밀한 제어 및 관리 기능
      • ex) 규제를 준수하기 위한 보안 정책 적용

이점

분산 애플리케이션에서 복잡한 서비스 간 통신을 처리하는 중앙 집중식 전용 인프라 계층 제공

  • 서비스 검색
    • 서비스 레지스트리[각주:3]를 사용하여 메시 내의 모든 서비스를 동적으로 검색하고 추적
    • 위치나 기반 인프라에 관계 없이 서로를 원할하게 찾고 통신
  • 로드 밸런싱
    • 요청을 여러 서비스 인스턴스에 지능적으로 분산
      • 라운드 로빈, 최소 연결, 가중치 로드 밸런싱 등 활용
    • 리소스 활용도를 높이고 고가용성 및 확장성 보장
    • 성능 최적화, 네트워크 통신 병목 현상 방지
  • 트래픽 관리
    • 트래픽 분할
      • 트래픽을 다른 서비스 버전과 구성으로 분할
        • 일부 트래픽을 업데이트된 버전에 전달하여 변경 사항을 점진적으로 적용, 제어
        • 변경 영향 최소화
    • 미러링 요청
      • 요청 흐름에 영향을 주지 않음녀서 분석을 위해 테스트 및 모니터링 서비스에 트래픽 복제
      • 서비스가 프로덕션 트래픽에 영향을 미치지 않으면서 특정 요청 처리하는 방법 파악
    • 카나리 배포
      • 대부분의 사용자가 기존의 안정적인 버전을 사용하면서 일부 사용자나 트래픽은 새 서비스 버전에 전달
        • 새 버전의 동작과 성능을 실험
    • 보안
      • 상호 TLS 암호화
        • 서비스 간 통신에서 ID 검증
      • 트래픽을 암호화하여 기밀성과 무결성 보장
      • 인증 및 권한 부여
        • 특정 엔드포인트에 액세스하거나 특정 작업을 수행하는 서비스 제어
    • 모니터링
      • 서비스의 상태, 성능, 행동에 대한 인사이트 도출
      • 문제 해결 및 성능 최적화
      • 예시
        • 지연 시간, 오류율, 리소스 사용률 지표를 수집하여 시스템 성능 분석
        • 분산 추적 수행하여 여러 서비스 전반에서 요청의 전체 경로와 시간 확인
        • 감사, 디버깅 및 규정 준수를 위해서 로그에 서비스 이벤트 캡처

동작 방식

  • 개별 서비스에서 서비스 간 통신 제어 로직을 없애고 자체 인프라 계층으로 추상화
  • 여러 네트워크 프록시를 사용하여 서비스 간 통신 라우팅, 추적

프록시 (사이드카)

  • 네트워크와 마이크로서비스 간의 중간 게이트웨이[각주:4]
    • 외부 트래픽 ↔ 프록시 ↔ 마이크로서비스 컨테이너
  • 서비스로 들어오고 나가는 모든 트래픽은 프록시 서버로 라우팅
  • 개별적으로 실행되지만 논리적으로 각 서비스의 옆에 있기 때문에 사이드카라고도 한다

데이터 플레인

데이터 처리 구성 요소. 사이드카 프록시와 해당 기능 포함

  1. 사이드카가 요청을 가로챈다
  2. 요청을 별도의 네트워크 연결로 캡슐화
  3. 소스 프록시와 대상 프록시 간에 안전하고 암호화된 채널 생성
  • 로우 레벨 메시징 처리
  • 회로 차단 및 요청 재시도 기능 구현
    • 복원력 높이고 서비스 기능 저하 방지
  • 로드 밸런싱, 서비스 검색 트래픽 라우팅

제어 플레인

중앙 관리 및 구성 레이어 역할

  • 서비스 정의, 구성
    • 서비스 엔드포인트, 라우팅 규칙, 부하 분산 정책, 보안 설정
  • 프록시는 구성 정보를 사용하여 들어오는 요청을 처리하는 방법 결정
    • 구성 변경 사항 수신, 동작을 동적으로 조정
    • 서비스 다시 시작하거나 중단하지 않고 서비스 메시 구성 실시간으로 벼경
  • 기능
    • 서비스 레지스트리: 메시 내의 모든 서비스 추적
    • 신규 서비스 자동 검색 및 비활성 서비스 제거
    • 지표, 로그, 분산 추적 정보와 같은 원격 분석 데이터 수집, 집계

Istio

Kubernetes[각주:5]와 함께 작동하도록 설계된 오픈 소스 서비스 메시 프로젝트

  • Istio의 컨트롤 플레인 구성 요소는 Kubernetes 워크로드로 실행
  • Kubernetes 포드를 사이드카 프록시 설계의 기반으로 사용
    • 하나의 IP 주소를 공유하는 밀결합된 컨테이너 세트
  • Istio의 7계층 프록시는 기본 서비스와 동일한 네트워크 컨텍스트에서 또 다른 컨테이너로 실행

출처

https://aws.amazon.com/ko/what-is/service-mesh/

  1. ex) Docker Container [본문으로]
  2. 작업을 완료하거나 성과를 창출하는 데 소요되는 컴퓨팅 리소스와 시간의 양 [본문으로]
  3. 애플리케이션 레벨 통신을 위한 데이터 구조 스토리지의 데이터베이스. 예를 들면 호스트 이름, IP 주소, 포트 번호, 프로토콜 [본문으로]
  4. 관문 [본문으로]
  5. 대규모 컨테이너식 애플리케이션을 배포하고 관리하는 데 사용된느 오픈 소스 컨테이너 오케스트레이션 플랫폼 [본문으로]
저작자표시 (새창열림)

'MSA' 카테고리의 다른 글

[Event Streaming] Serialization / Deserialization (SerDe)을 하는 이유  (0) 2024.06.12
[MSA] Saga Pattern  (0) 2024.04.21
[MSA] Microservice Architecture, SOA  (0) 2024.04.21
  1. 정의
  2. 도입 이유
  3. 이점
  4. 동작 방식
  5. 프록시 (사이드카)
  6. 데이터 플레인
  7. 제어 플레인
  8. Istio
  9. 출처
'MSA' 카테고리의 다른 글
  • [Event Streaming] Serialization / Deserialization (SerDe)을 하는 이유
  • [MSA] Saga Pattern
  • [MSA] Microservice Architecture, SOA
개발자 이우진
이우진 기술 블로그
  • All (86)
    • Spring Framework (20)
    • MSA (7)
      • Event Driven Architecture (3)
    • Java (3)
    • Flink (2)
    • Computer Science (9)
      • Object Oriented Programming (3)
    • Problem Solving (15)
    • Design Pattern (0)
    • React (4)
    • Javascript (2)
    • Web (3)
    • Tools & Environment (3)
    • C++ (2)
    • misc (5)
    • Essay (3)
      • 기술 회고 (5)
  • 홈
  • 태그
  • 관리자
  • 글쓰기
hELLO · Designed By 정상우.v4.2.2
[MSA] Service Mesh
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.