Design File Storage with Metadata, Access Control, and Chunked Uploads

Read the full interview experience this question came from →

Quick Overview

Design drive-style file storage with metadata and blob separation, ACL checks, resumable chunk uploads, atomic publication, and version conflicts.

Design File Storage with Metadata, Access Control, and Chunked Uploads

Company: Harvey

Role: Software Engineer

Category: System Design

Difficulty: medium

Interview Round: Onsite

Design a file-storage service with a drive-style user experience. Focus on the separation of file metadata from file bytes, access-control lists, and large-file uploads split into chunks. ### Constraints & Assumptions - Support authenticated users, file upload and download, and explicit sharing permissions. - A file can be large enough that an interrupted upload should resume without retransmitting every completed chunk. - Clarify overwrite/version behavior before choosing identifiers and commit semantics. - No scale target, availability SLA, or particular storage vendor is supplied. Describe a coherent baseline and identify where those requirements would change it. ### Clarifying Questions to Ask - Are permissions attached to individual files, inherited from folders, or both? - Is an overwrite a new immutable version or an in-place replacement? - May clients upload chunks directly to blob storage using scoped authorization? - What should happen to incomplete uploads and cached download links after access is revoked? ### Part 1 — Metadata and access control Define metadata records, file/blob identifiers, and permission checks for listing, sharing, and downloading. #### What This Part Should Cover - Separation of logical files, immutable content versions, and storage objects. - ACL entries and server-side authorization on relevant operations. - A consistent metadata view when content is uploaded or overwritten. ### Part 2 — Chunked upload and completion Describe upload-session creation, chunk transfer, retry/resume, and finalization. #### What This Part Should Cover - Chunk identity, size and integrity checks, and idempotent retry behavior. - A manifest or equivalent complete-file representation. - A commit boundary that exposes only a complete, validated version. - Cleanup of abandoned temporary chunks. ### Part 3 — Download and failures Walk through an authorized download and explain recovery from failures between blob writes and metadata commit. #### What This Part Should Cover - Authorization before granting access to bytes. - Range or chunk-based retrieval without making clients trust arbitrary storage keys. - Reconciliation for unreferenced blobs and incomplete metadata transitions. ```hint Decide when the file becomes visible Uploaded chunks can exist before the logical file is ready. Choose a single metadata transition that makes a complete version discoverable. ``` ### What a Strong Answer Covers - Metadata, ACL, upload, and download contracts that agree on file identity and visibility. - Resumable transfer without treating partial chunks as a finished file. - Explicit security and failure boundaries rather than an assumed transaction spanning every service. ### Follow-up Questions - How would two clients concurrently uploading a new version of the same file avoid silently overwriting each other's changes? - Which access-revocation guarantee is possible after a download URL has already been issued?

Overview: Design drive-style file storage with metadata and blob separation, ACL checks, resumable chunk uploads, atomic publication, and version conflicts.

Read the full Harvey Software Engineer interview experience this question came from

|Home/System Design/Harvey
Harvey logo
Harvey
Sep 1, 2026
mediumSoftware EngineerOnsiteSystem Design
0
0

Design a file-storage service with a drive-style user experience. Focus on the separation of file metadata from file bytes, access-control lists, and large-file uploads split into chunks.

Constraints & Assumptions

  • Support authenticated users, file upload and download, and explicit sharing permissions.
  • A file can be large enough that an interrupted upload should resume without retransmitting every completed chunk.
  • Clarify overwrite/version behavior before choosing identifiers and commit semantics.
  • No scale target, availability SLA, or particular storage vendor is supplied. Describe a coherent baseline and identify where those requirements would change it.

Clarifying Questions to Ask Guidance

  • Are permissions attached to individual files, inherited from folders, or both?
  • Is an overwrite a new immutable version or an in-place replacement?
  • May clients upload chunks directly to blob storage using scoped authorization?
  • What should happen to incomplete uploads and cached download links after access is revoked?

Part 1 — Metadata and access control

Define metadata records, file/blob identifiers, and permission checks for listing, sharing, and downloading.

What This Part Should Cover Guidance

  • Separation of logical files, immutable content versions, and storage objects.
  • ACL entries and server-side authorization on relevant operations.
  • A consistent metadata view when content is uploaded or overwritten.

Part 2 — Chunked upload and completion

Describe upload-session creation, chunk transfer, retry/resume, and finalization.

What This Part Should Cover Guidance

  • Chunk identity, size and integrity checks, and idempotent retry behavior.
  • A manifest or equivalent complete-file representation.
  • A commit boundary that exposes only a complete, validated version.
  • Cleanup of abandoned temporary chunks.

Part 3 — Download and failures

Walk through an authorized download and explain recovery from failures between blob writes and metadata commit.

What This Part Should Cover Guidance

  • Authorization before granting access to bytes.
  • Range or chunk-based retrieval without making clients trust arbitrary storage keys.
  • Reconciliation for unreferenced blobs and incomplete metadata transitions.

What a Strong Answer Covers Guidance

  • Metadata, ACL, upload, and download contracts that agree on file identity and visibility.
  • Resumable transfer without treating partial chunks as a finished file.
  • Explicit security and failure boundaries rather than an assumed transaction spanning every service.

Follow-up Questions Guidance

  • How would two clients concurrently uploading a new version of the same file avoid silently overwriting each other's changes?
  • Which access-revocation guarantee is possible after a download URL has already been issued?

Submit Your Answer to Earn 20XP

Sign in to leave a comment

Loading comments...