2019.01.25

쿠버네티스 서비스 메시 기술, '이스티오'란?

Serdar Yegulalp | InfoWorld
마이크로서비스 아키텍처는 몇몇 문제를 해결하지만 그 와중에 다른 문제를 낳는다. 애플리케이션을 독립적 서비스들로 분할한다면 개발, 업데이트, 확장이 단순해진다. 동시에 연결하고 안전하게 관리해야 할 동작 부분이 크게 늘어난다. 온갖 네트워크 서비스, 예컨대 로드 밸런싱, 트래픽 관리, 인증, 권한부여 등을 관리하는 일이 엄청나게 복잡해질 수 있다. 
 
ⓒCredit: GettyImages

쿠버네티스 클러스터 안의 서비스들 사이의 네트워크화된 공간을 통칭하는 용어가 있다. 바로 서비스 메시(service mesh)이다. 구글 프로젝트인 이스티오(Istio)는 서비스 메시가 더 복잡해지기 전에 이를 관리하는 기술이다. 

서비스 메시란 무엇인가? 
어떤 네트워크 애플리케이션에서든 여러 공통된 행동이 발견되기 마련이다. 예컨대 로드 밸런싱 같은 것이다. 네트워크 서비스 가운데 이를 필요로 하지 않는 경우는 거의 없다. 또한 상이한 네트워크 서비스 조합에 대한 A/B 테스트를 하거나, 일련의 네트워크 서비스에 걸쳐 전체 인증(End-to-End authentication)을 설정할 수도 있다. 이러한 행동을 통칭해 ‘서비스 메시’라고 한다. 

서비스 메시의 관리는 서비스 자체에 맡겨서는 안 된다. 어떤 서비스도 하향식으로 무언가를 할만한 적절한 위치에 있지 않으며, 사실 이는 서비스가 자체적으로 해결해야 할 일도 아니다. 서비스와 네트워크 사이에 별개의 시스템을 두는 것이 바람직한 해법이다. 이 시스템은 아래와 같이 2가지 핵심적 기능을 제공한다. 

1. 중요한 네트워크 트래픽 처리 작업, 예컨대 로드 밸런싱, 라우팅, 재시도 등을 서비스 자체와 분리한다. 
2. 관리자를 위한 추상 계층을 제공한다. 이에 의해 클러스터 내 네트워크 트래픽에 대한 고-수준의 결정을 이행하는 것이 용이해진다. 예컨대 정책 컨트롤, 지표와 로깅, 서비스 디스커버리, TLS를 통한 안전한 인터-서비스 통신 등이다. 

이스티오 서비스 메시 구성요소 
이스티오는 2가지 기본 아키텍처 조각을 클러스터에게 제공함으로써 서비스 메시로서 작용한다. 즉, 데이터 영역과 제어 영역이다. 

데이터 영역(data plane)은 메시 내 서비스들 사이의 네트워크 트래픽을 취급한다. 이 트래픽은 네트워크 프록시 시스템에 의해 인터셉트되어 리다이렉트 된다. 이스티오의 경우 프록시는 오픈소스 프로젝트인 엔보이(Envoy)에 의해 제공된다. 데이터 영역의 2번째 구성요소인 믹서(Mixer)는 엔보이에서, 그리고 서비스-투-서비스 트래픽 흐름에서 원격측정 데이터와 통계를 취합한다. 

이스티오의 핵심인 제어 영역은 데이터 영역을 관리하고 안전하게 유지한다. 이는 엔보이 프록시와 믹서의 구성을 설정하고, 누가 누구를 언제 호출하는가와 같은 네트워크 정책을 시행한다. 또한 제어 영역은 데이터 영역과 이의 작용 일체에 대한 프로그램적 추상 계층을 제공한다. 

그 외 이스티오의 아래 3가지 요소는 서비스를 한층 정교하게 만든다. 

이스티오 파일럿(Istio Pilot) 
이스티오 파일럿은 제어 영역이 제공하는 트래픽 행동 규칙을 수용하여 이를 엔보이가 적용하는 구성설정으로 변환한다. 이는 트래픽 행동이 로컬로 관리되는 방식을 참조하면서 이루어진다. 파일럿은 이스티오가 쿠버네티스와 병렬로 여러 오케스트레이션 시스템과 작용하도록 하면서, 한편으로 이들 사이에서 일관되게 작용하도록 한다. 

이스티오 시터들(Istio Citadel)
시터들은 서비스 간의 인증과 신원 관리를 총괄한다. 

이스티오 갤리(Istio Galley)
갤리는 이용자가 지정한 이스티오 설정을 수용하고 이를 다른 제어 영역 요소의 유효한 구성설정으로 변환한다. 이스티오가 여러 오케스트레이션 시스템을 투명하게 이용할 수 있도록 하는 또 하나의 요소다. 

이스티오 서비스 메시 기능
이스티오가 제공하는 첫 번째이자 가장 중요한 혜택은 서비스 메시의 복잡성을 일정한 거리를 두고 취급하는 방식인 추상화다. 이스티오를 조정함으로써 프로그래밍 차원에서 메시를 자유롭게 변경할 수 있다. 메시로 연결된 서비스는 새로운 네트워크 정책이나 쿼터를 준수하기 위해 내부로부터 재프로그래밍될 필요가 없다. 그리고 서비스 사이의 네트워크 공간 역시 직접적으로 접촉될 필요가 없다. 

아울러, 이스티오는 클러스터의 네트워크 구성설정을 파괴하지 않고 변경하거나 임시로 변경할 수 있게 해 준다. 전체적이든 부분적이든, 새로운 네트워크 레이아웃을 내놓고 싶다면, 또는 새로운 구성을 현재의 구성과 A/B 테스트하고 싶다면 이스티오는 이를 하향식으로 이행할 수 있게 해 준다. 변경이 위험할 경우 롤백 또한 가능하다. 

세 번째 혜택은 관찰성(observability)이다. 이스티오는 컨테이너와 클러스터 노드 사이의 현황에 대해 상세한 통계와 보고를 제공한다. 예기치 않은 문제가 있을 경우, 무언가가 정책을 준수하지 않을 경우, 또는 변경이 비생산적으로 드러난 경우, 이를 신속히 파악할 수 있다. 

또한 이스티오는 이용자가 서비스 메시에서 관찰한 공통 패턴을 실행할 수 있는 방식 역시 제공한다. 한가지 실례는 서킷 브레이커 패턴이다. 이는 백 엔드가 문제를 보고하고 요청을 적시에 수행할 수 없을 경우, 요청 공세로부터 서비스를 보호한다. 이스티오는 여러 표준적 정책 시행의 일환으로 서킷 브레이커를 제공한다. 

마지막으로, 이스티오는 쿠버네티스와 매우 직접적이면서 깊게 작용하지만, 이는 독립적 플랫폼으로 설계되었다. 이스티오는 쿠버네티스가 의지하는 것과 동일한 공개 표준과 연계된다. 또한 이스티오는 개별 시스템에서, 또는 메소스(Mesos)나 노마드(Nomad) 등의 타 오케스트레이션 시스템에서, 독립적 형식으로도 작동할 수 있다. 

이스티오를 시작하는 법 
이미 쿠버네티스 경험이 있는 이용자라면 이스티오를 배우는 좋은 방법은 쿠버네티스 클러스터를 선택해 – 이미 실무에 투입된 것 제외 – 그 위 헬름 차트 방법을 따라 이스티오를 설치하는 것이다. 그 후 지능적 트래픽 관리, 원격측정 등 보편적 이스티오 기능을 실증하는 샘플 애플리케이션을 설치할 수 있다. 이에 의해 기본적 이스티오 경험을 축적할 수 있고, 그 후 애플리케이션 클러스터에서 서비스 메시 기능을 이행하도록 전개할 수 있다. 

레드햇은 자사 쿠버네티스 구동 오픈시프트 프로젝트의 일환으로 이스티오에 투자해왔고, 보편적 이스티오 전개와 관리 시나리오를 단계별로 안내하는 강좌를 제공한다. ciokr@idg.co.kr



2019.01.25

쿠버네티스 서비스 메시 기술, '이스티오'란?

Serdar Yegulalp | InfoWorld
마이크로서비스 아키텍처는 몇몇 문제를 해결하지만 그 와중에 다른 문제를 낳는다. 애플리케이션을 독립적 서비스들로 분할한다면 개발, 업데이트, 확장이 단순해진다. 동시에 연결하고 안전하게 관리해야 할 동작 부분이 크게 늘어난다. 온갖 네트워크 서비스, 예컨대 로드 밸런싱, 트래픽 관리, 인증, 권한부여 등을 관리하는 일이 엄청나게 복잡해질 수 있다. 
 
ⓒCredit: GettyImages

쿠버네티스 클러스터 안의 서비스들 사이의 네트워크화된 공간을 통칭하는 용어가 있다. 바로 서비스 메시(service mesh)이다. 구글 프로젝트인 이스티오(Istio)는 서비스 메시가 더 복잡해지기 전에 이를 관리하는 기술이다. 

서비스 메시란 무엇인가? 
어떤 네트워크 애플리케이션에서든 여러 공통된 행동이 발견되기 마련이다. 예컨대 로드 밸런싱 같은 것이다. 네트워크 서비스 가운데 이를 필요로 하지 않는 경우는 거의 없다. 또한 상이한 네트워크 서비스 조합에 대한 A/B 테스트를 하거나, 일련의 네트워크 서비스에 걸쳐 전체 인증(End-to-End authentication)을 설정할 수도 있다. 이러한 행동을 통칭해 ‘서비스 메시’라고 한다. 

서비스 메시의 관리는 서비스 자체에 맡겨서는 안 된다. 어떤 서비스도 하향식으로 무언가를 할만한 적절한 위치에 있지 않으며, 사실 이는 서비스가 자체적으로 해결해야 할 일도 아니다. 서비스와 네트워크 사이에 별개의 시스템을 두는 것이 바람직한 해법이다. 이 시스템은 아래와 같이 2가지 핵심적 기능을 제공한다. 

1. 중요한 네트워크 트래픽 처리 작업, 예컨대 로드 밸런싱, 라우팅, 재시도 등을 서비스 자체와 분리한다. 
2. 관리자를 위한 추상 계층을 제공한다. 이에 의해 클러스터 내 네트워크 트래픽에 대한 고-수준의 결정을 이행하는 것이 용이해진다. 예컨대 정책 컨트롤, 지표와 로깅, 서비스 디스커버리, TLS를 통한 안전한 인터-서비스 통신 등이다. 

이스티오 서비스 메시 구성요소 
이스티오는 2가지 기본 아키텍처 조각을 클러스터에게 제공함으로써 서비스 메시로서 작용한다. 즉, 데이터 영역과 제어 영역이다. 

데이터 영역(data plane)은 메시 내 서비스들 사이의 네트워크 트래픽을 취급한다. 이 트래픽은 네트워크 프록시 시스템에 의해 인터셉트되어 리다이렉트 된다. 이스티오의 경우 프록시는 오픈소스 프로젝트인 엔보이(Envoy)에 의해 제공된다. 데이터 영역의 2번째 구성요소인 믹서(Mixer)는 엔보이에서, 그리고 서비스-투-서비스 트래픽 흐름에서 원격측정 데이터와 통계를 취합한다. 

이스티오의 핵심인 제어 영역은 데이터 영역을 관리하고 안전하게 유지한다. 이는 엔보이 프록시와 믹서의 구성을 설정하고, 누가 누구를 언제 호출하는가와 같은 네트워크 정책을 시행한다. 또한 제어 영역은 데이터 영역과 이의 작용 일체에 대한 프로그램적 추상 계층을 제공한다. 

그 외 이스티오의 아래 3가지 요소는 서비스를 한층 정교하게 만든다. 

이스티오 파일럿(Istio Pilot) 
이스티오 파일럿은 제어 영역이 제공하는 트래픽 행동 규칙을 수용하여 이를 엔보이가 적용하는 구성설정으로 변환한다. 이는 트래픽 행동이 로컬로 관리되는 방식을 참조하면서 이루어진다. 파일럿은 이스티오가 쿠버네티스와 병렬로 여러 오케스트레이션 시스템과 작용하도록 하면서, 한편으로 이들 사이에서 일관되게 작용하도록 한다. 

이스티오 시터들(Istio Citadel)
시터들은 서비스 간의 인증과 신원 관리를 총괄한다. 

이스티오 갤리(Istio Galley)
갤리는 이용자가 지정한 이스티오 설정을 수용하고 이를 다른 제어 영역 요소의 유효한 구성설정으로 변환한다. 이스티오가 여러 오케스트레이션 시스템을 투명하게 이용할 수 있도록 하는 또 하나의 요소다. 

이스티오 서비스 메시 기능
이스티오가 제공하는 첫 번째이자 가장 중요한 혜택은 서비스 메시의 복잡성을 일정한 거리를 두고 취급하는 방식인 추상화다. 이스티오를 조정함으로써 프로그래밍 차원에서 메시를 자유롭게 변경할 수 있다. 메시로 연결된 서비스는 새로운 네트워크 정책이나 쿼터를 준수하기 위해 내부로부터 재프로그래밍될 필요가 없다. 그리고 서비스 사이의 네트워크 공간 역시 직접적으로 접촉될 필요가 없다. 

아울러, 이스티오는 클러스터의 네트워크 구성설정을 파괴하지 않고 변경하거나 임시로 변경할 수 있게 해 준다. 전체적이든 부분적이든, 새로운 네트워크 레이아웃을 내놓고 싶다면, 또는 새로운 구성을 현재의 구성과 A/B 테스트하고 싶다면 이스티오는 이를 하향식으로 이행할 수 있게 해 준다. 변경이 위험할 경우 롤백 또한 가능하다. 

세 번째 혜택은 관찰성(observability)이다. 이스티오는 컨테이너와 클러스터 노드 사이의 현황에 대해 상세한 통계와 보고를 제공한다. 예기치 않은 문제가 있을 경우, 무언가가 정책을 준수하지 않을 경우, 또는 변경이 비생산적으로 드러난 경우, 이를 신속히 파악할 수 있다. 

또한 이스티오는 이용자가 서비스 메시에서 관찰한 공통 패턴을 실행할 수 있는 방식 역시 제공한다. 한가지 실례는 서킷 브레이커 패턴이다. 이는 백 엔드가 문제를 보고하고 요청을 적시에 수행할 수 없을 경우, 요청 공세로부터 서비스를 보호한다. 이스티오는 여러 표준적 정책 시행의 일환으로 서킷 브레이커를 제공한다. 

마지막으로, 이스티오는 쿠버네티스와 매우 직접적이면서 깊게 작용하지만, 이는 독립적 플랫폼으로 설계되었다. 이스티오는 쿠버네티스가 의지하는 것과 동일한 공개 표준과 연계된다. 또한 이스티오는 개별 시스템에서, 또는 메소스(Mesos)나 노마드(Nomad) 등의 타 오케스트레이션 시스템에서, 독립적 형식으로도 작동할 수 있다. 

이스티오를 시작하는 법 
이미 쿠버네티스 경험이 있는 이용자라면 이스티오를 배우는 좋은 방법은 쿠버네티스 클러스터를 선택해 – 이미 실무에 투입된 것 제외 – 그 위 헬름 차트 방법을 따라 이스티오를 설치하는 것이다. 그 후 지능적 트래픽 관리, 원격측정 등 보편적 이스티오 기능을 실증하는 샘플 애플리케이션을 설치할 수 있다. 이에 의해 기본적 이스티오 경험을 축적할 수 있고, 그 후 애플리케이션 클러스터에서 서비스 메시 기능을 이행하도록 전개할 수 있다. 

레드햇은 자사 쿠버네티스 구동 오픈시프트 프로젝트의 일환으로 이스티오에 투자해왔고, 보편적 이스티오 전개와 관리 시나리오를 단계별로 안내하는 강좌를 제공한다. ciokr@idg.co.kr

X