정의
서비스 간 통신을 처리하는 소프트웨어 계층
- 컨테이너화된 마이크로서비스로 구성 1
- 서비스 간 연결을 관리하기 위해 모니터링, 로깅, 추적, 트래픽 제어 등 기능 제공
- 마이크로서비스 수가 증가하여 서비스 성능 모니터링하기 어려워지는 문제 해결
도입 이유
애플리케이션 성능은 서비스 간 통신 속도와 탄력성에 따라 좌우된다. 그러나 MSA에서는 분산된 마이크로서비스를 모니터링하기 어렵다.
- 서비스 레벨에서 모니터링
- 서비스 레벨에서 제어
- 서비스가 서로 통신하고 수행하는 작업을 제어
- 서비스의 동작, 정책, 상호 작용에 대한 세밀한 제어 및 관리 기능
- ex) 규제를 준수하기 위한 보안 정책 적용
이점
분산 애플리케이션에서 복잡한 서비스 간 통신을 처리하는 중앙 집중식 전용 인프라 계층 제공
- 서비스 검색
- 로드 밸런싱
- 요청을 여러 서비스 인스턴스에 지능적으로 분산
- 라운드 로빈, 최소 연결, 가중치 로드 밸런싱 등 활용
- 리소스 활용도를 높이고 고가용성 및 확장성 보장
- 성능 최적화, 네트워크 통신 병목 현상 방지
- 요청을 여러 서비스 인스턴스에 지능적으로 분산
- 트래픽 관리
- 트래픽 분할
- 트래픽을 다른 서비스 버전과 구성으로 분할
- 일부 트래픽을 업데이트된 버전에 전달하여 변경 사항을 점진적으로 적용, 제어
- 변경 영향 최소화
- 트래픽을 다른 서비스 버전과 구성으로 분할
- 미러링 요청
- 요청 흐름에 영향을 주지 않음녀서 분석을 위해 테스트 및 모니터링 서비스에 트래픽 복제
- 서비스가 프로덕션 트래픽에 영향을 미치지 않으면서 특정 요청 처리하는 방법 파악
- 카나리 배포
- 대부분의 사용자가 기존의 안정적인 버전을 사용하면서 일부 사용자나 트래픽은 새 서비스 버전에 전달
- 새 버전의 동작과 성능을 실험
- 대부분의 사용자가 기존의 안정적인 버전을 사용하면서 일부 사용자나 트래픽은 새 서비스 버전에 전달
- 보안
- 상호 TLS 암호화
- 서비스 간 통신에서 ID 검증
- 트래픽을 암호화하여 기밀성과 무결성 보장
- 인증 및 권한 부여
- 특정 엔드포인트에 액세스하거나 특정 작업을 수행하는 서비스 제어
- 상호 TLS 암호화
- 모니터링
- 서비스의 상태, 성능, 행동에 대한 인사이트 도출
- 문제 해결 및 성능 최적화
- 예시
- 지연 시간, 오류율, 리소스 사용률 지표를 수집하여 시스템 성능 분석
- 분산 추적 수행하여 여러 서비스 전반에서 요청의 전체 경로와 시간 확인
- 감사, 디버깅 및 규정 준수를 위해서 로그에 서비스 이벤트 캡처
- 트래픽 분할
동작 방식
- 개별 서비스에서 서비스 간 통신 제어 로직을 없애고 자체 인프라 계층으로 추상화
- 여러 네트워크 프록시를 사용하여 서비스 간 통신 라우팅, 추적
프록시 (사이드카)
- 네트워크와 마이크로서비스 간의 중간 게이트웨이
4
- 외부 트래픽 ↔ 프록시 ↔ 마이크로서비스 컨테이너
- 서비스로 들어오고 나가는 모든 트래픽은 프록시 서버로 라우팅
- 개별적으로 실행되지만 논리적으로 각 서비스의 옆에 있기 때문에 사이드카라고도 한다
데이터 플레인
데이터 처리 구성 요소. 사이드카 프록시와 해당 기능 포함
- 사이드카가 요청을 가로챈다
- 요청을 별도의 네트워크 연결로 캡슐화
- 소스 프록시와 대상 프록시 간에 안전하고 암호화된 채널 생성
- 로우 레벨 메시징 처리
- 회로 차단 및 요청 재시도 기능 구현
- 복원력 높이고 서비스 기능 저하 방지
- 로드 밸런싱, 서비스 검색 트래픽 라우팅
제어 플레인
중앙 관리 및 구성 레이어 역할
- 서비스 정의, 구성
- 서비스 엔드포인트, 라우팅 규칙, 부하 분산 정책, 보안 설정
- 프록시는 구성 정보를 사용하여 들어오는 요청을 처리하는 방법 결정
- 구성 변경 사항 수신, 동작을 동적으로 조정
- 서비스 다시 시작하거나 중단하지 않고 서비스 메시 구성 실시간으로 벼경
- 기능
- 서비스 레지스트리: 메시 내의 모든 서비스 추적
- 신규 서비스 자동 검색 및 비활성 서비스 제거
- 지표, 로그, 분산 추적 정보와 같은 원격 분석 데이터 수집, 집계
Istio
Kubernetes와 함께 작동하도록 설계된 오픈 소스 서비스 메시 프로젝트 5
- Istio의 컨트롤 플레인 구성 요소는 Kubernetes 워크로드로 실행
- Kubernetes 포드를 사이드카 프록시 설계의 기반으로 사용
- 하나의 IP 주소를 공유하는 밀결합된 컨테이너 세트
- Istio의 7계층 프록시는 기본 서비스와 동일한 네트워크 컨텍스트에서 또 다른 컨테이너로 실행
출처
'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
- 서비스 간 연결을 관리하기 위해 모니터링, 로깅, 추적, 트래픽 제어 등 기능 제공
- 마이크로서비스 수가 증가하여 서비스 성능 모니터링하기 어려워지는 문제 해결
도입 이유
애플리케이션 성능은 서비스 간 통신 속도와 탄력성에 따라 좌우된다. 그러나 MSA에서는 분산된 마이크로서비스를 모니터링하기 어렵다.
- 서비스 레벨에서 모니터링
- 서비스 레벨에서 제어
- 서비스가 서로 통신하고 수행하는 작업을 제어
- 서비스의 동작, 정책, 상호 작용에 대한 세밀한 제어 및 관리 기능
- ex) 규제를 준수하기 위한 보안 정책 적용
이점
분산 애플리케이션에서 복잡한 서비스 간 통신을 처리하는 중앙 집중식 전용 인프라 계층 제공
- 서비스 검색
- 로드 밸런싱
- 요청을 여러 서비스 인스턴스에 지능적으로 분산
- 라운드 로빈, 최소 연결, 가중치 로드 밸런싱 등 활용
- 리소스 활용도를 높이고 고가용성 및 확장성 보장
- 성능 최적화, 네트워크 통신 병목 현상 방지
- 요청을 여러 서비스 인스턴스에 지능적으로 분산
- 트래픽 관리
- 트래픽 분할
- 트래픽을 다른 서비스 버전과 구성으로 분할
- 일부 트래픽을 업데이트된 버전에 전달하여 변경 사항을 점진적으로 적용, 제어
- 변경 영향 최소화
- 트래픽을 다른 서비스 버전과 구성으로 분할
- 미러링 요청
- 요청 흐름에 영향을 주지 않음녀서 분석을 위해 테스트 및 모니터링 서비스에 트래픽 복제
- 서비스가 프로덕션 트래픽에 영향을 미치지 않으면서 특정 요청 처리하는 방법 파악
- 카나리 배포
- 대부분의 사용자가 기존의 안정적인 버전을 사용하면서 일부 사용자나 트래픽은 새 서비스 버전에 전달
- 새 버전의 동작과 성능을 실험
- 대부분의 사용자가 기존의 안정적인 버전을 사용하면서 일부 사용자나 트래픽은 새 서비스 버전에 전달
- 보안
- 상호 TLS 암호화
- 서비스 간 통신에서 ID 검증
- 트래픽을 암호화하여 기밀성과 무결성 보장
- 인증 및 권한 부여
- 특정 엔드포인트에 액세스하거나 특정 작업을 수행하는 서비스 제어
- 상호 TLS 암호화
- 모니터링
- 서비스의 상태, 성능, 행동에 대한 인사이트 도출
- 문제 해결 및 성능 최적화
- 예시
- 지연 시간, 오류율, 리소스 사용률 지표를 수집하여 시스템 성능 분석
- 분산 추적 수행하여 여러 서비스 전반에서 요청의 전체 경로와 시간 확인
- 감사, 디버깅 및 규정 준수를 위해서 로그에 서비스 이벤트 캡처
- 트래픽 분할
동작 방식
- 개별 서비스에서 서비스 간 통신 제어 로직을 없애고 자체 인프라 계층으로 추상화
- 여러 네트워크 프록시를 사용하여 서비스 간 통신 라우팅, 추적
프록시 (사이드카)
- 네트워크와 마이크로서비스 간의 중간 게이트웨이
4
- 외부 트래픽 ↔ 프록시 ↔ 마이크로서비스 컨테이너
- 서비스로 들어오고 나가는 모든 트래픽은 프록시 서버로 라우팅
- 개별적으로 실행되지만 논리적으로 각 서비스의 옆에 있기 때문에 사이드카라고도 한다
데이터 플레인
데이터 처리 구성 요소. 사이드카 프록시와 해당 기능 포함
- 사이드카가 요청을 가로챈다
- 요청을 별도의 네트워크 연결로 캡슐화
- 소스 프록시와 대상 프록시 간에 안전하고 암호화된 채널 생성
- 로우 레벨 메시징 처리
- 회로 차단 및 요청 재시도 기능 구현
- 복원력 높이고 서비스 기능 저하 방지
- 로드 밸런싱, 서비스 검색 트래픽 라우팅
제어 플레인
중앙 관리 및 구성 레이어 역할
- 서비스 정의, 구성
- 서비스 엔드포인트, 라우팅 규칙, 부하 분산 정책, 보안 설정
- 프록시는 구성 정보를 사용하여 들어오는 요청을 처리하는 방법 결정
- 구성 변경 사항 수신, 동작을 동적으로 조정
- 서비스 다시 시작하거나 중단하지 않고 서비스 메시 구성 실시간으로 벼경
- 기능
- 서비스 레지스트리: 메시 내의 모든 서비스 추적
- 신규 서비스 자동 검색 및 비활성 서비스 제거
- 지표, 로그, 분산 추적 정보와 같은 원격 분석 데이터 수집, 집계
Istio
Kubernetes와 함께 작동하도록 설계된 오픈 소스 서비스 메시 프로젝트 5
- Istio의 컨트롤 플레인 구성 요소는 Kubernetes 워크로드로 실행
- Kubernetes 포드를 사이드카 프록시 설계의 기반으로 사용
- 하나의 IP 주소를 공유하는 밀결합된 컨테이너 세트
- Istio의 7계층 프록시는 기본 서비스와 동일한 네트워크 컨텍스트에서 또 다른 컨테이너로 실행
출처
'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 |