pile·
아키텍처·dropbox-techDropbox Tech·

Dropbox의 통합 콘텐츠 처리 플랫폼 Riviera, AI 시대로의 진화

Dropbox가 파일 미리보기 생성용 내부 서비스로 출발한 콘텐츠 처리 플랫폼 Riviera가 약 10년에 걸쳐 Search·Replay·Sign·Dash가 공유하는 플랫폼으로, 나아가 AI 시대의 문서 처리 인프라로 진화한 과정을 다룬다. 미리보기를 '재사용 가능한 변환들의 조합'으로 재정의한 설계가 확장의 핵심이었고, 지금은 100개 넘는 변환 능력으로 초당 수십만 건을 처리한다. 최근엔 공개 API와 MCP로 외부 개발자에게도 열렸다.

핵심 포인트
  • Riviera는 300여 개 파일 포맷을 썸네일·미리보기·텍스트 추출·스트리밍 매니페스트 등으로 바꾸는 Dropbox의 공용 콘텐츠 처리 플랫폼이다.
  • 포맷마다 별도 서비스를 만드는 대신 미리보기를 '재사용 가능한 변환 조합'으로 재정의해 중복을 없앴다.
  • 중앙 코디네이터가 요청 검증·캐싱·분배를 맡고, 백엔드 워커가 변환 종류별로 특화돼 개별 확장·유지보수된다.
  • 플러그인 모델로 코어 수정 없이 새 포맷·변환을 추가할 수 있어 Search·Replay·Sign·Dash가 차례로 올라탔다.
  • Dash의 AI가 문서를 모델이 이해할 형태로 변환하는 수요를 만들었고, Riviera가 그 파이프라인을 그대로 받쳐 몇 달 걸릴 작업을 몇 주로 줄였다.
상세 정리
  • 규모: Riviera는 백그라운드에서 무거운 변환을 처리하며 하루에 영상 8년치에 해당하는 출력을 만들어낸다.
  • 최초 문제: Dropbox는 300개 넘는 파일 포맷을 지원하고 각 포맷이 썸네일·전체 미리보기·추출 텍스트·스트리밍 매니페스트·메타데이터 등 여러 출력을 낳는데, 포맷×출력마다 서비스를 만들면 관리가 불가능하다.
  • 중복 문제: PowerPoint와 Word가 각각 PDF 로직을 요구하면 비슷한 PDF 로직을 여러 곳에서 유지해야 해 설정 드리프트·버전 불일치·운영 부담이 커진다.
  • 핵심 발상: 미리보기를 개별 기능이 아니라 재사용 변환의 연속으로 봤다 — PPT는 먼저 PDF로 변환하고 각 PDF 페이지를 이미지로 만드는 식이라, 이 PDF→이미지 단계가 다른 워크플로에서도 재사용된다.
  • 아키텍처: 중앙 조정 지점이 요청을 모아 작업을 구성·분배하고 요청 검증과 응답 캐싱으로 워커를 중복·무효 작업에서 보호하며, 각 백엔드 워커는 특정 변환에 특화돼 단일 지점에서 유지·확장된다.
  • 규모 현황: 오늘날 Riviera는 100개 넘는 능력으로 초당 수십만 건의 변환을 수행한다.
  • 확장 용이성: 조정과 실행을 분리해 새 포맷·변환은 코어를 고치지 않고 플러그인 추가만으로 지원되며, 확장 중에도 코어는 안정적으로 유지된다.
  • 플랫폼화: 미리보기용 썸네일이 ML 팀의 이미지 정규화에도 쓸모 있었고(160×160 썸네일 한 번 생성이 모두에게 이득), Search가 인덱싱 전 문서 준비에 채택하면서 사내 공용 플랫폼으로 번졌다.
  • 플러그인 개방: 제품 팀이 새 변환을 기여하고 Riviera 팀은 코어를 유지하는 모델로 열어, 플러그인이 공용 변환 라이브러리가 됐다.
  • Replay 사례: 영상 리뷰 제품은 복잡한 트랜스코딩을 요구하는데 기존 변환을 활용해 인프라를 처음부터 짓지 않고 빠르게 성장했고, 이 패턴 덕에 몇 달 걸릴 기능이 몇 주에 출시됐다.
  • Dash와 AI: AI가 답하기 전 문서는 텍스트 추출·스캔 페이지 인식·메타데이터 추출·수백 포맷의 일관 표현 변환을 거쳐야 하는데, 이는 Riviera가 원래 풀던 문제라 Dash는 새 시스템을 짓지 않고 기존 기능을 썼다.
  • 연쇄 이득: Dash가 Dropbox·Google Drive·Slack 등에서 콘텐츠를 수집하면 Riviera가 인덱싱·AI용으로 준비하고, 텍스트 추출 개선은 AI 응답과 검색 정확도를 함께 높이며 캐싱 개선은 미리보기·QA·문서 처리 부하를 함께 줄인다.
  • 교훈: 기능은 한 번 값을 주지만 플랫폼은 다른 팀이 올라탈 때마다 가치가 커진다 — 명확한 경계로 콘텐츠 변환에 집중을 유지한 플러그인 아키텍처가 유지보수 부담 없는 확장을 가능케 했고, 지금은 공개 API·MCP로 외부까지 열렸다.
왜 읽나다양한 파일 포맷을 다루는 콘텐츠 변환·미리보기·AI 문서 처리 인프라를 플러그인 기반 공용 플랫폼으로 설계하려는 아키텍트·플랫폼 엔지니어에게 진화 사례 레퍼런스.
dropbox-tech
Dropbox Tech 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 아키텍처·github-engGitHub Engineering·

    AI 시대에 달라진 '예스'의 비용

    GitHub Engineering 에서 AI 코드 생성 도구가 보편화되면서 소프트웨어 엔지니어링 경제학이 어떻게 달라졌는지를 다룬다. 코드를 작성하는 비용은 낮아졌지만 그 코드를 소유하고 유지보수하는 비용은 그대로라는 점을 핵심 논지로, 엔지니어링 팀의 의사결정 방식도 달라져야 한다고 주장한다.

    #engineering-process#ai-code-generation#code-ownership+1
  2. 아키텍처·당근당근 테크블로그·

    천만 MAU를 지탱하는 커뮤니티 시스템 아키텍처

    당근 커뮤니티실이 2021년 약 100 RPS에서 현재 약 20,000 RPS를 처리하는 규모로 성장한 과정과, 이를 가능하게 한 "여러 웹앱 + 하나의 서버앱" 모듈형 모놀리스 아키텍처를 다룬다. 동네생활, 모임, 카페, 아파트 서비스를 소규모 팀이 장기 운영 가능한 구조로 설계한 원칙과, 장애 경험에서 도출한 resilience 패턴까지 단계별로 정리했다.

    #event-driven#kafka#postgres+2
  3. 아키텍처·cloudflare-blogCloudflare Blog·

    Meerkat 소개: 글로벌 합의를 위한 실험

    Cloudflare Research가 전 세계 330개 이상의 데이터센터에서 컨트롤 플레인 상태를 관리하기 위한 분산 합의 서비스 Meerkat을 개발 중이다. 기존 Raft의 리더 의존성과 타임아웃 기반 리더 선출이 광역 네트워크(WAN)에서 야기하는 가용성 저하를 해결하기 위해 2023년 EPFL에서 발표한 QuePaxa 합의 알고리즘을 채택했다.

    #fault-tolerance#distributed-systems#raft+2