Say 10B users, 5GB each so 50B storage.
Say activity is 10K reads a day, 5K writes. Assume reads more than writes in general.
Say 5 devices allowed so syncing is a challenge too
Files are blob storage so that is stored on disk or SSD. Disk would be cheaper. Replicated for durability. File metadata DB will mainly have name of file, absolute path of file, creation date, update date, version, user id, storage tier, shared user list (ACL)/permissions, sync status
Components:
Client connects to the API gateway which in turn sends request to the file uploader which in turn sends writes to the file metadata services and to disk for writing the file. File uploader has change data capture. The synced listens to this event stream to determine if there's some new file that should be synced.
Client device connects to the API gateway which in turn sends request to the file synced to register user device as present. Long polling from device to get new files. So service keeps the connection open till timeout or if there's something to send to the user. Client opens connection again.