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 등) | 인프라 관리 불필요 | 비용 예측 어려움, 커스터마이징 제한 |
연관 개념
- Query Optimization — 쿼리 비용 절감 기법
- Distributed Systems Reliability — 클러스터 장애 격리
- Spark at Scale — 분산 처리 엔진과 보완적 관계
- Query Proxy — 서비스·에이전트 대상 분석 프록시 (Trino Gateway와 보완적)
- Catalog-Managed Tables — Iceberg 공유 테이블 위 multi-engine 접근
- DuckDB — multi-engine 라우팅의 단일 노드 엔진
Source: Operating Trino at Scale With Trino Gateway, Production Query Plans Without Production Data, Routing Multiple Query Engines with Iceberg