Тёмный

System Design Interview: Design Dropbox or Google Drive w/ a Ex-Meta Staff Engineer 

Hello Interview - Tech Interview Preparation
Подписаться 9 тыс.
Просмотров 28 тыс.
50% 1

00:00 - Intro
02:03 - The Approach
3:18 - Requirements
8:17 - Core Entities & APIs
15:10 - High Level Design
27:33 - Deep Dives
55:55 - Conclusion
A step-by-step breakdown of the popular FAANG+ system design interview question, Design Dropbox or Google Drive, which is asked at top companies like Meta, Google, Amazon, Microsoft, and more.
This question is most commonly asked at Google and Amazon, but shows up a lot at Meta too as well as across all major tech companies.
Evan, a former Meta Staff Engineer and current co-founder of Hello Interview, walks through the problem from the perspective of an interviewer who has asked it well over 50 times.
Resources:
1. Detailed write up of the problem: www.hellointerview.com/learn/...
2. System Design In a Hurry: www.hellointerview.com/learn/...
3. Excalidraw used in the video: link.excalidraw.com/l/56zGeHi...
4. Vote for the question you want us to do next: www.hellointerview.com/learn/...
Checkout the previous video breakdowns:
Ticketmaster: • System Design Intervie...
Uber: • System Design Intervie...
Connect with me on LinkedIn: / evan-king-40072280
Preparing for your upcoming interviews and want to practice with top FAANG interviewers like Evan? Book a mock interview at www.hellointerview.com.
Good luck with your upcoming interviews!

Опубликовано:

 

14 июл 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 150   
@abhijeet8710
@abhijeet8710 22 дня назад
"Have you done any System Design course ? How are you so good with this subject ?" - These were the word of my interviewer. I had a High Level + Low Level system design with a start-up recently. Surprisingly the question was to design a file sharing system such as Google Drive as described in this video with some additional features. I explained the HLD with the diagram as I had learned from the the concepts of this video. After the HLD was over, the interviewer told me that I have created a very robust & elegant system. He further said, he was so satisfied with the HLD, that he no longer wants to go into the LLD. Folks, these videos are the absolutely anything that you will ever require to ace a system design interview. Do remember to learn the fundamentals used in the system. A huge thanks to #Hello Interview for putting out the best content out there.
@JohnVandivier
@JohnVandivier 20 дней назад
"he was so satisfied with the HLD, that he no longer wants to go into the LLD. " GOALS! kudos and congrats
@hello_interview
@hello_interview 20 дней назад
This is epic!
@JShaker
@JShaker 13 часов назад
I'm so grateful for all of your videos. I've been practicing using the Hello Interview AI interviews, booked one mock with one of your interviewers, watched all the videos. The quality is so far beyond any other content out there, and I've successfully passed 5 system design interviews. Keep up the good content, your RU-vid channel deserves to blow up and your website too #wouldinvest
@EamonLinskey
@EamonLinskey 2 месяца назад
These are the best System Design videos I have found. Great framework for approaching problems, clear explanations, helpful diagrams. And I really appreciate the notes about how insight’s different seniority levels might approach specific parts
@GauravGupta-op8ol
@GauravGupta-op8ol 2 месяца назад
With my systems design interview coming up, I was looking forward to your video. It's great as always.
@md_dm490
@md_dm490 2 месяца назад
This channel has the best system design content on youtube. Keep up the good work.
@noobu
@noobu 2 месяца назад
Great stuff again! Not only good for interview but also for daily work 1) Clear and concise structure 2) Weigh trade off rigorously and explain the final decision clearly. Every single component is well though out with real world considerations
@alexandergordon9286
@alexandergordon9286 Месяц назад
It's pure gold! specially the parts where you are stopping the debates abouts what db to choose or if the calculations are needed. The deep dives are the best part.. no one goes that deep and thats actually what matters in an interview
@indreshgahoi7103
@indreshgahoi7103 2 месяца назад
Hey Evan , thank you so much for providing the great content. I really live the way you organize and put content across the board. ❤
@levimatheri7682
@levimatheri7682 15 дней назад
Wow, by far the best system design videos anywhere. I love how simple you make it, and the invaluable tips!
@andjelaarsic9217
@andjelaarsic9217 23 дня назад
My mind is absolutely blown by how beautifully everything is explained. I love how you understand what would be possible questions/confusions from people watching and you address them by explaining pros and cons. Thank you so much for the content! Your walkthroughs are by far the most useful and interesting.
@hello_interview
@hello_interview 23 дня назад
High praise! Appreciate you taking the time to share this 😊
@pragatimodi950
@pragatimodi950 17 дней назад
Hi Evan, this is my first time giving system design interviews. Really glad I found this channel to learn from. Most of my prior feedback from mocks and system design have been framework related for when I explain my design. This really helps with that and I think even at work, this is a really good approach to follow for. most things. Awesome content, thanks a lot!!!
@yourssachin
@yourssachin 2 месяца назад
Love the content and explanation. I watched hundreds of videos on system design from last 4-5 years and also have paid subscription from few. I don't have any doubt that, your channel can become premier system design platform in no time if you keep the content quality high ( just like last 3 videos). Next video, I'd recommend to talk about messaging platform like WhatsApp or FB messenger. There are so many videos on this topic but didn't find any which explain the details and really help in the interview.
@chongxiaocao5737
@chongxiaocao5737 Месяц назад
one of the best system design preparation video I have seen online.
@crackITTechieTalks
@crackITTechieTalks Месяц назад
This is the best system design video, I have watched!! Specially the deep dives, You nailed it !! Looking forward to watch your videos.
@jeremyklein953
@jeremyklein953 2 месяца назад
Really good approach. I love how you build up to the full solution. It makes a lot of sense to me and helps me reason these complex systems as well
@ashutoshrana9998
@ashutoshrana9998 Месяц назад
Will be the best system design interview channel for sure. Neat content. Keep up with the quality Man!
@venkatamunnangi1287
@venkatamunnangi1287 2 месяца назад
Thanks for the effort and videos. Easily one of the best in business for mocks and educational material.
@vijaykhurana8766
@vijaykhurana8766 2 месяца назад
Great content. Thank you for posting. One of the best system design video I have come across for this design.
@jherreria
@jherreria 29 дней назад
I really appreciate your help in this topic. I'm learning a lot! Keep the videos coming!
@evangeloskostopoulos8173
@evangeloskostopoulos8173 2 месяца назад
This is really awesome, thank you. Please keep them coming!
@anuragtiwari3032
@anuragtiwari3032 Месяц назад
i dont comment much, but for this kind of explanation i gotta give it u. Hands down the best explanation on youtube . pls continue making these kind of videos . This channel will blow up
@hello_interview
@hello_interview Месяц назад
♥️
@3rd_iimpact
@3rd_iimpact 2 месяца назад
I just finished reading the article on this lol. I’ll check out the video as well.
@prasidmitra6859
@prasidmitra6859 28 дней назад
These are like gift from God. The best SD resources I've found in the last 3 years.
@adeeshacharya7520
@adeeshacharya7520 Месяц назад
This is really good, irrespective of whether we are taking interview or not, any person looking at this level of explanation and detail would try to picture software differnetly. Thanks for making such videos, would love to see some more
@ahmedkhan25
@ahmedkhan25 Месяц назад
Excellent sys design interviews - I like the informative tone and clear approach - thanks
@castulo
@castulo 2 месяца назад
👏Bravo, on point as always. Thanks Evan, keep up the good work man!
@smalladi78
@smalladi78 Месяц назад
Thanks for posting these! Great interview as always! I am learning a lot from these interviews. I found it interesting that you jumped ahead in order for the non-functional requirements since you knew the large file upload requirement would impact the design enough that doing the other ones first was not beneficial since they would become irrelevant. Obviously, this comes with actual experience of working on the job. May I suggest doing a follow up that uses the final design from this interview and consider how it may change if you piled on a more advanced feature like syncing only a partial set of folders or sharing folders with other people.
@digitalexander
@digitalexander Месяц назад
I really like the 5-step structure, it's the best I've seen and it effectively helps me think through the designs in a methodical way.
@hello_interview
@hello_interview Месяц назад
Right on! So glad it’s useful
@IshaZaka
@IshaZaka 2 месяца назад
Hi Evan, Thankyou so much for providing this type of content. plz make a system design video on payment system
@ediancomachio2783
@ediancomachio2783 2 месяца назад
this is pure gold thank you so much
@jmms49
@jmms49 2 месяца назад
great videos, thanks for uploading these. Easily the best content about system design interviews I've found. I would probably suggest to use merkle trees for the sync functionality, seems like a natual way to diff and sync large file systems
@mehdisaffar
@mehdisaffar 28 дней назад
I love the content. It has been frustrating to watch some other system design videos where they just brush off over important details and act like everything is straightforward and easy, and just make 10s of services and never really explain the nitty-gritty details of how those things would work and IF they would actually work/be efficient etc. Thank you!
@mehdisaffar
@mehdisaffar 28 дней назад
I wish you had mentioned the challenges of 2-way syncing in this context. Because this is akin to master-master replication, in case of network partition (for example user makes changes to remote, hops on another offline device, makes changes, then comes back online) there is a chance of inconsistencies (user makes different changes on device 1 vs device 2). There would probably need to be a way to offer merging changes together or have the user choose between version 1 or 2.
@mehdisaffar
@mehdisaffar 28 дней назад
I think I talked too fast! You did mention reconciliation
@lorddel
@lorddel 2 месяца назад
One more comment on this: comparing this to the written content on hellointerview, this one seems more round and well-thought (mainly regarding using S3 notif. on chunk upload completion, which wont work). Would be cool to see it reflected there on the platform! Good job
@hello_interview
@hello_interview 2 месяца назад
Good feedback! I'll try to get that updated, particularly by adding sync which I just last minute decided to throw into the video.
@jimitshah7636
@jimitshah7636 Месяц назад
Great video for system design preparation. Methodology, the way he approached the question was good. 5 steps. Pretty good
@tvmanikandan835
@tvmanikandan835 2 месяца назад
the content is good, keep up the good work. expecting more SD videos in more details
@dragonpearl8244
@dragonpearl8244 2 месяца назад
Very easy understand keep continue new videos, thanks you so much
@surojitsantra7627
@surojitsantra7627 2 месяца назад
One of the best and detailed explanation. Thank you so much for this content. Please upload more such videos.
@hello_interview
@hello_interview 2 месяца назад
New one later today!
@allenxxx184
@allenxxx184 Месяц назад
Thank you for your effort! Excellent content!! Love it!
@deathbombs
@deathbombs 2 месяца назад
Voted on your website for payment system! Banks love these
@phavelar
@phavelar Месяц назад
one can argue that "supporting 50gb upload file size" is a functional requirement (you placed it under non-functional requirement) - just a call out. great video!
@whosgotrythm
@whosgotrythm 2 месяца назад
Thanks great content. Probably the best.
@dark-knight494
@dark-knight494 Месяц назад
Big fan of this channel and Evan. Please solve whatsapp/messenger type chat system next if you get some time.
@prateeksingh7994
@prateeksingh7994 2 месяца назад
Great content!
@VyasaVaniGranth
@VyasaVaniGranth 11 дней назад
First - please continue making and sharing these videos, this is incredible. Very few high quality sources available out there and this is probably the best one in my eyes. Second - how realistic is it that the download and upload happen directly b/w client and S3? Are there security concerns with this approach that should be considered? For reference, there's a Dropbox engineer's talk where uploads go through an intermediate service - this does mean additional copies of the data meaning more memory / compute but seems more realistic. In general, for any design that has media upload (eg. newsfeed), would you recommend direct upload to S3?
@hello_interview
@hello_interview 7 дней назад
yah its a good point, most major systems don't do this for a number of reasons. While is largely academically correct and optimal, at youtube/dropbox/etc scale, they prefer more control so they're rolling their own systems here.
@li-xuanhong3698
@li-xuanhong3698 2 месяца назад
Love your channel !
@vaibhavsharma1653
@vaibhavsharma1653 Месяц назад
Amazing. Some Notes: DeepDive: Chunking CDNs Adaptive Polling with only updated chunks Compression.
@suri4Musiq
@suri4Musiq 2 месяца назад
Loved this resouce, thank you so much! But I just wanted to point out that in my interview I was asked about sharing files with other users and I feel like this design concentrated more on just syncing files across multiple devices. In the former, I think we can talk a little more about CDN/other approaches which were hand waved here.
@hello_interview
@hello_interview 2 месяца назад
Checkout the write up I linked! I go into sharing there.
@KITTU1623
@KITTU1623 2 месяца назад
Thank you very much for the videos. One small nit pick. DynamoDB supports a maximum of 400KB per item and if we are storing all the chunk metadata in the item, for a 50GB file with 5 MB chunk size, assuming we need 100Bytes per chunk metadata, our item size would be around 1MB.
@hello_interview
@hello_interview 2 месяца назад
Good catch! True
@AlbaraaAlHiyari
@AlbaraaAlHiyari 2 месяца назад
I truly appreciate all the effort you've put into making these amazing videos. Please keep them coming. One insignificant (not important) nitpick. 50 GB @ 100Mbps = ~ 1hr 7min. I think you just forgot to convert the decimal to minutes. You have it correct in the write up, as in 1.11 hours (0.11 * 60 = 6.6 minutes).
@hello_interview
@hello_interview 2 месяца назад
Mental math is hard 😛
@AlbaraaAlHiyari
@AlbaraaAlHiyari 2 месяца назад
@@hello_interview tell me about it... Also not fun under the pressure of an interview 🤣
@gauravaws20
@gauravaws20 Месяц назад
excellent stuff !!
@pujamishra1475
@pujamishra1475 2 месяца назад
I have a product architecture interview coming up. I was really looking for some good product architecture/design examples and then came across this. This is very helpful because you talk about the client, user experience, malicious users and relate it to the design decisions made. Thank you! One question, for a product architecture interview - should we go into more details about the APIs like explicitly write out requests, response, failure/success codes or the amount of discussion you did on APis is enough for senior level? Can you also tell me what topics/ points would you add over the discussion in this video if this was asked in a product architecture design round. Thanks again!
@fayezabusharkh3987
@fayezabusharkh3987 2 месяца назад
Thank you.
@depengluan7222
@depengluan7222 19 дней назад
Love the content! Thanks for putting the efforts! nit, fingerprint probably does not fit as a good id for chunk, as hash value can change over time when the content changes.
@user-ql1rg9mj9d
@user-ql1rg9mj9d 2 месяца назад
very good content
@Anonymous-ym6st
@Anonymous-ym6st 2 месяца назад
Thanks for the great content! Your video really help me understand the "flow" about a good system design interview (which I do feel very important for staff+ engineers to direct the interview!) a few general questions: 1. Is it beneficial to mention the selection of specific DB (like dynamo), and mention to use Kafka/Spark for microbatching snapshot update etc. after evaluating the QPS / replication etc.? or keep it at abstract level would give equivalent signals for interviewers? 2. what signals / thinking might make you feel it even beyond staff (just out of curiosity, as feeling it has already been very perfect from the staff requirement)?
@hello_interview
@hello_interview 2 месяца назад
1. You'll need to show technical excellence somewhere, these could be two good places. Ideally, you go deep in the places you know well and have hands on experience. If this is where that is, then go for it. If you keep it abstract, then the depth needs to come from somewhere else. 2. Hard to say, Staff candidates can usually teach me something, which is a key sign. They know some part of a system better from work experience then I do, so we can go deep there and I end up learning. It's abstract, but this is usually the best sign that a candidate is staff+.
@truthSaty
@truthSaty 2 месяца назад
Your videos are v. good but your mock interview is costly for certain markets (BFS can give you more return). Wish to get interviewed soon !
@michaelkaspiarovich9244
@michaelkaspiarovich9244 11 дней назад
Latency for upload/download? Latency for listing files and preview is important, but for transferring bandwidth is more important.
@ramannanda
@ramannanda Месяц назад
For the delta sync bit, probably should go a bit deeper into rechunking for an existing file, to perform the delta sync.
@mindrust203
@mindrust203 2 месяца назад
Hey Evan, this content is fantastic, thank you! I have a question regarding your solution to chunking around the 39 minute mark When we ask S3 to fetch us a pre-signed URL, do we do that for all our chunks as well? Does this happen on initial request to upload the file (metadata)? The way the File Metadata entity schema is described, it looks like we have a top-level S3Link, but also chunk-level S3 links embedded in the file metadata, so the upload flow is a little unclear to me
@hello_interview
@hello_interview 2 месяца назад
Good question, you're right to be a little confused here. So as I alluded to S3 offers and API called multi-part upload. For this, it requires just 1 presigned url, but, multi-part upload re-stitches the chunks back into a single file in s3, so this does not allow us to send over chunk deltas for syncing. As a result, we have to upload as chunks manually without relying on multi-part upload. So, long answer, but yes, you'd actually need to request a presigned url for each chunk, I should have made that clearer but tbh was not sure in the moment if multi-part upload could be configured to not re-stitch the file, so I omitted :)
@nobodyknows228
@nobodyknows228 11 дней назад
1. How can we handle write conflicts when we have a folder which is supposed to be consistent across multiple devices? 2. Also when two devices are disconnected from the internet and if users updates some files how does the sync happens when they come back online and when both tries to write the changes at the same time at a same file path? I am not sure if these solutions work but I think 1. We can use a Redis lock for writes with TTL same as the timeout or a little more of the pre-signed url. If connection fails in between we can just resume the upload when connected back. But this might be a problem when a user is trying to upload big files with large timeout durations since other users might have to wait till the user uploading currently is done. 2. When the user comes back online we should probably first fetch all the changes that are executed on the device and raise conflicts with the user asking what action to perform(similar to git) and acquire lock to write if required.
@VahidOnTheMove
@VahidOnTheMove Месяц назад
Thanks for the videos. 47:45 I would like to know your opinion on push approach? By push approach I meant when the File service knows there is a change in a chunk, Sync service will let the client know. And, then the client will send a request to sync/download the chunk.
@coderzlife
@coderzlife 2 месяца назад
Please make a video around Designing a distributed login
@lorddel
@lorddel 2 месяца назад
Hey Evan, thank you so much for the great content. One question, would you recommend any resources on the Design Amazon interview question? I don't normally see it being discussed on Alex Xu's books, hello interview, grokking de SDI, etc... Would be awesome seeing out tackle it!
@hello_interview
@hello_interview 2 месяца назад
Checkout the written breakdown for Design gopuff on our site! I think it’s really close to what you’re looking for
@lorddel
@lorddel 2 месяца назад
Thank you so much!
@maharshishah4840
@maharshishah4840 Месяц назад
Some interviewers really like seeing estimation numbers earlier on before going into the higher level design despite what you generally suggest we should do. Can you may be also create a video where you do some relevant capacity estimations early on and later guide the higher level design? I would love to see if there is a good way to get some numbers in during "requirements" phase
@hello_interview
@hello_interview Месяц назад
In general I’d say ask up front. Explain your reasoning and ask if they’d like you to then proceed from there. It’s pretty hard for me to think of what estimations I’d do directly up front that would inform anything. The classic bandwidth and storage is far too crude to inform in my opinion and I can already estimate based on DAU alone until later in the design.
@shruti12339
@shruti12339 2 месяца назад
Hi Evan, this is great stuff! I do have a question though regarding the 3rd API endpoint. Are you assuming that the changes were made on the remote rather than locally because it seems that the user would call the "changes" endpoint to get the changed files on the remote since a particular timestamp? It is my understanding that generally files would change locally and then you would need to sync those changes to the remote.
@hello_interview
@hello_interview 2 месяца назад
Happens in both directions! That api endpoint is needed to get changes from remote to local. When a local change happens, then its just the upload endpoint to sync the change.
@aslgomes
@aslgomes 8 дней назад
Hey Stefan, awesome video, congrats! I've got a quick question though. Around the 49:46 mark, you mention adding an "updatedAt" to a chunk at a specific id/fingerprint. If a chunk changes, its fingerprint/hash/checksum would change too, right? So that id wouldn't really match the changed chunk anymore, would it? Doesn't that mean the old chunk gets "invalidated" and a new chunk id appears? Sorry if I'm missing something obvious here.
@hello_interview
@hello_interview 8 дней назад
No this is spot on, good call out. I was loose here. If the fingerprint is the ID, then an updatedAt does not make sense. If the fingerprint is not the ID, then it of course does. Trade off here of whether you want to keep old chunks around for versioning.
@sharansrivatsa210
@sharansrivatsa210 Месяц назад
Thank you for this video! It is very helpful. I do have a question though - lets say the same file is modified by 2 devices at the same time. How do we handle sync in that case?
@supragya8055
@supragya8055 2 месяца назад
had few questions and suggestion-> 1. When really large file is divided into chunks and upload in different s3 file path , will different pre signed urls be requested for each chunk of that large file ? will this logic be maintained in file service. If we are using trust and verify along with s3 multipart api , i guess in that case s3 would created different paths for each chunk which we also need to store in metadata , would s3 return actual file path of each chunk to client so that it can updated by file service in metadata db . 2. Also generally google drive doesn't allow to update same file , it will create a new version if a new upload is made to same path , so syncing of chunks for 50gb file that has been modified is probably not a valid usecase ?(thoughts) more valid usecase is addition of files to same folder/path .(thoughts) , which i think here would work by sync service using user_id , folder_id , timestamp , returning all metadata to client which is essentially added to folder/directory for user . 3. while responses by sync service or file service for downloads are being sent to client , i guess some pre processign would be needed to get pre signed urls from actual s3 path which is stored in ddb , which can be used by clients to donwloads . But thanks for the video its super helpful .
@jayshah234
@jayshah234 Месяц назад
Hi Evan, Thanks for the detailed explanation! Very helpeful! At 40:50, you mentioned that S3 exposes multi-part upload API. Does that mean on client end we don't have to handle chunking and fingerprinting given that we use S3 multi-part? Thanks!
@hello_interview
@hello_interview Месяц назад
You’ll still do the chunking but it will handle fingerprint checks
@EstherKim-463
@EstherKim-463 2 месяца назад
Maybe since data integrity was a non-functional requirement it would be worth mentioning some strategy for handling two clients modifying the same file concurrently - otherwise there's a high chance you end up with a corrupt file. Since you don't handle versioning, that pretty much necessitates locking.
@hello_interview
@hello_interview 2 месяца назад
Yup, definitely worth mentioning a resolution strategy there.
@ishankaul2043
@ishankaul2043 2 месяца назад
Thanks for this amazing video! It was really informative. I had one question on Updating the Sync Service to look for any chunks that might have been updated. Once we make some edits locally (say the file size increases from 50 Mb to 70 Mb), won't all the chunk bytes shift/change which would mean we need to update all the chunks. Is my understanding correct?
@Ynno2
@Ynno2 2 месяца назад
If the changes are append-only (at the end of the file) we wouldn't necessarily have to re-upload the whole thing. But other types of changes might require the whole file to be re-uploaded. There are file syncing algorithms for avoiding this (e.g. the rsync algorithm), the problem is those don't work so well when using an immutable object store.
@DNHRobot
@DNHRobot Месяц назад
Hi question about the chunk uploading, wouldn't uploading a big file result in huge amount of requests to update the metadata? For example just updating the status if chunk is 10mb for 50GB upload would be 5000 requests to update the chunk status. Would that have performance issue on the system when in scale?
@hello_interview
@hello_interview Месяц назад
That’s not that many in relative terms :)
@Resocram
@Resocram 2 месяца назад
If you split the files into chunks are you able to upload all chunks using the same pre-signed URL? Or do you need to generate a new URL for each chunk? How would you piece together the file from S3 when you download it through chunks?
@hello_interview
@hello_interview 2 месяца назад
S3 has a multi-part upload api that only requires 1 pre-signed url. Depending on if you need the chunks as chunks in S3 or not you can use that (it stitches them back together automatically). If you want to save the chunks as chunks, you need N pre-signed urls
@movingabroad2212
@movingabroad2212 2 месяца назад
You're vidoes are quite informative and interesting, thanks for creating those. I have a question though, the approach we take while API design, like let's go with the flow and come back and update, how is it looked down from Seniority prospective ? Won't it look -ve for Senior/Staff candidates as it might look like "detailed thinking" is lacking or candidate isn't clear about their own thought process ?
@hello_interview
@hello_interview 2 месяца назад
I wouldn’t think so, no. But the key is communication. If you put something partial down and claim it’s perfect, then that’s bad. If you put something down and express that you know it’ll need to be refined and that you’ll come back to it as you learn more, then all good!
@yuuhameaw1510
@yuuhameaw1510 4 дня назад
Thanks for the great content! One question though, if we use chunk fingerprint as an id, when the chunk change the fingerprint would be changed. How are we going to sync them?
@hello_interview
@hello_interview 4 дня назад
Add a new chunk. Good to keep the old around for versioning (not a requirement here, so either way works)
@deathbombs
@deathbombs 2 месяца назад
45:45 I wonder how syncing would change if instead of folder status, it's for database writes with many writers
@anubhav914
@anubhav914 2 месяца назад
Great content. Can u tell me which draing tool u are using?
@hello_interview
@hello_interview 2 месяца назад
This is Excalidraw!
@dannyryngler6425
@dannyryngler6425 11 дней назад
Question - what should the file id be? It can't be based on the file name, as names can change. It also couldn't be a hash of the whole file, as the file itself can obviously change. Amazing content, thank you!!
@hello_interview
@hello_interview 8 дней назад
Depends on if you want versioning or not. Can be the fingerprint or a random uuid, depends on requirements
@momothezencat
@momothezencat 2 месяца назад
awesome, no more mouse over typing
@hello_interview
@hello_interview 2 месяца назад
Learning :)
@maxvettel7337
@maxvettel7337 51 минуту назад
Hi Evan, can you explain how we keeps tracking the order of chunks in file. I mean the case when the client has downloaded chunks from S3 DB and is about to assemble it
@kamalsmusic
@kamalsmusic День назад
For the client to know how to stitch together chunks, doesn't it need to know the starting offset & length for each one?
@zuowang5185
@zuowang5185 Месяц назад
How does an event bus system clean up unnecessary work like file A changed to file B but changed back to file A again, you don’t have to walk through the events to reconstruct the folder?
@avinaamat
@avinaamat 2 месяца назад
Do a sells chatbot with multiple options please
@davidoh0905
@davidoh0905 17 часов назад
One question about the chunk status verification is that with NoSQL, we cannot directly access the information about the chunk. Is it okay for us to assume that we will always be parsing through the entire list of chunk metadata? Additionally, what would happen if one chunck gets big enough that new chunk has to be created? And maybe the new chunk is super super small. are there any issues coming out of a continuously updating file where chunks start to fragment? Thanks for such an amazing content! I'd just like a bit more detail of how the database based status updates would look like!
@kamalsmusic
@kamalsmusic 2 дня назад
Is storing a mimetype necessary if we have the file extension anyway from the filename?
@Ynno2
@Ynno2 2 месяца назад
Do you suggest a different delivery framework for system design interviews which aren't necessarily "product"?
@hello_interview
@hello_interview 2 месяца назад
Topical! Was chatting about updating the site with that soon. I’d recommend very similar, but core entities and api are what may change as they could be less relevant. Instead I’d frame it as focusing on the inputs and outputs of the system more generally. And then still thinking about the data persisted
@hello_interview
@hello_interview 2 месяца назад
I’ll do a pure infra question next
@sames44048
@sames44048 Месяц назад
Great video. I did have a question -- I've implemented a file upload flow before so I knew conceptually about presigned URLs. But what if you didn't and you were interviewing for a Senior+ role? I'm not quite confident in myself to have been able to come up with that on the spot. Have candidates who have never done this flow been able to come up with that?
@hello_interview
@hello_interview Месяц назад
Nope! But not required. If a candidate does not know, that’s fine. I’ll just expect depth in other places. “Trivia” knowledge like this should never be a requirement for passing an interview
@sames44048
@sames44048 Месяц назад
@@hello_interview Ok, that's reassuring (my imposter syndrome at an all time high these days, heh). Appreciate the reply and the content.
@amitb2921
@amitb2921 24 дня назад
Thanks for a great content, especially the Deep Dive part, which generally people do not discuss about. I have one question around storing the chunks as list in the DB. For 50 GB file and 5 MB chunks there will be 10K chunks created. So the chunks list will have 10K entries. Now updating one chunk list column for every chuck status change could be quite challenging. Would it be better if we have a separate table for chunks instead. Also while you do the matching of chunks with the fingerprint, You need to check 10K entries from Local DB(with separate table and indexed) vs 10K entries in the chunk list (in single table column), where former is more efficient. Kindly let me know what are your thoughts on above points ?
@hello_interview
@hello_interview 14 дней назад
Sounds reasonable to me! Good call out
@amitb2921
@amitb2921 14 дней назад
@@hello_interview Thanks a ton for the response. I have modified my comment above to be bit more clear.
@pankajk9073
@pankajk9073 2 месяца назад
one question- how do we merge chunks in order after downloading to local device? is it a good idea to keep some kind of sequence number for each chunk for a file?
@hello_interview
@hello_interview 2 месяца назад
Yah!
@Sandeepg255
@Sandeepg255 17 дней назад
@@hello_interview Wont this mergeing logic be too heavy on the client side ?
@YatharthJohari-uu1yb
@YatharthJohari-uu1yb Месяц назад
It would be really helpful if you can share which whiteboard tool you are using here.
@hello_interview
@hello_interview Месяц назад
Excalidraw.
@adithyar3160
@adithyar3160 Месяц назад
Add more videos pls
@hello_interview
@hello_interview Месяц назад
Another one next week :)
@_launch_it_
@_launch_it_ Месяц назад
2.5x speed. Interview in 19 hours. Let's go.
@hello_interview
@hello_interview Месяц назад
Good luck king! 👑
@dibll
@dibll 2 месяца назад
Hey Evan, when can we expect the next video?
@hello_interview
@hello_interview 2 месяца назад
Early next week!
@dibll
@dibll 2 месяца назад
@@hello_interview Thanks. Also if possible could you pls touch upon replication(multi-leader, leaderless etc.) and sharding strategies which one to use under what circumstances.
@YOUNGM-xh7pe
@YOUNGM-xh7pe Месяц назад
Guys, do anyone know why do we need a separate service to handle fileSync?
@nobodyknows228
@nobodyknows228 11 дней назад
1. To avoid single point of failure 2. Users polls the sync service every 1-5 seconds so the traffic received by this service would be much higher than the upload/download service so it would be better if we isolate it. I think it makes more sense for the sync service to directly fetch the data from the primary DB unlike the design shown in the video.
@user-hx6bh2fe8o
@user-hx6bh2fe8o Месяц назад
How do we search files?
@meh2512
@meh2512 Месяц назад
can you please do video on news feed or messenger/whatsapp?
@hello_interview
@hello_interview Месяц назад
Soon! We’ve crawler next
@gaganavivek5415
@gaganavivek5415 Месяц назад
What application is used here as board?
@hello_interview
@hello_interview Месяц назад
Excalidraw
@priteshacharya
@priteshacharya 2 месяца назад
Did we miss point on scalability completely? Since we are building Dropbox or Google Drive, it has millions of user and we would need to talk about replication and partitioning which are essential since we wont' be able to fit the data in a single database.
@hello_interview
@hello_interview 2 месяца назад
Definitely could have been a nonfunctional requirement and a deep dive here. TBH I find these conversations a bit sleepy. It would go something like horizontal scaling, load balancer, dynamicDB and S3 both fully managed so scale “infinitely.” Definitely smart to choose a DDB partition key, but beyond that, not the most interesting convo imo. Different if you’re designing s3 itself.
@amitb2921
@amitb2921 24 дня назад
@@hello_interview Agree on S3 scaling may be we do not need that deep dive. But do you think we need horizontal scaling of FileMetadata DB ?
@lorddel
@lorddel 2 месяца назад
21st
@hello_interview
@hello_interview 2 месяца назад
OG 🤝
Далее
Прятки #nyanmp3
00:25
Просмотров 187 тыс.
Design Twitter - System Design Interview
26:16
Просмотров 469 тыс.