본문 바로가기
카테고리 없음

이스티오(Istio)란?

by BTC_XOXO 2023. 12. 22.

베하~안녕하세요 

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의 메인 프록시가 됨
      • 주요 기능
        1. OUT OF PROCESS ARCHITECTURE
        • Envoy proxy는 그 자체로 메모리사용량이 적은 고성능의 서버입니다.
        • 모든 프로그래밍 언어, 프레임워크와 함께 실행될 수 있습니다.
        • 이는 다양한 언어,프레임워크를 함께 사용하는 Architecture에 유용히 사용될 수 있습니다.
        1. 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 : 버퍼링, 속도제한, 라우팅/전달 등과 같은 다양한 작업을 수행할 수 있게 합니다.
        1. ADVANCED LOAD BALANCING
        • 자동 재시도, circuit break, 외부 속도 제한 서비스를 통한 글로벌 속도제한, 이상치 탐지 등의 기능을 제공합니다.
        1. APIS FOR CONFIGURATION MANAGEMENT
        • Envoy는 구성을 동적으로 관리하기 위한 강력한 API를 제공합니다.
        1. OBSERVABILITY
        • L7 트래픽의 심층 관찰 성, 분산 추적에 대한 기본 지원, MongoDB, DynamoDB 등의 와이어 수준 관찰성을 제공합니다.
    • 사이드카 패턴이란?
      • 사이드카 패턴은 원래 사용하려고 했던 기본 컨테이너의 기능을 확장하거나 보조하는 용도의 컨테이너를 추가하는 패턴
      • 즉, 기본 컨테이너와 독립적으로 동작하는 별도의 컨테이너를 붙이는 패턴이기 때문에 어플리케이션 컨테이너의 변경이나 수정 없이 독립적으로 동작하는 컨테이너를 붙였다 뗐다 할 수 있다.
  • 컨트롤 플레인
    • 컨트롤 플레인은 네트워크의 제어와 관리를 담당하는 부분
    • 회로 차단, 로드 밸런싱, 타임아웃 등의 기본 구성 정보를 저장
    • 기본 구성 정보에 맞게 각 서비스의 프록시를 동작

 

이번 시간에는 이스티오(Istio)에 대해 알아보았습니다. 다음 시간에는 GCP를 이용하여 해당 개념의 실습에 대해 알아보도록 하겠습니다~

댓글