Design a Collaborative Real-Time Canvas Editor
Last updated: April 5, 2025
Quick Overview
Design the backend infrastructure for a collaborative design editor where multiple users can simultaneously edit the same canvas with real-time conflict resolution.
Canva
April 5, 202514
8
2,341 solved
Design the backend infrastructure for a collaborative design editor where multiple users can simultaneously edit the same canvas with real-time conflict resolution.
This is a core system design question at Canva. The collaborative editor is the heart of Canva's product, serving 260M+ MAU who frequently co-edit designs in real time. The interviewer expects deep understanding of CRDTs or operational transforms, RSocket/WebSocket communication, and conflict resolution strategies at global scale.
What the Interviewer Expects
- Explain the trade-offs between CRDTs and operational transforms for conflict resolution
- Design a communication layer using RSocket or WebSockets for real-time updates
- Handle network partitions and offline editing with eventual consistency
- Propose a storage strategy for design documents with version history
- Discuss scaling to support millions of concurrent editing sessions globally
Key Topics to Cover
How to Approach This
- Start by clarifying functional and non-functional requirements with the interviewer.
- Estimate the scale: QPS, storage, bandwidth. This drives your design decisions.
- Draw a high-level architecture first, then deep dive into 1-2 critical components.
- Discuss trade-offs explicitly (e.g., consistency vs availability, SQL vs NoSQL).
- Address failure scenarios, monitoring, and how the system handles 10x traffic spikes.
Possible Follow-up Questions
- How would you handle a user going offline for hours and then reconnecting with many local edits?
- How would you implement undo/redo in a multi-user collaborative context?
- What happens when two users simultaneously move the same element to different positions?
- How would you optimize bandwidth for users on slow connections?
Sharpen Your Skills on Codemia
Practice similar problems with our interactive workspace, get AI feedback, and track your progress.
Practice System Design ProblemsSample Answer
Requirements
Functional Requirements
- Real-time Collaboration: Multiple users can edit the same canvas simultaneously with changes reflected in real-time.
- Conflict Resolution: Implement conflict r...
Capacity Estimation
Given 260M+ MAU, let's break down the estimates:
- Concurrent Users: Assume 5% concurrent users at peak times, leading to 13M concurrent users.
- Editing Sessions: Each user may have a...