Luft's Road to Elasticity - Part 1: From Shared Nothing to Shared Storage

5 days ago 3

자체 제작 데이터베이스인 Luft의 탄력성(elasticity)을 개선하기 위해, Shared Nothing 아키텍처에서 Shared Storage 아키텍처로 전환한 경험을 공유합니다.

  • 이전에는 각 노드가 독립적인 스토리지를 사용하여 데이터를 처리했으나, 대용량 데이터 처리 시 탄력성이 부족하여 스파이크성 워크로드 대응에 어려움을 겪음.
  • 컴퓨팅 자원과 스토리지를 분리하는 Compute-Storage Separation 개념을 적용하여, 스토리지를 공유하는 Shared Storage 아키텍처로 전환을 결정함.
  • S3에 접근하기 위해 FUSE를 활용하는 방식을 실험했으나, Go 런타임의 특성상 FUSE 사용 시 성능 문제가 발생하여 애플리케이션 레벨에서 Buffer Pool Manager를 자체 구현함.
  • 이러한 개선을 통해 직접 S3로 쿼리가 가능해졌고, 사전에 데이터가 분배되어있지 않은 경우의 쿼리 성능이 최대 70% 이상 향상되어 Luft의 탄력성이 크게 개선됨.

Read Entire Article