솔루션영역 01 / 06

아키텍처와 설계

아키텍처

현대적인 추상화 설계 패턴과 마이크로서비스 아키텍처를 활용한 통합 관리 아키텍처로, 데이터 서비스를 운영하고 관리하기 위한 가장 유연하고 견고한 기반을 제공합니다.

UPM for Enterprise아키텍처
섹션3
분 분량~8

아키텍처 개요

UPM은 고전적인 "허브-에이전트" 아키텍처 패턴을 구현하며, 관리 플랫폼 계층과 실행 엔진 계층이라는 두 개의 주요 계층으로 구성됩니다. 이 아키텍처는 강력하고 모듈화되어 있으며 확장 가능한 플랫폼을 유지하면서 Kubernetes 멀티 클러스터 오케스트레이션을 효과적으로 지원합니다. UPM은 탈중앙화된 설계와 명령형 아키텍처에서 벗어나, Kubernetes 고유의 "허브-kubelet" 아키텍처와 맞닿아 있는 "허브-에이전트" 패턴을 채택했습니다. 이 설계에서 관리 플랫폼 계층은 "허브"로, 관리되는 각 클러스터는 "에이전트"로 동작합니다. UPM의 두 가지 핵심 구성 요소를 살펴보겠습니다:

  • UPM Platform: 중앙 컨트롤 플랫폼으로서 외부 API 인터페이스를 제공하고, 워크플로를 통해 Kubernetes API 리소스 객체(CR)를 관리합니다. 마이크로서비스 아키텍처 위에 구축되어 다양한 데이터베이스와 미들웨어의 운영 요구 사항에 맞춰 효율적으로 확장됩니다.

  • UPM Engine: 실행 엔진으로서 Kubernetes Operator 프레임워크를 사용해 구축되었습니다. 이 Kubernetes 기반 확장 제품군은 주로 스테이트풀 서비스 자동화와 데이터 애플리케이션의 고급 운영 자동화에 중점을 둡니다. 자체 개발한 두 개의 Operator로 구성되며, 다양한 데이터베이스 유형과 멀티 데이터베이스 클러스터 아키텍처를 수용할 수 있는 범용 워크로드 설계를 갖추고 있습니다.

UPM 아키텍처 다이어그램

이러한 아키텍처상의 장점 덕분에 멀티 클러스터 운영을 다음 두 가지 측면으로 분리할 수 있습니다:

  1. 연산/의사 결정
  2. 실행

이러한 분리를 통해 UPM Engine은 실제 클러스터 실행 작업을 처리하고, UPM Platform은 워크플로를 통한 작업 오케스트레이션과 인터페이스 관리에 집중합니다. UPM Engine은 직접 실행하는 대신 CRD를 통해 클러스터 상태를 선언적으로 유지합니다. UPM Platform은 Kubernetes의 CRD 상태를 능동적으로 모니터링하고 그에 따라 후속 작업을 오케스트레이션합니다.

이 설계는 다음과 같이 UPM Platform의 운영 부담을 크게 줄여 줍니다:

  • Kubernetes 클러스터에서 쏟아지는 이벤트를 처리할 필요가 없어집니다
  • 개별 Kubernetes 클러스터에 대한 직접 요청량이 줄어듭니다

쉽게 비유하자면, kubelet 없이 5,000노드 규모의 Kubernetes 클러스터를 관리하면서 컨트롤 플레인이 컨테이너 데몬을 직접 조작한다고 상상해 보세요. 이런 중앙 집중식 제어는 매우 어려울 것입니다. UPM은 실행을 개별 에이전트에 분산하여 이 확장성 문제를 해결하고, UPM Platform이 여러 클러스터를 효율적으로 관리할 수 있도록 합니다.


UPM Platform 아키텍처

UPM Platform은 핵심 컨트롤 센터로서 외부 API 인터페이스를 제공하고 실행 워크플로를 관리합니다. 마이크로서비스 아키텍처 위에 구축되어 탁월한 확장성과 유연성을 제공합니다.

아키텍처

UPM Platform 아키텍처 다이어그램

UPM Platform 개요

UPM Platform은 핵심 컨트롤 센터로서 외부 API 인터페이스를 제공하고 실행 워크플로를 관리합니다. 마이크로서비스 아키텍처 위에 구축되어 탁월한 확장성과 유연성을 제공합니다.

핵심 구성 요소

UPM Platform은 세 가지 주요 구성 요소로 이루어져 있습니다:

  • UPM UI: 직관적인 웹 기반 대시보드를 통해 관리자에게 포괄적인 제어 및 모니터링 기능을 제공하는 통합 관리 인터페이스입니다.

  • UPM API-Server: SpringCloud 마이크로서비스 프레임워크 위에 구축된 관리의 핵심으로, 다음을 제공합니다:

    • 관리 작업을 위한 RESTful API 엔드포인트
    • MySQL 기반 데이터 영속성
    • 쿼리 성능 최적화를 위한 Redis 기반 캐싱
  • Helix: 데이터베이스와 미들웨어 서비스의 기능을 강화하는 확장 가능한 플랫폼 구성 요소입니다. 현재 MySQL 사용자 및 데이터베이스 관리 기능을 지원합니다.

마이크로서비스 아키텍처

UPM API-Server는 관리의 핵심으로서 중추적인 역할을 합니다. 이 마이크로서비스 아키텍처는 현재의 운영 요구 사항과 오픈소스 커뮤니티에서 새롭게 등장하는 서비스 관리 요구를 모두 충족하도록 설계되었습니다.

아키텍처의 주요 이점:

  • 기능을 목적이 명확하고 응집도 높은 서비스로 분리
  • 서비스 간 느슨한 결합
  • 서비스별 독립 데이터베이스
  • API 기반 통신
  • 개별 서비스 단위의 확장성
  • 개발, 배포, 테스트, 확장을 각각 독립적으로 수행 가능

마이크로서비스 모듈 목록

번호이름설명
1Gateway API외부 요청을 받아 해당 마이크로서비스 모듈로 라우팅합니다
2Auth사용자 인증과 권한 관리를 담당합니다
3Resource프로젝트, Kubernetes 클러스터, 노드, 스토리지 클래스, 소프트웨어 등 시스템 리소스를 관리합니다
4User사용자 정보의 관리와 운영을 담당합니다.
5OperatorLog시스템 작업 로그를 기록하여 시스템 작업을 추적할 수 있도록 합니다.
6MySQL serviceMySQL 데이터베이스를 위한 완전한 운영·유지보수 워크플로 제어 및 관리 기능을 제공합니다.
7Redis serviceRedis 캐시를 위한 완전한 운영·유지보수 워크플로 제어 및 관리 기능을 제공합니다.
Redis-Cluster serviceRedis 클러스터 캐시를 위한 완전한 운영·유지보수 워크플로 제어 및 관리 기능을 제공합니다.
8Kafka serviceKafka 이벤트 스트림을 위한 완전한 운영·유지보수 워크플로 제어 및 관리 기능을 제공합니다.
9Zookeeper serviceZookeeper 서비스 디스커버리를 위한 완전한 운영·유지보수 워크플로 제어 및 관리 기능을 제공합니다.
10Elasticsearch serviceElasticsearch 검색 엔진을 위한 완전한 운영 워크플로 제어 및 관리 기능을 제공합니다.

UPM Engine 개요

UPM Engine은 Kubernetes Operator 프레임워크로 구축된 실행 계층입니다. 이 Kubernetes 기반 확장 제품군은 스테이트풀 서비스 자동화와 데이터 애플리케이션의 고급 운영 자동화에 특화되어 있습니다.

아키텍처

UPM Engine 아키텍처 다이어그램

핵심 구성 요소

UPM Engine은 두 가지 주요 구성 요소로 이루어져 있습니다:

  • Unit Operator(코드명: Tesseract Cube): 다음을 통해 데이터베이스와 미들웨어의 스테이트풀 서비스를 강화하는 범용 워크로드 Operator입니다:

    • 통합 워크로드 관리(Unit 및 UnitSet)
    • 템플릿 기반 서비스 정의
    • 특정 서비스 유형과 버전에 맞춘 확장 가능한 구성
  • Compose Operator(코드명: Kauntlet): 사용자 정의 리소스 정의(CRD)를 통해 복잡한 운영 기능을 확장하는 고급 운영 Operator입니다.

Operator 설계 철학

저희의 Operator 설계는 로보틱스와 자동화 분야의 제어 루프 개념에 기반합니다. Kubernetes 환경에서는:

  • 컨트롤러가 클러스터 상태를 지속적으로 모니터링합니다
  • 시스템은 끊임없는 변화를 매끄럽게 처리합니다
  • 여러 컨트롤러가 클러스터 상태의 특정 측면을 각각 관리합니다
  • 복잡하게 얽힌 컨트롤러보다 단순하고 목적이 분명한 컨트롤러가 더 높은 안정성을 제공합니다

Unit Operator 상세

Unit Operator(코드명: Tesseract Cube)는 다음을 통해 데이터베이스와 미들웨어 워크로드 관리를 통합합니다:

Unit 관리

Unit은 완전한 서비스 인스턴스를 나타내며 다음을 포함합니다:

  • Pod 정의
  • Service 구성
  • 영구 스토리지
  • 수명 주기 관리
Unit 관리 아키텍처

UnitSet 운영

UnitSet은 스테이트풀 데이터베이스 인스턴스의 집합을 관리하며 다음을 제공합니다:

  • 배포 및 확장 기능
  • 영구 스토리지 관리
  • 구성 템플릿화
  • 보안 기능(암호화, 인증)
  • 롤링 업데이트 정책
UnitSet 관리 아키텍처

Compose Operator 기능

Compose Operator(코드명: Kauntlet)는 전용 CRD를 통해 Kubernetes의 데이터베이스 관리 기능을 확장합니다:

지원 기능

  1. MySQL 복제 관리

    • 리더/팔로워 토폴로지 관리
    • 자동 페일오버
    • 읽기/쓰기 분리
    • 복제 모니터링
  2. Redis 복제 관리

    • 리더/팔로워 구성
    • Sentinel 아키텍처 지원
    • 자동 페일오버
    • 상태 모니터링
  3. Redis Cluster 관리

    • 클러스터 구성 자동화
    • 동적 슬롯 할당
    • 고가용성 기능
    • 성능 최적화
  4. ProxySQL 동기화

    • 토폴로지 모니터링
    • MySQL 서버 구성
    • 사용자 동기화
    • 로드 밸런싱
    • 페일오버 관리

Compose Operator는 고가용성과 운영 효율성을 보장하면서 데이터베이스 클러스터 관리를 크게 단순화합니다. 확장 가능한 설계 덕분에 특정 운영 요구 사항에 맞는 사용자 정의 기능을 추가할 수 있습니다.