Functional
- Put, get, head, list, and delete versioned objects.
- Support multipart upload and byte-range reads.
- Apply retention, lifecycle, and access policies.
Store enormous immutable blobs durably with metadata, multipart upload, and repair.
Metadata compactness and repair bandwidth dominate.
Namespace metadata must be partitioned and continuously rebalanced.
Inline tiny objects; multipart and chunk large ones.
Detection and repair are steady-state workloads.
These are reference assumptions, not universal facts. In an interview or architecture review, change them when the product context changes.
/{bucket}/{key}Create a new immutable version conditionally./{bucket}/{key}?uploadsBegin multipart upload and return upload_id./{bucket}/{key}Stream current/versioned object with range support.bucket+key+version, manifest, etag, size, policy, created_atManifest references immutable fragments.fragment_id, placement_set, checksum, lengthPlacement spans racks/zones and records coding scheme.Map object names to versions and fragments
Persist erasure-coded or replicated chunks
Detect and rebuild lost fragments
Cache and accelerate downloads
Upload fragments first, verify checksums and durability threshold, then conditionally commit the metadata manifest. Uncommitted fragments are invisible and later garbage-collected.
Replicate new/hot/small objects for fast writes and repair; convert cold large objects to erasure coding. Coding reduces overhead but increases read amplification and repair CPU/network.
Continuously checksum data, prioritize repairs by remaining fault-domain diversity, throttle against foreground traffic, and track durability debt. Placement must avoid correlated hardware and software risk.
Reconstruct fragments across fault domains before durability debt compounds.
Use an idempotent upload session and garbage-collect unreferenced fragments.
Move here when: Simple durable blob service.
Move here when: Storage cost and large objects dominate.
Move here when: Residency, disaster tolerance, and download latency.
Strong answer signal: After an authoritative manifest commit, not after every background copy.
Strong answer signal: Tombstone/version metadata first; reclaim immutable fragments later.
Strong answer signal: Ordered namespace scans cross partitions and need snapshot/page-token semantics.