StarRocks 아키텍처 이해

StarRocks는 FE(Frontend)와 BE/CN(Backend/Compute Nodes) 두 종류 컴포넌트로 구성된 단순한 아키텍처의 분석 데이터베이스입니다. 로컬 저장소를 사용하는 Shared-nothing 모드(고성능)와 객체 스토리지를 활용하는 Shared-data 모드(비용 효율적)를 환경에 따라 선택할 수 있습니다. 복잡한 외부 의존성 없이 MPP 구조로 뛰어난 성능과 운영 중단 없는 수평 확장을 제공하는 것이 핵심 특징입니다.

StarRocks 아키텍처 이해

1. StarRocks 소개

왜 StarRocks인가?

최근 데이터 분석 시장에서 StarRocks가 주목받고 있습니다.

그 이유는 무엇일까요?

StarRocks는 단순함성능을 동시에 추구하는 분석 데이터베이스입니다. 복잡한 외부 의존성 없이도 뛰어난 성능을 제공하며, 운영 중단 없이 수평 확장이 가능한 것이 가장 큰 특징입니다.

핵심 특징과 장점

🎯 단순한 아키텍처

  • FE(Frontend) + BE(Backend)/CN(Compute Nodes) 두 종류의 컴포넌트만으로 구성
  • 외부 컴포넌트에 의존하지 않는 독립적인 시스템

⚡ 뛰어난 성능

  • MPP(Massively Parallel Processing) 구조로 대용량 데이터 처리
  • 로컬 데이터 직접 접근으로 최적화된 쿼리 성능

🔧 유연한 확장성

  • 운영 중단 없는 수평 확장
  • 환경에 따른 두 가지 배포 모드 지원

2. 아키텍처 기본 구조

StarRocks의 아키텍처는 놀랍도록 단순합니다. 크게 세 종류의 컴포넌트로만 구성되어 있습니다.

FE (Frontend) - 두뇌 역할

주요 역할:

  • 📊 메타데이터 관리: BDB JE를 사용하여 메타데이터를 메모리에 저장
  • 🔗 클라이언트 연결: 사용자 요청을 받아 처리
  • 📋 쿼리 계획 수립: SQL을 분석하여 실행 계획 생성
  • ⚖️ 스케줄링: 작업을 BE/CN 노드들에 분산

고가용성 구조:

  • Leader: 실제 메타데이터 변경 작업 수행
  • Follower: Leader와 동기화되며, Leader 장애 시 대체 가능
  • Observer: 읽기 전용으로 쿼리 부하 분산

FE 노드들은 Raft 프로토콜을 사용하여 리더를 선출하고 데이터를 동기화합니다.

BE/CN - 실제 작업자

BE (Backend) - Shared-nothing 모드

  • 💾 데이터 저장: 로컬 저장소에 데이터 보관
  • ⚙️ SQL 실행: FE의 계획을 받아 실제 쿼리 실행
  • 🔄 데이터 복제: MPP 구조로 고가용성 보장

CN (Compute Nodes) - Shared-data 모드

  • 🧮 연산 전용: 데이터 저장 없이 연산만 수행
  • 📦 캐시 관리: 자주 사용하는 데이터를 로컬에 캐시
  • 🚀 빠른 확장: 상태가 없어 추가/제거가 매우 빠름

3. Shared-nothing vs Shared-data 완벽 비교

StarRocks의 가장 큰 특징 중 하나는 환경에 따라 최적의 아키텍처를 선택할 수 있다는 점입니다.

Shared-nothing: 로컬 저장소의 강력함

shared-data-archi.png

구조:

  • BE 노드들이 로컬 저장소에 데이터를 저장
  • 각 노드가 자체적으로 쿼리를 직접 처리

장점:

  • 초고속 쿼리: 로컬 데이터 직접 접근으로 최고 성능
  • 🛡️ 안정성: MPP 구조로 데이터 복제와 고가용성 보장
  • 🎯 실시간 처리: 저지연 쿼리 처리에 최적화

적합한 상황:

  • 실시간 대시보드나 OLAP 쿼리가 중요한 경우
  • 네트워크 지연을 최소화해야 하는 환경
  • 예측 가능한 워크로드 패턴

Shared-data: 클라우드 네이티브의 유연함

shared-nothing-archi.png
구조:

  • 객체 스토리지(AWS S3, GCS, Azure Blob, MinIO 등) 또는 HDFS를 저장소로 사용
  • CN 노드들이 캐시와 연산만 담당

핵심 기술 - 멀티 티어 캐시 시스템:

메모리 캐시 → 로컬 디스크 캐시 → 원격 객체 스토리지
    ↑              ↑                    ↑
  Hot data    Warm data            Cold data
  • Hot data: 메모리에서 직접 접근 (최고 성능)
  • Warm data: 로컬 디스크 캐시에서 접근 (빠른 성능)
  • Cold data: 객체 스토리지에서 로드 후 캐시 (점진적 성능 향상)

장점:

  • 💰 비용 절감: 저렴한 객체 스토리지 활용
  • 🔄 리소스 격리: 컴퓨팅과 스토리지 독립적 확장
  • 🚀 빠른 확장: CN 노드 추가/제거가 매우 빠름
  • ☁️ 클라우드 친화적: 클라우드 네이티브 환경에 최적화

적합한 상황:

  • 클라우드 환경에서 비용 효율성이 중요한 경우
  • 워크로드가 예측하기 어려운 환경
  • 스토리지와 컴퓨팅을 독립적으로 확장해야 하는 경우

언제 어떤 모드를 선택할까?

비교 항목 Shared-nothing Shared-data
성능 ⭐⭐⭐⭐⭐ (최고) ⭐⭐⭐⭐ (캐시 적중 시 우수)
비용 ⭐⭐⭐ (중간) ⭐⭐⭐⭐⭐ (매우 저렴)
확장성 ⭐⭐⭐ (데이터 재분배 필요) ⭐⭐⭐⭐⭐ (즉시 확장)
운영 복잡도 ⭐⭐⭐⭐ (단순) ⭐⭐⭐ (캐시 관리 필요)
클라우드 친화도 ⭐⭐⭐ (보통) ⭐⭐⭐⭐⭐ (최적)

선택 가이드:

Shared-nothing을 선택하세요:

  • 🎯 실시간 대시보드나 저지연 쿼리가 핵심인 경우
  • 📊 예측 가능한 워크로드 패턴
  • 🏢 온프레미스 환경이나 전용 인프라

Shared-data를 선택하세요:

  • ☁️ 클라우드 환경에서 비용 효율성이 중요한 경우
  • 📈 워크로드가 급변하거나 예측하기 어려운 경우
  • 🔄 스토리지와 컴퓨팅을 독립적으로 확장해야 하는 경우

마무리

StarRocks의 아키텍처는 단순함 속의 강력함을 보여줍니다. 두 가지 배포 모드를 통해 다양한 환경과 요구사항에 맞는 최적의 솔루션을 제공합니다.

다음 Part 2에서는 실제로 Kubernetes 환경에서 StarRocks를 배포하는 방법을 단계별로 알아보겠습니다. 이론을 실습으로 연결하여 StarRocks의 진정한 가치를 경험해보세요!

Subscribe to PAASUP IDEAS

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe