12개월 이내에 K8 (새 탭에서 열림)
피그마(Figma)는 급격한 사용자 증가에 따른 데이터베이스 부하 문제를 해결하기 위해 단일 PostgreSQL 환경에서 Vitess 기반의 수평적 샤딩 아키텍처로 성공적으로 전환했습니다. 이 과정에서 피그마는 서비스 중단 없이 대규모 데이터를 마이그레이션했으며, 수직적 확장의 한계를 극복하고 무한한 확장성을 갖춘 데이터 플랫폼을 구축했습니다. 결론적으로 이들은 기술적 부채를 체계적으로 관리하며 분산 데이터베이스 시스템으로의 진화가 서비스 성장의 필수 요소임을 입증했습니다. **수직적 확장과 수직적 분할의 한계** * 피그마는 초기 AWS RDS의 가장 큰 인스턴스(r5.24xlarge 등)를 사용하며 수직적 확장(Vertical Scaling)에 의존했으나, 결국 CPU와 IOPS의 물리적 한계에 도달했습니다. * 이를 해결하기 위해 먼저 테이블 단위로 데이터베이스를 나누는 '수직적 분할(Vertical Partitioning)'을 시행하여 특정 도메인(파일, 조직 등)을 별도 데이터베이스 인스턴스로 분리했습니다. * 수직적 분할은 일시적으로 숨통을 틔워주었지만, 각 도메인 내의 데이터가 계속 비대해지면서 단일 인스턴스가 감당할 수 없는 수준에 이르러 결국 수평적 샤딩이 불가피해졌습니다. **Vitess 도입을 통한 수평적 샤딩** * 피그마는 유튜브와 슬랙 등에서 검증된 오픈소스 데이터베이스 클러스터링 시스템인 Vitess를 도입하여 대규모 수평적 확장을 구현했습니다. * Vitess는 애플리케이션 계층에서 복잡한 샤딩 로직을 처리할 필요 없이, SQL 프록시 역할을 수행하며 쿼리를 적절한 샤드(Shard)로 라우팅해주는 기능을 제공합니다. * 데이터 분산의 핵심인 '샤딩 키(Sharding Key)'를 신중하게 선정하여 데이터가 특정 노드에 쏠리는 핫스팟 현상을 방지하고 부하를 고르게 분산시켰습니다. **무중단 마이그레이션과 데이터 정합성 보장** * 서비스를 운영하면서 데이터를 옮기기 위해 Vitess의 'MoveTables' 및 'VReplication' 기능을 활용하여 구형 데이터베이스에서 신규 샤드 클러스터로 데이터를 실시간 복제했습니다. * 마이그레이션 중 데이터 유실이나 오염을 방지하기 위해 'Shadow Mode'를 운영하여, 실제 쓰기 작업을 수행하기 전 구 데이터베이스와 신규 데이터베이스의 결과를 비교 검증했습니다. * 최종 전환 시점에는 짧은 읽기 전용(Read-only) 모드를 거쳐 트래픽을 신규 클러스터로 전환함으로써 사용자 경험에 지장을 주지 않는 제로 다운타임에 가까운 마이그레이션을 달성했습니다. **운영 자동화와 가시성 확보** * 수백 개의 샤드를 효율적으로 관리하기 위해 데이터베이스 팀은 쿼리 분석 및 자동 킬러(Query Killer) 시스템을 구축하여 비효율적인 쿼리가 전체 시스템에 영향을 주지 않도록 제어했습니다. * 대규모 분산 환경에서의 모니터링을 위해 통합 대시보드를 구축하고, 각 샤드의 성능 지표를 실시간으로 추적하여 병목 현상을 사전에 감지하고 대응하는 체계를 갖추었습니다. 성공적인 데이터베이스 스케일링은 단번에 이루어지는 것이 아니라, 수직적 분할로 시간을 벌고 그 사이 견고한 수평적 샤딩 전략을 수립하는 단계적인 접근이 필요합니다. 특히 Vitess와 같은 미들웨어 도입은 인프라 복잡성을 증가시키지만, 장기적으로는 트래픽 성장에 유연하게 대응할 수 있는 가장 확실한 투자입니다. 데이터 성장이 예견되는 초기 단계부터 데이터 간의 관계를 명확히 정의하고 적절한 샤딩 키를 고민하는 것이 미래의 마이그레이션 비용을 줄이는 핵심입니다.