Requirements of Google Docs’ Design
Establish the foundational requirements for designing a highly scalable collaborative document editor. Calculate resource estimations for storage and bandwidth, then identify the essential distributed building blocks needed to meet latency and consistency goals in System Design.
Requirements
We will define the functional and non-functional requirements for a collaborative editing service.
Functional requirements
Users can perform the following activities:
Document collaboration: Multiple users can edit a document simultaneously, and a large number of users can view it.
Conflict resolution: The system pushes edits to all collaborators and resolves concurrent editing conflicts.
Suggestions: The system provides autocomplete suggestions for words and phrases, and fixes grammatical mistakes.
View count: Editors can see the document view count.
History: Users can view the collaboration history.
Real-world editors also handle document creation, deletion, and access management. We will focus on the core collaboration features listed above.
Non-functional requirements
Latency: Low latency is critical for users collaborating from different regions.
Consistency: The system must resolve concurrent conflicts to ensure a consistent view. Users in different regions must see the updated state.
Availability: The service must be robust and available at all times.
Scalability: The system must support a large number of concurrent users viewing or creating documents.
Resource estimation
We base our resource estimates on the following assumptions: ...