■ Service-Mesh란
현대의 애플리케이션은 일반적으로 분산형 마이크로서비스 집합으로 설계되며, 각 마이크로서비스들은 개별적인 비즈니스 기능을 수행한다. ServiceMesh는 애플리케이션에 추가할 수 있는 전용 인프라 계층입니다. 이를 통해 자신의 코드에 추가하지 않고도 관찰 가능성, 트래픽 관리 및 보안과 같은 기능을 투명하게 추가할 수 있습니다.
"Service Mesh"라는 용어는 이 패턴을 구현하는 데 사용하는 소프트웨어 유형과 해당 소프트웨어를 사용할 때 생성되는 보안 또는 네트워크 도메인을 모두 나타냅니다.
Kubernetes 기반 시스템과 같은 분산 서비스의 배포가 규모와 복잡성이 증가함에 따라, 이해하고 관리하는 것이 더 어려워질 수 있습니다. 요구 사항에는 검색, 로드 밸런싱, 장애 복구, 메트릭 및 모니터링이 포함될 수 있습니다. 또한 ServiceMesh는 종종 A/B 테스트, 카나리아 배치, 속도 제한, 액세스 제어, 암호화 및 종단 간 인증과 같은 더 복잡한 운영 요구사항을 해결한다.
서비스 대 서비스 통신은 분산 애플리케이션을 가능하게 합니다. 애플리케이션 클러스터 내에서나 애플리케이션 클러스터 간에 이 통신을 라우팅하는 작업은 서비스 수가 증가함에 따라 점점 더 복잡해집니다. Istio는 이러한 복잡성을 줄이는 동시에 개발 팀의 부담을 덜어줍니다.
■ ISTIO 란
Istio는 분산형 애플리케이션에 투명하게 계층화되는 오픈소스 ServiceMesh 입니다.
■ How it Works
Istio에는 데이터플레인과 컨트롤플레인 두 가지 컴포넌트가 존재한다.
데이터플레인은 서비스 간의 통신이며 ServiceMesh가 없으면 네트워크는 전송되는 트래픽을 이해하지 못하고 트래픽 유형이나 발신지 또는 수신처에 따라 어떤 결정도 내릴 수 없다.
ServiceMesh는 프록시를 사용하여 모든 네트워크 트래픽을 가로채 사용자가 설정한 구성(VirtualService/DestinationRule 등)에 따라 광범위한 응용프로그램 인식 기능 집합을 허용한다.
컨트롤플레인은 원하는 구성과 서비스에 대한 보기를 가져와 프로직 서버를 동적으로 프로그래밍하여 규칙이나 환경이 변경되면 업데이트한다.
전통적인 방식에서는 서비스 to 서비스 호출 관계였지만, Envoy proxy가 sidecar로 배포된 구성에서는 Envoy proxy 끼리 호출을 하며 모든 inbound/outbound 트래픽을 Envoy proxy에서 관리한다.
■ Concepts
1) Traffic Management (트래픽 관리)
Istio의 트래픽 라우팅 규칙을 통해 서비스 간의 트래픽 흐름과 API 호출을 쉽게 제어할 수 있다.
또한 Circuit-breakers, timeout 및 재시도와 같은 서비스 수준 속성의 구성을 단순화하고 백분율 기반 트래픽 분할을 통해 A/B 테스트, 카나리 배포 및 단계별 롤아웃과 같은 기능 또한 제공한다.
2) Observability (관측 가능성)
서비스의 복잡성이 증가함에 따라 동작과 성능을 이해하는 것은 어렵다. Istio는 ServiceMesh 내의 모든 통신에 대해 상세한 원격 측정을 생성한다. 이 원격 측정은 서비스 동작의 관찰 가능성을 제공하여 운영자가 응용 프로그램의 문제를 해결, 유지 및 최적화할 수 있도록한다.
Istio의 원격 측정은 상세 메트릭, 분산 추적 그리고 full access 로그를 포함한다.
3) Security capabilities (보안 기능)
마이크로 서비스는 중간자 공격에 대한 보호, 액세스 제어, 감사 도구 및 상호 TLS를 포함한 특별한 보안 요구를 갖는다.
Istio에는 운영자에게 이러한 모든 문제를 해결할 수 있는 능력을 제공하는 보안 솔루션이 포함되어 있다.
강력한 ID, 강력한 정책, 투명한 TLS 암호화 및 서비스 및 데이터를 보호하는 인증/권한 부여 및 감사 도구를 제공한다.
'오픈소스 > ServiceMesh' 카테고리의 다른 글
[ISTIO] ISTIO Architecture (0) | 2022.11.24 |
---|