How It Works Features Pricing 블로그
Login
ByteMonk

This Tiny Database Mistake Almost Destroyed Discord Twice

Reading time: 2 min

📋 간단 요약

이 영상은 디스코드의 메시지 저장 시스템이 겪은 여러 기술적 문제와 해결 과정을 설명한다. 초기 데이터베이스 선택부터 확장, 문제 발생, 그리고 최적화와 새로운 시스템 도입까지의 과정을 다룬다. 이를 통해 대규모 시스템 설계의 핵심 원칙을 배울 수 있다.

🔍 핵심 내용

초기 메시지 저장 방식과 문제 발생 (0.0s) 00:00
디스코드는 2015년 MongoDB를 사용했으나, 대량 메시지와 랜덤 읽기 패턴으로 인해 성능 저하와 지연 문제가 발생했다.
스케일 확장과 Cassandra 도입 (436.3s) 07:16
디스코드는 Cassandra를 도입하여 수천 노드를 운영하며 확장성을 확보했고, 2017년에는 12대의 서버로 1억 2천만 메시지를 처리했다.
데이터 삭제와 JVM 가비지 컬렉션 문제 (580.5s) 09:40
삭제된 메시지의 tombstone이 쌓이면서 읽기 지연과 JVM 가비지 컬렉션으로 인한 서버 정지가 발생했고, 이는 큰 문제로 대두되었다.
대규모 확장과 문제 심화 (872.5s) 14:32
클러스터가 177대까지 확장되면서 hot partition, 가비지 컬렉션 지연, 그리고 compaction 문제로 시스템 유지가 어려워졌다.
Silv로의 전환과 핵심 기술 (1018.1s) 16:58
C++ 기반의 Silv 시스템으로 전환하여 JVM 문제와 리소스 경쟁을 제거했고, 코어별 샤딩 구조로 성능을 극대화했다.
요청 병합과 데이터 이전 (1161.8s) 19:21
Rust로 작성된 요청 병합 계층을 도입하여 동일 요청을 하나로 묶고, 빠른 데이터 이전 도구로 3개월이던 이전 기간을 9일로 단축했다.
최종 성과와 안정성 확보 (예상) 예상 마지막
새 시스템은 177대에서 72대로 줄어들면서 성능과 안정성을 크게 향상시켰고, 2022년 월드컵 경기 중 급증하는 트래픽도 문제없이 처리했다.
🔒

상세 분석 · 핵심 정리 · AI 분석

이 영상에는 더 깊이 있는 상세 분석과 AI 인사이트가 준비되어 있어요. 플랜을 업그레이드하면 모든 요약의 심화 내용을 볼 수 있어요.

업그레이드하고 상세 분석 보기
2회 조회됨