2022년 1월 25일 화요일

Service Mesh 에서의 Control Plane, Consul

지난 글에서는 Service Mesh Architecture 에서의 Sidecar 에 대해 서비스 간 호출을 Sidecar 를 통해 수행하며 서비스와 별도로 구성되어 운영되고 이들이 모여 Mesh 형태의 Network 를 구성하여 네트워크 로직을 처리하는 Data Plane 으로 역할을 수행하는 것을 살펴보았다.

서비스의 규모가 커지면 커질수록 연동이 필요한 Sidecar 수가 늘어나 이들을 관리하기 위한 Controller (Control Plane) 가 필요로 하게 된다. 사용자는 각 서비스에 대한 정보나 서비스 간 라우팅 정보 등 시스템 운영에 필요한 정책을 수립하게 되고 이러한 정책들을 Control Plane 을 통해 등록 및 관리하며 각 서비스의 Data Plane 에게 전달하여 각 서비스에서 해당 정책이 반영되도록 한다. 대표적인 Control Plane 이자 Service Mesh 서비스로 Hashicorp 의 Consul 1 을 들 수 있다.

Control Plane & Data Plane on Hashicorp Consul

Consul 은 ‘Automate network configurations, discover services, and enable secure connectivity across any cloud or runtime.’ 라는, 기반 환경에 구애 받지 않고 각 Service 가 어디에 어떻게 존재하는 지 파악하며 서로 간의 연결성을 자동화 기반 설정 기능으로 지원하게 하는 디자인 목표를 토대로 발전하고 있다. Consul 이 제공하는 기능을 간단하게 살펴보면 아래와 같다.

  1. Service Discovery & Health Check: 등록한 서비스 정보를 기반으로 서비스를 탐색하고 서비스의 상태 확인 수행
  2. Networking
    1. Intentions: L4/L7 레벨 접근 제어 정책 설정
    2. L7 Traffic Management: Routing -> Splitting -> Resolution 3단계로 L7 Traffic 에 대한 다양한 Routing 및 Load Balancing 설정
  3. Dynamic App Configuration: Key/Value Store 활용, 서비스 별 필요한 Config 설정값 과 데이터를 저장하여 서비스에 대한 config 변경이나 서비스간 정보 공유 기능 지원
  4. Multi Datacenter: 하나의 Consul Domain 을 ‘Datacenter’ 라고 칭하며 여러 환경에 분산되어 구성된 Consul Datacenter 간 연결하여 확장 가능
Consul Multi Datacenter

Cloud Insight 에도 개재된 바가 있고 개인적으로도 최근 업무를 통해 경험하게 되는 것은, 기업들이 하나의 Cloud Service 에 시스템을 종속시키지 않고 다양한 Cloud Service 로 분산시키고자 하는 노력을 하고 있다. 이 때 고민하게 되는 부분이 하나의 환경에 구성되어 있던 시스템 또는 서비스가 서로 다른 환경으로 분산 배치 되면서 이들을 어떻게 관리할 것인가 인데, 2020년 10월에 발간된 Hashicorp Snapshot 2 을 통해 Web Application 과 Database 는 GCP (Google Cloud Platform) 에, Front-end 는 Azure 와 AWS 에 구성되어 있는 환경에서 Consul 을 기반으로 이를 효율적으로 관리하는 방법과 데모를 살펴볼 수 있다.

  1. Hashicorp Consul
  2. Consul을 통한 멀티클라우드 서비스 연결

    Related Posts

    클라우드 환경에서의 데이터베이스 가용성
    Cloud 환경에서의 효율적인 보안 및 인증 관리
    Service Mesh 에서의 Sidecar

    Leave a Reply