Vitess Blog

세계 최대 YouTube 에서 DB는 어떻게 쓸까? – Vitess 오픈소스로 공개

세계 최대 플랫폼 Youtube에서 사용하는 DB, Vitess를 소개합니다. 오픈소스로 공개된 Vitess의 혁신적 데이터 관리 방법을 알아보세요.

2025년 01월 03일

개요

Vitess는 YouTube의 문제를 해결하기 위해 2010년에 개발 되어, 2012년에 Apache Licese 2.0으로 오픈소스로 공개 되었습니다.

Vitess는 2018년에 CNCF 프로젝트로 채택되었습니다.

세계 최대 Youtube 에서 DB는 어떻게 쓸까?- Vitess 오픈소스로 공개

주요 토픽

YouTube에서 시작한 Vitess

Vitess는 YouTube(구글 자회사)에서 시작되었으며, 2010년에 처음 개발되었습니다. 이후, 2012년에 오픈소스로 공개되었습니다.

Vitess의 탄생 배경

  1. YouTube의 데이터베이스 확장 문제:
    • YouTube는 MySQL을 주요 데이터베이스로 사용했지만, 사용자와 트래픽 증가로 인해 데이터베이스의 확장성과 성능 문제가 발생했습니다.
    • 특히 동영상 메타데이터, 댓글, 사용자 정보 등 대규모 데이터를 효율적으로 처리해야 했습니다.
    • 단순히 MySQL 인스턴스를 추가하는 수직 확장으로는 문제를 해결하기 어려웠습니다.
  2. 샤딩과 자동화의 필요성:
    • 데이터베이스를 분산(샤딩)하여 처리 성능을 높이고, 이를 자동으로 관리할 수 있는 솔루션이 필요했습니다.
    • 당시 사용 가능한 솔루션 중에서 YouTube의 대규모 트래픽 요구를 충족할 수 있는 기술이 부족했기에, 자체적으로 Vitess라는 프로젝트를 시작했습니다.

MySQL의 한계

  1. 문제점:
    • YouTube는 MySQL을 주 데이터베이스로 사용하고 있었지만, 사용자가 폭발적으로 증가하며 데이터베이스가 큰 병목 현상을 겪었습니다.
    • 주요 문제는 다음과 같았습니다:
      • 수직 확장의 한계: 단일 MySQL 서버의 CPU, 메모리, 저장 공간의 제한.
      • 읽기/쓰기 병목: 동영상 메타데이터, 사용자 댓글, 추천 알고리즘 등 데이터 읽기/쓰기가 빈번히 발생.
      • 복잡한 장애 복구: 수동으로 복구하거나 샤딩을 설정하는 과정이 복잡하고 시간이 오래 걸림.
  2. 필요한 솔루션:
    • MySQL과의 호환성을 유지하면서도 자동화된 샤딩 및 복제를 제공.
    • 장애 복구를 자동화하여 안정성과 가용성을 높임.
    • 동적 트래픽 처리를 지원하기 위한 고가용성과 확장성.

Vitess가 YouTube에서 해결한 문제

  1. 샤딩을 통한 수평 확장성:
    • YouTube는 데이터를 샤드(Shard)라는 논리적 단위로 나누어 분산 저장.
    • Vitess는 이러한 샤드를 자동으로 관리하여, 새로운 샤드를 추가하거나 기존 데이터를 리샤딩할 때 애플리케이션 코드를 수정할 필요가 없도록 함.
      예) 사용자의 지역별 데이터를 샤드로 분리하여 동시 다발적인 요청을 효율적으로 처리.
  2. 자동 장애 복구:
    • Vitess의 vtorc는 장애 발생 시 Primary-Replica 구조에서 새로운 Primary를 자동으로 선정.
    • 데이터베이스가 다운되더라도 즉시 복구가 가능하여 YouTube 서비스 중단을 방지.
  3. 트래픽 관리:
    • Vitess의 VTGate는 애플리케이션 요청을 올바른 샤드로 라우팅.
    • 읽기 요청은 Replica로, 쓰기 요청은 Primary로 분배하여 읽기/쓰기 병목 현상을 해소.
      예) 동영상 추천 시스템에서 대량의 읽기 요청을 Replica로 분배.
  4. 데이터베이스 운영 자동화:
    • YouTube는 데이터 리샤딩, 백업, 스키마 변경 등의 작업을 수동으로 처리하지 않아도 됨.
    • Vitess의 제어 계층(Control Plane)을 통해 이러한 작업이 자동으로 처리됨.
  5. 대규모 트래픽 처리:
    • YouTube는 전 세계 수십억 명의 사용자를 대상으로 하는 동영상 플랫폼으로, 하루 수천억 건의 데이터베이스 쿼리를 처리.
    • Vitess는 이러한 대규모 트래픽을 분산 처리하고, 데이터베이스의 성능을 유지하도록 설계됨.

YouTube에서 Vitess 적용 사례

  1. 동영상 메타데이터 관리:
    • 동영상 제목, 설명, 태그, 업로드 시간 등 메타데이터를 샤드에 분산 저장.
    • 새로운 동영상이 업로드될 때 MySQL 서버의 병목을 방지하기 위해 Vitess가 샤드 간 요청을 자동으로 조정.
  2. 사용자 댓글 시스템:
    • 댓글은 실시간으로 생성되며, 읽기/쓰기가 동시에 매우 빈번하게 발생.
    • Vitess는 댓글 데이터를 여러 샤드로 나누고, 읽기 요청은 Replica로, 쓰기 요청은 Primary로 분산 처리.
  3. 실시간 분석 및 추천 시스템:
    • 사용자의 시청 기록과 관심사를 기반으로 추천 콘텐츠를 생성.
    • Vitess는 이러한 데이터를 샤드로 분산하여 실시간 분석 쿼리를 처리.

마무리

Vitess는 YouTube의 데이터베이스 확장성 문제를 성공적으로 해결하여, 전 세계적으로 안정적인 서비스 제공을 가능하게 만든 핵심 기술 중 하나로 자리 잡았습니다.