[00:00] The client uploads a video to your server. Your server then uploads it to S3. But be careful, you just paid twice for the exact same work. This is one of the most common mistakes I see in system design interviews. A candidate's building a system where they need to upload a big file, [00:13] and their first instinct is to send that file to the API server and then have the server forward it to S3. On the surface, this works, but then it doesn't. A 2GB video upload holds a server thread hostage for the entire transfer. [00:25] At 10,000 concurrent uploads, your servers aren't doing application work anymore. They're just moving bytes around and wasting memory. The fix is what's called a pre-signed URL. Your client just asks the API for an upload slot. [00:37] Your server generates a time-limited, pre-authorized URL, pointing directly at S3 and hands it back. Now the client uploads straight to S3, and your server never touches that file. When S3 finishes, it can fire off a completion event, [00:50] and then kick off all that downstream transcoding or updating a metadata or anything else you need to do. Your API went from handling gigabytes of binary data to handling just a few hundred bytes of JSON, which is the right job for an application server. [01:03] Learn more to prepare for your interviews at hellointerview.com.