피드로 돌아가기
InfoQBackend
원문 읽기
Inside Netflix’s Graph Abstraction: Handling 650TB of Graph Data in Milliseconds Globally
Netflix가 Graph Abstraction을 구축해 650TB의 그래프 데이터를 전역 규모에서 단일 자리 밀리초 레이턴시로 쿼리 처리
AI 요약
Context
기존 그래프 데이터베이스는 유연한 순회와 복잡한 쿼리 기능을 제공하지만, Netflix의 운영 워크로드는 높은 처리량 환경에서 극히 빠른 응답 속도를 요구했다. Netflix는 소셜 그래프(Netflix Gaming), 서비스 토폴로지 그래프(운영 모니터링 및 장애 분석), 분산 그래프(서비스 간 상호작용 캡처) 등 여러 내부 서비스를 통해 650TB 규모의 그래프 데이터를 관리해야 했다.
Technical Solution
- 엣지 연결과 엣지 속성 분리: 관계와 메타데이터를 별도로 저장하여 쿼리 유연성과 성능의 트레이드오프 해결
- Key Value 추상화 위의 계층 구조 도입: Netflix 기존 데이터 인프라 위에 Graph Abstraction을 계층으로 구축하여 최신 그래프 상태 저장
- TimeSeries 추상화 통합: 과거 그래프 변경사항 기록으로 이력 추적, 감시, 시간 기반 쿼리 지원
- EVCache 연동을 통한 캐싱 전략: write-aside 캐싱(중복 엣지 쓰기 방지)과 read-aside 캐싱(노드·엣지 속성 접근 가속화)으로 읽기/쓰기 증폭 감소
- gRPC 기반 순회 API 노출: Gremlin 영감의 API로 순회 단계 연결, 필터 적용, 결과 제한 지원
- 비동기 복제를 통한 전역 가용성: 지역별 복제로 최종 일관성 보장 및 높은 처리량 지원
- 메모리 내 그래프 스키마 로딩 및 엄격한 적용: 검증, 최적화된 순회 계획, 무효 쿼리 경로 제거
Impact
단일 홉 순회는 단일 자리 밀리초 레이턴시를 제공한다. 두 홉 쿼리는 90 백분위수에서 50밀리초 미만의 레이턴시를 전달한다.
Key Takeaway
쿼리 유연성의 일부를 제한하고(순회 깊이 제한, 정의된 시작 노드 요구) 스키마 검증 및 메모리 캐싱을 함께 도입하면, 대규모 그래프 데이터베이스에서도 일관된 저레이턴시와 높은 처리량을 동시에 달성할 수 있다.
실천 포인트
대규모 운영 모니터링이나 관계형 데이터 모델링이 필요한 마이크로서비스 환경에서, 기존 KV 스토어와 TimeSeries 저장소 위에 그래프 계층을 추가하고 write-aside/read-aside 캐싱을 적용하면, 복잡한 그래프 데이터베이스 구축 없이 밀리초 대역의 쿼리 성능을 확보할 수 있다.