Library / Case Studies
Cannes: ML saves $1.7M a year on document previews at Dropbox
Recently, we translated the predictive power of machine learning (ML) into $1.7 million a year in infrastructure cost savings by optimizing how Dropbox generates and caches document previews. Machine learning at Dropbox already powers commonly-used features such as search, file and folder suggestions, and OCR in…
By Dropbox engineers · Dropbox · Added 2026-10-12
All content belongs to Dropbox engineers / Dropbox. We only link to it and give credit. Report a problem
Learn this case study
About 37 min left. Your work is saved as you go.
What you are about to study
Dropbox explains a real system. You should know the basics: caching, queues and replication.
Ideas you will meet
- Distributed Systems
- Consensus, time, failure and the fundamentals of scale-out.
- Machine Learning Systems
- Recommendations, ranking, feature stores and serving models at scale.
What we already know about this
Our own lessons on these ideas. Read them here before you start, so it makes sense.
Real-World Systems · 12 minDesign collaborative editing (Google Docs)Several people edit one document at once and always end up seeing the same text: operational transformation, CRDTs, and the server that keeps order.Read here
The problem
A shared document where several people type at once. Requirements:
- Everyone sees changes within a fraction of a second.
- All copies converge to the same text, whatever order edits arrive in.
- Typing feels instant, even on a slow network.
- History, undo, comments, cursors and permissions work.
- A document can be edited offline and merged later.
Why it is hard
Two people start with
AB. Alice insertsXat position 0. Bob, at the same moment, deletesBat position 1. If each applies the other's operation as received, Alice ends withXA(correct), while Bob who already deletedBand then insertsXat 0 getsXAtoo in this case, but with other edits the positions drift and copies diverge. The problem: a position means "where in the text as I saw it", and other people's edits change what that is.Two families of solutions
Operational transformation (OT)
A server puts all operations in one order. When your operation arrives and others were applied in between, the server transforms it (adjusts its position) so it still means what you intended. Used by classic Google Docs. Needs a central authority per document.
CRDTs (conflict-free replicated data types)
Give every character a unique identifier and a position between its neighbours' identifiers (not a numeric index). Operations then commute: applying them in any order yields the same result. No central referee is needed, which suits peer-to-peer and offline use. The cost is metadata per character and more complex data structures. Libraries such as Yjs and Automerge implement this.
OT CRDT Central server required to order operations optional Offline editing harder natural Metadata little more (ids, tombstones) Maturity in products very mature fast-growing A simpler third option: differential synchronisation
Instead of transforming individual operations, each side keeps a shadow copy of the last agreed text, computes the diff between its current text and the shadow, sends that diff, and the other side patches its own text with it. It is easy to build and tolerant of lost messages, but merges are fuzzier than OT or CRDTs, so it suits notes and forms better than a heavy, many-author document.
Architecture
100%Figure SDA-RWS-01-1 · Collaborative editing architecture · © forcsguy.com
- The editor applies your keystroke locally at once and sends the operation over a WebSocket.
- All editors of one document connect (through a gateway) to one collaboration server for that document, found by consistent hashing on the document id. One owner makes ordering simple.
- The server orders and transforms the operation, assigns a revision number, appends it to a durable operation log, and broadcasts it to the other editors.
- Editors that were behind apply the missed operations, using the revision numbers.
- Periodic snapshots of the document mean you do not replay the whole log to open it.
Presence and cursors
Cursor positions and "who is here" change constantly and need not be stored. Send them as ephemeral messages through the same server or a pub/sub channel, and expire them if heartbeats stop.
Storage and scale
- Operation log plus snapshots: the log gives history and undo; snapshots keep loading fast. Compact old logs.
- Documents are independent, so partition by document id and scale out. The hot spot is one very popular document; limit the number of simultaneous editors or fall back to read-only viewers.
- Permissions are checked on connect and on every operation.
Failure handling
- If the collaboration server dies, another loads the latest snapshot plus the log and clients reconnect and resend unacknowledged operations (they are tagged, so duplicates are ignored).
- Clients keep a queue of unsent operations so a dropped connection loses nothing.
- Autosave means there is no "save" button, because the log is the save.
More on this site
Related reading
- Cannes: ML saves $1.7M a year on document previews at DropboxDropbox engineers · DropboxCase Studies
- The Log-Structured Merge-Tree (paper)O'Neil et al. · UMass BostonPapers
- Espresso: Distributed Document Store at LinkedInLinkedIn engineers · LinkedInCase Studies
- Vortex: Monitoring Server Applications at DropboxDropbox engineers · DropboxCase Studies
Show 6 moreShow fewer
- LISA '10 - Operations at Twitter: Scaling Beyond 100 Million UsersYouTubeYouTube
- Determinism (4 parts) in League of Legends ServerRiotgames engineers · RiotgamesCase Studies
- Automating Datacenter Operations at DropboxDropbox engineers · DropboxCase Studies
- Netflix Guide to Microservices - Josh Evans, Director of Operations Engineering at NetflixNetflixYouTube
- Cinchcast Architecture - Producing 1,500 Hours of Audio Every Day - High Scalability -High Scalability engineers · High ScalabilityCase Studies
- GitLab BlogGitLab engineers · GitLabBlogs
Go deeper on this
A path through videos, articles, other case studies and code on the same ideas as Cannes: ML saves $1.7M a year on document previews at Dropbox.
Warm upGet the vocabulary first.
Books · Free from the author
Concurrent and Distributed Systems (Cambridge lecture notes)
Eight lectures on time, broadcast, replication, consensus and transactions, with notes, slides and video. Free from the author under CC BY-SA.
University of CambridgeIntermediate
Books · Free from the author
Computer Networks: A Systems Approach
How networks are built and why: protocols, routing, congestion control and the internet's architecture. The authors publish it free online under CC BY 4.0.
Systems ApproachIntermediate
WatchHow others solve the same problem, on video.
Videos belong to their creators and play from YouTube. More on YouTube (opens in a new tab)
ReadEngineers explain it in their own words.
Blogs
Amazon Science
Technical deep-dives and perspectives from our scientists who are pushing boundaries across multiple scientific disciplines while solving real-world challenges. Explore how our teams combine research excellence, world...
AmazonIntermediate
Papers
Atom Smashing using Machine Learning at CERN
A real-world engineering write-up from CERN on distributed Machine Learning.
CERNIntermediate
See it in another companyThe same ideas, a different system.
Case Studies · Read here
Aroma: Using ML for Code Recommendation at Facebook
Thousands of engineers write the code to create our apps, which serve billions of people worldwide. This is no trivial task—our services have grown so diverse and complex that the codebase contains…
FacebookIntermediate
Case Studies · Read here
Concourse: Generating Personalized Content Notifications in Near-Real-Time at LinkedIn
Social media are computer-mediated platforms that facilitate creation and sharing of information, ideas, career interests, and other forms of expression via virtual communities and networks. In the last few years, not...
LinkedInIntermediate
Read the codeSee how it looks when it is real.
GitHub
Engineering Blogs
A huge directory of company engineering blogs to learn from real production systems.
kilimchoiIntermediate
GitHub
Awesome Scalability
Curated reading list of articles on the architecture of scalable, reliable systems.
binhnguyennusIntermediate
Keep learning
Loading community…