How does S3 multipart upload make 5TB uploads resumable and fast?
292 views
46 of 106
1
The problem
Question presented to candidate:
"A customer needs to push a 5 TB video archive into S3 over a link that drops every few hours. A single PUT will not work. Explain how multipart upload works, why it makes the upload both resumable and fast, and what limits and costs you have to plan around."
What a strong answer should cover:
The protocol: CreateMultipartUpload returns an upload ID, UploadPart sends numbered parts independently (each returns an ETag), CompleteMultipartUpload stitches the listed parts into one object atomically, AbortMultipartUpload discards them
The limits and the arithmetic: parts of 5 MiB to 5 GiB (last part may be smaller), at most 10,000 parts, so a 5 TiB object needs parts of at least about 525 MiB; single PUT is capped at 5 GB; the maximum object size was raised from 5 TB to 50 TB in December 2025
Why it is resumable: each acknowledged part is durable on the server, so after a crash the client calls ListParts (or keeps its own record) and re-sends only the missing parts; retrying a part number simply overwrites it
Why it is fast: one TCP stream is limited by latency and window size, so many parts in parallel fill the network; the run shows 29.1 hours on one stream versus 1.2 hours with 24 parallel parts
Integrity: per-part ETags (MD5 for unencrypted parts) checked at Complete, the multipart ETag is not the MD5 of the whole object, and additional checksums (CRC64NVME by default, SHA-256 composite) for end-to-end verification
Cost hygiene: incomplete uploads keep their parts billed until aborted, so add a lifecycle rule with AbortIncompleteMultipartUpload
Code / implementation expected: Optional โ the protocol and the arithmetic matter most; the example simulates S3, crashes mid-upload and resumes with ListParts.
s3
multipart
uploads
2
Try it yourself
Sketch your approach before you read the solution. That is what the interview tests.
Stuck? Get a hint.
A short nudge toward the approach. It will not give the answer away.
3
Solution
Target Audience: Developers preparing for system design interviews, and anyone who has watched a large upload fail at 97%. No prior S3 knowledge needed.
Difficulty: Medium
Verified with: Node 22.22 and Python 3.12 (both print identical output). S3 limits and dates are from AWS documentation and announcements, cited inline.
How to read this doc: Every idea is explained in plain language first, then tagged with ๐ Interview term: so you also learn the exact words an interviewer expects. All behaviour shown comes from running the example against a simulated S3; the Verified section quotes the full output. Where something is an AWS product fact, the source is named.
1. Why This Even Matters โ A Story First
Imagine moving house with one enormous truck that has to make the whole trip in one go. If it breaks down an hour before arriving, everything goes back to the
The solution is hidden so you can try first
14 min read ยท 13 sections
4
Read the code
Multipart upload on a simulated S3: part sizing for 5 TiB, parallel speed, crash and resume with ListParts, multipart ETag