Distributed SQL Engine Operations

대규모 분산 SQL 엔진(Trino, Presto)의 멀티클러스터 라우팅, 워크로드 격리, 운영 관리 패턴


핵심 개념

대규모 조직에서 분석 SQL 엔진은 단일 클러스터로 운영할 수 없다. 워크로드 유형(Ad-hoc, ETL, BI)별 격리, 쿼리 라우팅, 무중단 업그레이드가 핵심 운영 과제이며, Gateway/Proxy 패턴이 표준 해법으로 자리잡았다.

Trino Gateway — Expedia 사례

Lyft의 Presto Gateway를 포크한 단일 엔드포인트 프록시:

워크로드 격리

  • Ad-hoc 클러스터: 탐색적 분석 (저복잡, 다양한 쿼리)
  • ETL 클러스터: 고복잡 대용량 변환 (장시간 실행)
  • BI 클러스터: 저복잡 고동시성 (Tableau/Looker 쿼리)

라우팅 룰

  • 대형 테이블 쿼리 → 전용 클러스터로 라우팅
  • 메타데이터 쿼리(select version(), show catalogs) → 경량 클러스터로 분리
  • BI 도구 쿼리 → BI 전용 클러스터로 격리

운영 기능

  • Blue/Green 또는 Canary 배포로 무중단 클러스터 업그레이드
  • 클러스터 헬스 상태(HEALTHY/UNHEALTHY/PENDING) 실시간 가시성
  • Expedia가 오픈소스에 기여한 UI: 라우팅 룰 편집, 쿼리 히스토리, 전체 쿼리 텍스트 보기

PostgreSQL Portable Statistics

분산 SQL 엔진의 쿼리 최적화를 지원하는 새 기법:

  • PostgreSQL 18의 pg_restore_relation_stats/pg_restore_attribute_stats로 프로덕션 통계를 테스트 환경에 주입
  • CI에서 프로덕션과 동일한 쿼리 플랜 생성 — Seq Scan → Index Scan 전환 사전 감지
  • 통계 덤프 크기: 수백 테이블/수천 컬럼에서도 1MB 미만

이종 엔진 라우팅 — Iceberg Multi-Engine (QueryFlux/LakeOps)

Trino Gateway가 동종 Trino 클러스터 간 라우팅이라면, 공유 Iceberg 테이블 위의 multi-engine 라우팅은 이종 엔진(Trino, Spark, DuckDB, Athena, Snowflake, StarRocks) 사이에서 “어떤 쿼리를 어떤 엔진이 실행할지” 결정한다. 라우팅 없이는 팀마다 아는 엔진만 써서 비용·지연이 낭비된다(point lookup이 DuckDB 0.08).

2단계 라우팅 + dialect 변환

  • group selection(워크로드 타입별 cluster group) → member selection(round-robin/least-loaded/failover/weighted). 용량 초과 시 프록시 큐잉 또는 fallback group spill
  • sqlglot 기반 dialect 변환: 프론트엔드 프로토콜로 source dialect, 선택된 엔진으로 target dialect 감지 → 호환 시 skip, 아니면 AST 변환(catalog 접두 제거, 함수 매핑, 타입 캐스팅)
  • QueryFlux(Rust): ~0.35ms p50 오버헤드

라우팅 전략과 테이블 최적화의 복리

  • Cost 라우팅(가장 싼 엔진), Latency 라우팅(과거 P50 기반 최속), Throughput 라우팅(균형)
  • 테이블 최적화가 라우팅을 푼다: compaction·sort·Puffin 통계는 각 쿼리 셰이프에 viable한 엔진 집합을 확장(50,000 small file 테이블이 compaction 후 DuckDB sub-second 가능) → workload-aware 라우팅으로 총 쿼리 비용 최대 56% 절감
  • 에이전트 워크로드: adaptive(통계) → LLM(신규 셰이프) → semantic(임베딩) 라우터 fall-through + guardrail(ReadOnly/RowLimit/PIIMask/HumanApproval)

트레이드오프

접근장점비용
Gateway 프록시 (동종)워크로드 격리, 무중단 배포프록시 레이어 복잡도, 라우팅 규칙 관리
Multi-engine 라우팅 (이종)쿼리 셰이프별 최적 엔진, 비용 최대 56%↓dialect 변환, 엔진별 telemetry 필요
단일 대형 클러스터운영 단순노이지 네이버, 장애 전파
클라우드 관리형 (Athena 등)인프라 관리 불필요비용 예측 어려움, 커스터마이징 제한

연관 개념


Source: Operating Trino at Scale With Trino Gateway, Production Query Plans Without Production Data, Routing Multiple Query Engines with Iceberg