Luft's Road to Elasticity - Part 2: Auto-Scaling with Query History

11 hours ago 2

자체 제작 데이터베이스인 Luft의 탄력성(elasticity)을 개선하기 위해, 쿼리 히스토리를 활용한 비용 기반 오토스케일러를 구현한 경험을 공유합니다.

  • 이전 작업에서 Shared Storage 아키텍처로 전환했으나, 실질적인 효과를 얻기 위해선 효율적인 오토스케일링 시스템이 필요했음.
  • Kubernetes를 벗어나 AWS SDK를 활용한 Self-managed 클러스터 방식으로 전환하고, 중지된 인스턴스를 재개하는 방식을 구현하여 스케일링 시간을 10초대로 단축함.
  • 후행적 메트릭(CPU/메모리 사용량)에 의존하는 기존 오토스케일링 접근법 대신, 쿼리 히스토리를 활용한 비용 예측 모델을 개발함.
  • 쿼리 정규화(canonicalization)를 통해 유사 쿼리를 식별하고, 쿼리의 히스토리를 사용하여 비용을 계산하는 비용 함수를 구현하여 정확한 리소스 예측이 가능해짐.
  • 오버프로비저닝 없이 필요할 때만 리소스를 할당하여 인스턴스 비용을 약 40% 절감하고, 무거운 쿼리도 처리 가능한 탄력적 시스템을 구축함.

Read Entire Article