Dropbox Dash의 실시간 AI를 떠받치는 feature store 내부
Dropbox는 Feast와 Go, Dynovault로 sub-100ms 랭킹용 feature store를 만들었다.
Dropbox Dash의 검색과 에이전트 랭킹은 수천 개의 feature 조회를 sub-100ms 안에 처리해야 한다.
이를 위해 Dropbox는 오프더셸프 feature store 대신 Feast를 중심으로 한 하이브리드 아키텍처를 구축했다. ML 엔지니어는 PySpark 변환에 집중하고, 오프라인 처리는 Spark와 클라우드 저장소가 맡는다.
온라인 서빙은 내부 Dynovault가 담당한다. 저지연이 필요한 검색 경로에 붙어 있으며, 공개 인터넷 호출을 피하면서 클라이언트 측 약 20ms 지연을 제공한다.
초기 Python 서빙은 병렬화로 버텼지만, JSON parsing과 GIL이 병목이 됐다. Dropbox는 서빙 레이어를 Go로 다시 써서 진짜 동시성을 확보했고, 추가 오버헤드를 약 5~10ms로 줄인 뒤 p95 25~35ms를 달성했다.
신선도 유지 방식도 분리했다.
- batch ingestion: 대규모 변환 후 변경된 레코드만 온라인 저장소에 반영
- streaming ingestion: 협업 활동과 콘텐츠 상호작용 같은 빠른 신호를 거의 실시간 반영
- direct writes: 별도 파이프라인 결과를 즉시 온라인 저장소에 기록
변경 감지 덕분에 한 번의 배치에서 쓰기량은 수억 건에서 100만 건 이하로 줄고, 업데이트 시간도 1시간 이상에서 5분 미만으로 단축됐다. 결국 Dropbox는 Feast + Spark + Dynovault 조합으로 학습과 서빙의 정합성을 유지하면서도, 빠른 랭킹과 낮은 운영 복잡도를 동시에 확보했다.
이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.
요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.