This is how Meta serves its social graph.
- 메타는 수십억 QPS를 처리하는 복잡한 소셜 그래프(게시물, 좋아요, 댓글 등) 데이터를 효율적으로 관리해야 합니다. 🌐
- 데이터를 그래프 형태로 모델링하여 게시물과 관련된 모든 데이터를 객체로 직접 연결하여 저장합니다. 📊
- 2013년 당시 MySQL 전문성을 활용하고 새로운 데이터 스토어 도입 위험을 피하기 위해, MySQL을 기반으로 하는 인메모리 그래프 스토어를 구축했습니다. 💾
- 오픈소스이자 확장성이 뛰어난 Memcached를 캐싱 솔루션으로 사용하여 인메모리 그래프 스토어의 성능을 극대화했습니다. 🚀
- 게시물의
source ID를 샤드 키로 사용하여 해당 게시물과 관련된 모든 엣지(좋아요, 댓글 등)를 동일한 샤드에 저장, 효율적인 카운트 쿼리를 가능하게 합니다. 🧩
- 바이럴 게시물(핫 포스트)의 경우,
source ID와 엣지 타입별로 데이터를 분할하여 특정 샤드에 부하가 집중되는 것을 방지합니다 (예: 댓글과 좋아요를 다른 곳에 저장). 🔥
- 단일 장애점(SPOF)을 피하기 위해 Memcached를 여러 지역에 배포하고, CDC(Change Data Capture) 솔루션을 통해 데이터 변경 사항을 동기화합니다. 🌍
- 캐싱 및 데이터 접근 패턴 최적화를 통해 초당 100억 건 이상의 쿼리를 처리하며 인스타그램, 왓츠앱, 페이스북을 지원하는 초고속 확장성을 달성했습니다. ⚡