Istio란 무엇일까요?
Istio는 마이크로서비스가 상호 간에 데이터를 공유하는 방식을 제어하는 오픈소스 서비스 메쉬입니다. Istio는 쿠버네티스를 보완 및 확장하여 마이크로서비스 환경 내에서 트래픽 흐름을 관리하고, 정책을 적용하고, 통신을 모니터링합니다. 여기에는 Istio를 임의의 로깅 플랫폼, 텔레메트리 또는 정책 시스템에 통합할 수 있는 API가 포함됩니다. Istio는 다양한 온프레미스 및 클라우드 환경, 컨테이너화된 환경, 가상화된 환경에서 실행 가능합니다.
마이크로서비스 아키텍처는 엔터프라이즈 애플리케이션의 작업을 모듈식 서비스로 나누므로 확장과 유지 관리가 더 편리해질 수 있습니다. 그러나 마이크로서비스 아키텍처에 빌드된 엔터프라이즈 애플리케이션의 규모와 복잡성이 증가함에 따라 관측과 관리가 어려워지고 있습니다. 서비스 메쉬는 서비스 간 트래픽을 캡처하거나 가로채서 아키텍처 문제를 해결할 수 있으며, 다른 서비스에 대한 새로운 요청을 수정, 리디렉션 또는 생성할 수 있습니다.
Istio 구성 요소 및 아키텍처
Istio의 아키텍처는 데이터 플레인과 컨트롤 플레인으로 구성됩니다. Istio는 사이드카로 배포되어 서비스 메쉬 내 모든 서비스의 트래픽을 중개하는 고성능 프록시인 Envoy 프록시를 사용합니다. 데이터 플레인에서는 개발자가 환경 내에 사이드카 프록시를 배포하여 서비스에 Istio 지원을 추가할 수 있습니다. 이러한 사이드카 프록시는 마이크로서비스와 나란히 위치하며 요청을 다른 프록시로 라우팅하거나 다른 프록시의 요청을 라우팅합니다. 이러한 프록시가 결합하여 마이크로서비스 간 네트워크 통신을 가로채는 메쉬 네트워크를 형성합니다. 컨트롤 플레인은 트래픽을 라우팅하기 위해 프록시를 관리하고 구성합니다. 또한 컨트롤 플레인은 정책을 적용하고 텔레메트리를 수집하도록 구성 요소를 구성합니다.
Red Hat 리소스
Istio의 주요 기능
트래픽 관리
Istio는 서비스 간 트래픽 흐름을 정교하게 제어합니다. 이를 위해 다음과 같은 여러 테스트 및 배포 방식을 지원하는 등 고급 트래픽 라우팅 기능을 제공합니다.
- A/B 테스트: 두 가지 릴리스를 비교합니다.
- 카나리(Canary) 배포: 소규모 테스트 배포를 릴리스합니다.
- 블루 그린(Blue-green) 배포: 동일하지만 별개인 두 개의 환경을 생성하여 다운타임을 줄이고 리스크를 완화합니다.
또한 Istio는 서비스 인스턴스 간 부하 분산을 다룹니다. 즉, Istio를 사용하면 서비스에서 나가는 트래픽을 사이드카 프록시에서 가로챕니다. 그런 다음 해당 프록시는 컨트롤 플레인에 정의되어 있는 라우팅 규칙에 따라 요청을 적절한 목적지로 전달합니다.
서비스 검색 및 복구
Istio에는 메쉬 내에서 서비스를 자동으로 검색하는 기능이 포함되어 있습니다. 결함 주입 테스트를 수행하여 장애 시나리오를 시뮬레이션하고 비정상적 상황에서 시스템이 어떻게 동작하는지 평가할 수 있습니다. 또한 Istio는 재시도, 시간제한, 회로 차단과 같은 복구 메커니즘을 장착하고 있습니다. 컨트롤 플레인은 모든 서비스 인스턴스와 해당 위치를 추적하며, 새로운 서비스 인스턴스는 시작될 때 컨트롤 플레인에 자신을 등록합니다.
관측성 및 확장성
Istio는 관측성과 확장성을 제공합니다. Jaeger 또는 Zipkin과 같은 툴과 통합하여 분산 추적을 제공하고 Prometheus를 사용하여 메트릭과 텔레메트리를 제공합니다. Istio에는 서비스 간 통신을 시각화하는 상세 서비스 수준의 대시보드가 포함됩니다. 사이드카 프록시는 메트릭(요청 수, 대기 시간, 오류 발생률)을 수집하여 컨트롤 플레인 또는 모니터링 툴로 전송합니다. Istio는 모니터링 툴, 로깅 시스템, 사용자 정의 정책 엔진 등과 같은 외부 시스템과 통합이 가능하므로 서비스 메쉬에 새로운 기능을 추가할 수 있습니다.
보안 및 정책 실행
mTLS(Mutual Transport Layer Security)는 2개의 애플리케이션을 상호 인증하여 양측 간 개인정보 보호 및 보안을 제공합니다. TLS 모델에서 인증은 단방향으로 진행됩니다. 즉, 서버가 클라이언트를 인증합니다. mTLS의 경우 클라이언트와 서버 또는 웹사이트와 웹 브라우저가 상호 인증을 수행합니다. Istio는 mTLS를 서비스 간 보안 통신에 사용하고 역할 기반 액세스 제어(RBAC) 및 정책을 API 보안, 인증서 관리, 자동 키 순환 등에 사용합니다.
Istio는 할당량, 속도 제한, 인증/권한 부여와 같은 서비스 정책에 대한 구성을 중앙집중화합니다. 또한 사용자에게 액세스 정책을 통해 서비스 상호작용을 정교하게 제어할 수 있는 권한을 제공합니다. 인증, 속도 제한, 액세스 제어 등의 정책은 프록시 수준에서 실행되므로 서비스 간 일관성이 보장됩니다.
앰비언트 모드(Ambient mode)
Istio에는 워크로드 포드가 메쉬에 참여할 때 더 이상 사이드카 프록시가 필요하지 않아 '사이드카리스(sidecar-less)'라고도 불리는 새로운 데이터 플레인 모드인 엠비언트 모드(ambient mode)가 포함되어 있습니다. 엠비언트 모드에서 사이드카 프록시는 인프라로 통합된 데이터 플레인으로 대체되며, 이 데이터 플레인은 Istio의 제로 트러스트 보안, 텔레메트리, 트래픽 관리 기능을 계속 유지합니다. 사이드카를 제거함으로써 엠비언트 모드에서는 CPU와 메모리 사용에 필요한 인프라 리소스도 절약할 수 있습니다. Istio의 일반 모드에서는 Envoy 프록시가 모든 애플리케이션 포드에 영향을 미치지만 엠비언트 모드에서는 애플리케이션 포드가 영향을 받지 않고 자체 애플리케이션 컨테이너를 갖습니다.
Istio와 서비스 메쉬의 활용 사례 및 예시
Istio 서비스 메쉬는 여러 특정 목표와 태스크를 실현하는 데 사용될 수 있습니다. 다음은 Istio의 몇 가지 활용 사례, 그리고 서비스 메쉬를 통해 조직이 목표를 달성할 수 있는 방법의 예시입니다.
마이크로서비스 트래픽 제어
대규모 전자상거래 플랫폼에서는 장바구니 기능, 결제 옵션, 재고와 같은 서비스를 자주 업데이트합니다. 서비스 메쉬를 사용할 경우 조직은 카나리 배포를 통해 새로운 기능을 일부 사용자에게 점진적으로 배포할 수 있습니다. 또한 블루-그린 배포를 사용하여 다운타임이나 사용자 경험의 중단 없이 트래픽을 기존 버전에서 새 버전으로 이동할 수 있습니다. A/B 테스트는 조직이 특정 트래픽 비율을 여러 서비스 버전으로 라우팅하는 데 도움이 됩니다.
서비스 간 통신의 보안 유지
금융 서비스 회사는 계정을 관리하고 사기 행위를 감지하기 위해 민감한 사용자 데이터를 여러 서비스에서 처리합니다. 서비스 메쉬를 사용할 경우 금융 서비스 회사는 mTLS를 보안 강화에 적용하여 서비스 간 통신을 암호화할 수 있습니다. 또한 서비스 메쉬는 서비스 상호작용에 세분화된 RBAC를 제공합니다.
복원력과 내결함성
동영상 스트리밍 플랫폼의 경우 특정 서비스에 장애나 속도 저하 문제가 발생하더라도 재생이 중단되는 일을 방지해야 합니다. 서비스 메쉬를 사용하면 회로 차단 기능을 통해 장애가 발생한 서비스에 대한 요청 전송이 자동으로 중단됩니다. 지수 백오프를 통한 재시도가 일어나면 실패한 요청이 재시도를 하도록 지능적으로 유도됩니다. 서비스 메쉬 부하 분산은 상태가 양호한 서비스 인스턴스들에 트래픽을 분배하는 데 도움이 됩니다.
관측성과 모니터링
쿠버네티스에서 실행되는 서비스로서의 소프트웨어(SaaS) 플랫폼은 수십 개의 마이크로서비스 전반에서 대기 시간을 진단해야 합니다. 서비스 메쉬는 개발자가 여러 서비스 간 요청을 추적할 수 있는 분산 추적 기능과 오류 발생률, 트래픽 패턴 등 실시간 텔레메트리를 제공합니다.
API 게이트웨이 통합
API 게이트웨이는 내부 서비스가 메쉬 내부에서 통신하는 동안 외부 클라이언트에 서비스를 노출하는 데 사용됩니다. 서비스 메쉬를 사용하면 내부 서비스 통신을 안전하게 보호하는 동시에 외부 트래픽이 API 게이트웨이를 통해 흐르도록 허용할 수 있습니다. 또한 서비스 메쉬는 정책을 균일하게 적용하므로 속도 제한과 같은 규칙이 내부 서비스 전반에 일관되게 실행됩니다.
규제 컴플라이언스
보건 의료 제공자의 경우 안전한 데이터 전송을 위해 건강보험 정보의 이전 및 그 책임에 관한 법률(Health Insurance Portability and Accountability Act, HIPAA)을 준수해야 합니다. 서비스 메쉬를 사용하는 보건 의료 제공자는 TLS와 같은 암호화 표준을 시행할 수 있습니다. 또한 서비스 메쉬는 컴플라이언스와 문서화를 위해 서비스 통신에 대한 상세 감사 기록을 제공합니다.
신속한 환경
게이밍 회사는 게임 이용률이 높은 시간대나 프로모션 행사 기간에 자주 서비스를 스케일 업하고 스케일 다운합니다. 서비스 메쉬는 트래픽을 자동으로 검색해 새로 생성된 서비스 인스턴스로 라우팅할 수 있습니다. 또한 스케일링 작업 중 일관된 성능을 보장합니다.
Istio를 사용하기 위해 Red Hat OpenShift Service Mesh를 선택해야 하는 이유
Istio 프로젝트 기반의 Red Hat® OpenShift® Service Mesh는 애플리케이션에서 중앙 통제 지점을 생성하여 마이크로서비스 아키텍처의 다양한 문제와 활용 사례를 다룹니다. OpenShift Service Mesh를 사용하면 애플리케이션 코드를 변경할 필요 없이 기존의 분산형 애플리케이션에 투명한 계층을 추가할 수 있습니다. 또한 검색, 부하 분산, 서비스 간 인증, 장애 복구, 메트릭, 모니터링 등을 제공하는 배포된 서비스의 네트워크를 손쉽게 생성할 수 있습니다.
Red Hat OpenShift Service Mesh는 Red Hat OpenShift용으로 검증 및 최적화됩니다. 이는 오퍼레이터, 지속적 통합 및 지속적 제공(Continuous Integration and Continuous Delivery, CI/CD) 파이프라인과 같은 OpenShift 고유 기능과의 호환성을 제공합니다. 또한 Red Hat의 엔터프라이즈 지원을 제공하며 보안과 안정성을 위해 정기적으로 업데이트되고 패치가 적용됩니다. OpenShift Service Mesh는 다양한 Red Hat OpenShift 클러스터에서 작동하여 하이브리드 클라우드 및 멀티클라우드 환경 전반에서 일관성을 유지합니다. 그리고 멀티테넌시가 용이해지므로 조직은 서로 다른 팀이나 워크로드마다 별도의 서비스 메쉬를 관리할 수 있습니다. OpenShift Service Mesh에 내장된 보안 기능은 mTLS를 모든 서비스에 기본적으로 활성화하고, Red Hat OpenShift의 OAuth와 통합하여 신뢰할 수 있는 인증 및 권한 부여 기능을 제공합니다.
레드햇 공식 블로그
레드햇 공식 블로그에서 고객, 파트너, 커뮤니티 에코시스템 등 현재 화제가 되는 최신 정보를 살펴 보세요.