Vitess는 MySQL의 수평 확장을 가능하게 하는 데이터베이스 클러스터링 시스템이다. YouTube가 개발했으며 CNCF 졸업 프로젝트다. 기존 MySQL을 샤딩하여 수천 개의 서버로 확장한다.
아키텍처
클라이언트 → VTGate (프록시, 쿼리 라우팅)
↓
VTTablet (MySQL 래퍼, 각 샤드)
↓
MySQL 인스턴스 (실제 데이터)
컴포넌트:
- VTGate: MySQL 호환 프록시, 샤드 분산
- VTTablet: MySQL 앞에 위치, 연결 풀링, 쿼리 재작성
- Topology (etcd/ZooKeeper): 클러스터 메타데이터
- VTAdmin: 관리 UI
샤딩 설정
yaml
# VSchema: 샤딩 규칙 정의
{
"sharded": true,
"vindexes": {
"user_id_vindex": {
"type": "hash" # user_id를 해시하여 샤드 결정
}
},
"tables": {
"orders": {
"columnVindexes": [
{
"column": "user_id",
"name": "user_id_vindex"
}
]
}
}
}
Vitess vs 직접 샤딩 비교
| 항목 | 직접 MySQL 샤딩 | Vitess |
|---|
| 애플리케이션 변경 | 대규모 | 최소화 |
| 연결 관리 | 직접 관리 | VTGate가 통합 |
| 리샤딩 | 중단 필요 | 무중단 지원 |
| 쿼리 라우팅 | 앱에서 처리 | 자동 |
| 운영 복잡도 | 낮음 | 높음 |
관련 문서