...

>

Requirements of Google Docs’ Design

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.

Functional and non-functional requirements of the collaborative editing service
Functional and non-functional requirements of the collaborative editing service

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: ...