Shared document editing (among multiple users)
Document storage and retrieval
Authentication
Sharing documents between users
solution for handling conflict resolution
consistency > availability (latency before editing a document is okay, latency once editing a document with conflict resolution is not okay)
authentication and authorization
Data Types:
Data Requests:
Access patterns:
Update a given blob storage item while making edits
Data Storage:
User:
ID
login/pass etc
Document:
document ID
User created
date created
date edited
shared true/false
DocumentAccess:
document ID
userID
time given access
authorization type (view/edit/etc)
revoked?
UI:
Choose document for edit
Document editor screen
Backend:
API when defining what document you're using
conflict resolution while editing a document
After the user logs in they get a view of their available documents for editing from the API database. They can then select one of the documents for editing. Multiple clients can edit the same document at a time. When a change is made it calls the conflict resolution API which updates the blob storage.
Dig deeper into 2-3 components and explain in detail how they work. For example, how well does each component scale? Any relevant algorithm or data structure you like to use for a component? Also you could draw a diagram using the diagramming tool to enhance your design...
Explain any trade offs you have made and why you made certain tech choices...
Try to discuss as many failure scenarios/bottlenecks as possible.
What are some future improvements you would make? How would you mitigate the failure scenario(s) you described above?