베하~안녕하세요
3대 5000의 man, xoxo 입니다
이번 시간에는 이스티오(Istio)에 대해 알아보도록 하겠습니다.
이스티오(Istio)란?
- 서비스 매쉬 오픈소스
- 기존의 응용프로그램 위에 레이어링되어 다양한 동작들을 수행
- GCP에서는 이를 완전 관리해주는 서비스를 Anthos라고 함
- istio를 사용하면 코드 변경없이 마이크로 서비스들끼리 안전하게 통신하고, 모니터링 할 수 있는 효율적이고 일관된 방법을 제공함
- 서비스 메쉬 설명 전 마이크로서비스란?
- 소프트웨어를 구축하기 위한 아키텍처이자 하나의 접근 방식으로, 애플리케이션을 상호 독립적인 최소 구성 요소로 분할하는 방식
- 모든 요소를 하나의 애플리케이션에 구축하는 전통적인 접근 방식 대신 마이크로서비스에서는 모든 요소가 독립적이며 연동되어 테스크를 수행
- 이러한 각각의 구성 요소 또는 프로세스가 마이크로 서비스
- 그렇다면 서비스 메쉬란 무엇인가?
- 마이크로 서비스를 위한 인프라 계층
- 레거시 코드의 변경 없이 각 서비스에 대해 가시성, 트래픽 관리, 보안 기능 등을 추가
- 복잡하고 방대한 규모의 마이크로서비스에 대한 관리 용이
- 마이크로서비스를 적용한 시스템의 내부 통신이 Mesh 네트워크 형태를 띄는 것에 빗대어 서비스 메쉬라고 말하고 있음
- 서비스 간의 통신을 추상화를 통해 복잡한 내부 구조를 제어, 추적, 내부 네트워크 관련 로직을 추가함으로써 안정성, 신뢰성, 탄력성, 표준화, 가시성, 보안성 등을 확보
- Service Mesh 는 URL 경로, 호스트 헤더, API 버전 또는 기타 응용 프로그램 수준 규칙을 기반으로 하는 계층 7 네트워크 Layer
- Service Mesh 의 구현체인 경량화 Proxy를 통해 다양한 Routing Rules, Circuit breaker 등 공통기능을 설정할 수 있습니다.
- 이는 서비스 간 통신에 연관된 기능 뿐만 아니라, 서비스의 배포 전략에도 도움을 줍니다.
이스티오가 제공하는 기능들
- 클러스터 내부에서 TLS 암호화를 이용한 서비스간 안전한 통신 제공
- HTTP, gRPC, WebSocket 및 TCP 트래픽에 대한 로드 밸런싱
- 재시도, 다양한 라우팅 규칙, fault injection 등을 통해 세부 트래픽 동작을 제어
- 클러스터 내의 모든 트래픽에 대한 메트릭 수집과 로그 추적
이스티오의 아키텍처
istio 활용 전 아키텍처
istio 활용 후 아키텍처
- 데이터 플레인
- 데이터 플레인은 데이터 전송과 처리를 담당하는 부분
- 각 서비스를 Envoy proxy와 함께 배포(사이드카 패턴 방식)
- 각 서비스 앞단에 프록시 서버를 두어 서비스로 또는 서비스로부터 나가는 모든 네트워크 패킷을 변환, 전달 및 모니터링
- Envoy proxy란?
- 클라우드 네이티브용으로 Lyft 사에서 C++로 개발해서 2016년 12월 14일 공개한 L7 프록시
- 2017년 5월에 Google, Lyft, IBM에서 공동으로 개발해서 내놓은 Service Mesh 오픈소스인 Istio의 메인 프록시가 됨
- 주요 기능
- OUT OF PROCESS ARCHITECTURE
- Envoy proxy는 그 자체로 메모리사용량이 적은 고성능의 서버입니다.
- 모든 프로그래밍 언어, 프레임워크와 함께 실행될 수 있습니다.
- 이는 다양한 언어,프레임워크를 함께 사용하는 Architecture에 유용히 사용될 수 있습니다.
- HTTP/2(1) AND gRPC SUPPORT
- HTTP/1.1은 물론 HTTP/2도 지원합니다.
- 이는 HTTP/1.1과 HTTP/2 클라이언트와 서버간 모든 조합을 연결할 수 있음을 의미합니다.
- 권장하는 구조는 모든 Envoy간에 HTTP/2를 사용하는 것입니다.
- 또한 gRPC를 지원하여 HTTP/2기능을 보완할 수 있습니다.
- L3/L4 Architecture : Envoy의 주요 기능은 L7이지만 핵심은 L3/L4 네트워크 프록시 입니다. TCP프록시, HTTP프록시, TLS인증과 같은 다양한 작업을 지원합니다.
- L7 Architecture : 버퍼링, 속도제한, 라우팅/전달 등과 같은 다양한 작업을 수행할 수 있게 합니다.
- ADVANCED LOAD BALANCING
- 자동 재시도, circuit break, 외부 속도 제한 서비스를 통한 글로벌 속도제한, 이상치 탐지 등의 기능을 제공합니다.
- APIS FOR CONFIGURATION MANAGEMENT
- Envoy는 구성을 동적으로 관리하기 위한 강력한 API를 제공합니다.
- OBSERVABILITY
- L7 트래픽의 심층 관찰 성, 분산 추적에 대한 기본 지원, MongoDB, DynamoDB 등의 와이어 수준 관찰성을 제공합니다.
- 사이드카 패턴이란?
- 사이드카 패턴은 원래 사용하려고 했던 기본 컨테이너의 기능을 확장하거나 보조하는 용도의 컨테이너를 추가하는 패턴
- 즉, 기본 컨테이너와 독립적으로 동작하는 별도의 컨테이너를 붙이는 패턴이기 때문에 어플리케이션 컨테이너의 변경이나 수정 없이 독립적으로 동작하는 컨테이너를 붙였다 뗐다 할 수 있다.
- 컨트롤 플레인
- 컨트롤 플레인은 네트워크의 제어와 관리를 담당하는 부분
- 회로 차단, 로드 밸런싱, 타임아웃 등의 기본 구성 정보를 저장
- 기본 구성 정보에 맞게 각 서비스의 프록시를 동작
이번 시간에는 이스티오(Istio)에 대해 알아보았습니다. 다음 시간에는 GCP를 이용하여 해당 개념의 실습에 대해 알아보도록 하겠습니다~
댓글