Google Docs
What is Google Docs?

Requirements of Google Docs’ Design

Design of Google Docs

Why should we use WebSockets instead of HTTP methods? Why are WebSockets optimal for this kind of communication?

The design above depicts a microservices architecture instead of a monolithic one. Why is that suitable here?

What queuing algorithm is best suited for the operations queue in the design above?


We’re implementing view counters through an asynchronous method, which means that the number of views of a document may be outdated. Could we use sharded counters or Redis counters to get effective results?

The detailed design above doesn’t depict where the view counter data is saved. What would be suitable storage for the view counter, and what design changes will have to be made?

Concurrency in Collaborative Editing

Why can’t we use locks to synchronize between users?

What happens if there are two users collaborating on a document and they have different Internet speeds? Which technology, OT or CRDT, is better suited for conflict resolution in such a case?

Evaluation of Google Docs’ Design

Why should we use strong consistency instead of eventual consistency for conflict resolution in a collaborative document editing service?

