How Uber Saved $6,000,000 in Database Costs
- Uber는 DynamoDB 사용으로 인해 연간 6백만 달러의 데이터베이스 비용 손실을 막기 위해 LedgerStore라는 자체 스토리지 솔루션을 개발했습니다. 💰
- LedgerStore는 데이터의 불변성, 추적 가능한 수정, 무단 변경 감지, 재현 가능한 쿼리를 보장하는 4가지 핵심 원칙을 제공합니다. 🛡️
- Uber는 DocStore라는 MySQL 기반의 분산 데이터베이스를 구축하여 DynamoDB에서 마이그레이션했습니다. 🚀
- DocStore는 stateless 쿼리 엔진, stateful 스토리지 엔진, 컨트롤 플레인으로 구성됩니다. ⚙️
- CacheFront라는 Redis 기반 캐싱 솔루션을 구축하여 읽기 성능을 향상시키고 스토리지 엔진 부하를 줄였습니다. ⚡
- 데이터 마이그레이션 시에는 대규모 Spark 작업 대신 데이터를 작은 하위 집합으로 나누어 병렬 처리했습니다. ➗
- 실시간 데이터는 shadow writes 방식으로 DocStore에 비동기적으로 삽입하고, two-phase commit 프로토콜을 사용하여 데이터 일관성을 유지했습니다. 🤝
- 핫 파티션 문제를 해결하기 위해 고정된 샤드 수를 사용하고, 트랜잭션을 특정 샤드에 할당하는 결정적 데이터 배치 방식을 적용했습니다. 🔥
- DocStore로의 마이그레이션을 통해 Uber는 데이터베이스 비용을 크게 절감하고, 쿼리 성능을 향상시켰습니다. ✅