Design Twitter - System Design Interview

Поделиться
HTML-код
  • Опубликовано: 9 май 2024
  • 🚀 neetcode.io/ - Get lifetime access to every course I ever create!
    🥷 Discord: / discord
    🐦 Twitter: / neetcode1
    📷 Instagram: / neetcodeio
    🎵 TikTok: / neetcode.io
    🐮 Support the channel: / neetcode
    ⭐ BLIND-75 PLAYLIST: • Two Sum - Leetcode 1 -...
    💡 DYNAMIC PROGRAMMING PLAYLIST: • House Robber - Leetco...
    0:00 - Intro
    0:49 - 1. Background
    1:55 - 2. Functional Requirements
    3:30 - 3. Non-functional Requirements
    7:40 - 4. High-Level Design
    11:39 - 5. Design Details
    13:25 - DB Schema
    15:30 - Scaling DB
    19:48 - News Feed Generation
    #system #design #twitter
    system design interview
    design twitter
    design instagram
    design facebook
    design news feed
  • НаукаНаука

Комментарии • 290

  • @NeetCode
    @NeetCode  Год назад +73

    So are you guys interested in working at Twitter? 😅Btw, don't forget to "Batch" click the like & subscribe buttons.
    🚀 neetcode.io/ - Get lifetime access to every course I ever create!

    • @criostasis
      @criostasis Год назад +6

      You should leave Google for Twitter

    • @sushantbhargav4652
      @sushantbhargav4652 Год назад +11

      tweet this video to Elon , he might make you CEO, he is weird like that.

    • @NeetCode
      @NeetCode  Год назад +6

      @@sushantbhargav4652 lol maybe i should

    • @ytshorts1277
      @ytshorts1277 Год назад +2

      Yes hire then next day fire

    • @wondays654
      @wondays654 Год назад

      @@NeetCode you should look at your website, I tried to go pro but for some reason the google api won’t let me sign up. I don’t know if I’m the only one the problem or if it is general.

  • @Lintlikr1
    @Lintlikr1 4 месяца назад +36

    Being an SWE these days is just insane. Any other job, you'd get hired then learn the system over time and by working with people at the company. As a SWE you have to already know how Twitter works just to get through one of the six or so interviews to get a job fixing bugs or writing new features. Does every other SWE know this shit just from going to school or working in the field for a few years? Ive been a SWE for 10 years and these are all semi-new concepts to me. Ive never once had to design a system like this but I guess now companies want you to be an expert on day one. I thought I could avoid cramming algorithims and system design stuff if I didnt try to get a job at FAANG but now every little startup expects you to be a senior level engineer just to make 140k. I feel like my 10 years of experience count for literally nothing.

    • @garlicpress6121
      @garlicpress6121 25 дней назад +5

      10 Years and you barely did system design? Typically getting up in seniority means having to take a higher level approach to problems and leaving the implementation to juniors

  • @damaroro
    @damaroro Год назад +182

    I would love to see more System Design content !! nice video man

    • @NeetCode
      @NeetCode  Год назад +13

      Thank you, more to come!

    • @sanskarkaazi3830
      @sanskarkaazi3830 Год назад +1

      @@NeetCode I think he meant on your youtube channel haha..

    • @indiging8330
      @indiging8330 Год назад +1

      @@sanskarkaazi3830 obviously what else could her mean?

    • @sanskarkaazi3830
      @sanskarkaazi3830 Год назад +2

      @@indiging8330 neetcode has premium courses on his website as well so not there but here.. you get what i mean?

    • @xoladlamini3675
      @xoladlamini3675 Год назад

      Can you talk about Pinterest, or someone link some available content.

  • @nettemsarath3663
    @nettemsarath3663 Год назад +57

    wow !!! from algorithms to system design, love to see more on system design videos

  • @Dayogg
    @Dayogg Год назад +2

    Thank you for explaining in such detail. I learned about sharding, definitely will use in my projects.

  • @ejun251
    @ejun251 Год назад +9

    Extremely good discussion in this video, more of this please!

  • @angelsancheese
    @angelsancheese Год назад +4

    Looking forward to part 2!!! More in-depth

  • @respondo
    @respondo Год назад +3

    Very much enjoyed the video, the explanation, the simplicity and the clarity it brought out. Thank you

    • @NeetCode
      @NeetCode  Год назад

      Glad it was helpful!

  • @GeorgeHFonseca
    @GeorgeHFonseca 4 месяца назад +2

    Your content is way, WAY better than the others on RUclips! Great work!

  • @kaixuanhu8332
    @kaixuanhu8332 Год назад +25

    Love your content, your video help me land a position at Twitter one year ago. but I just got laid from Twitter and will start checking your video again 😅

    • @NeetCode
      @NeetCode  Год назад +7

      I'm sorry to hear that, wish you the best - it's only a matter of time!!!

    • @tct1787
      @tct1787 Год назад +3

      me too😂😂

  • @hitarthdesai5271
    @hitarthdesai5271 Год назад +3

    Amazing video, this has made me curious about systems design roles in industry

  • @dukekong2412
    @dukekong2412 Год назад +57

    I can't help but find it slightly hilarious that you released this video during the ongoing controversies happening at Twitter.
    But in all seriousness, amazing content!

    • @fauxz3782
      @fauxz3782 Год назад +2

      Musk will hire him

    • @SunilPatil-hs8wd
      @SunilPatil-hs8wd Год назад

      Its because Musk tweeted the HLD of twitter on twitter. You can see that in the thumbnail of this video too

  • @romeopeter1922
    @romeopeter1922 Год назад +2

    Wow! That's a lot to take in maybe because I'm sleepy but sparked at the same time. Put out more of this please.

  • @jordanhasnolife5163
    @jordanhasnolife5163 Год назад +6

    Nice video! Gotta love some systems design

  • @roycechua
    @roycechua 4 месяца назад +2

    I can't believe that I just found this channel now. Great content

  • @eldavimost
    @eldavimost Год назад +15

    Loved it!
    The only issue I see is sharding having all the people who follow each other in the same shard. That's just not possible, as a friend of yours will follow someone in another shard group at some point.
    I haven't got a good answer for that yet, apart from saying we should use a GraphDB here that hopefully is optimised for sharding this kind of data...

    • @arwinvinnysardana3266
      @arwinvinnysardana3266 7 месяцев назад +1

      Yes, that seems like a big oversight. Each shard will have a subset of a users followees, so the proposed user id as a shard key really doesn't do anything for us.

    • @Socsob
      @Socsob 6 месяцев назад

      Yeah I felt like I was missing something when he said sharding and scrolled down to the comments to confirm

    • @salient244
      @salient244 4 месяца назад

      Just paused at that part, seems incorrect. The best sharding I think may be tweet id (assuming using chronological IDs like snowflake) as people are generally accessing the latest tweets so can grab them in a single request if it misses cache

    • @eldavimost
      @eldavimost 4 месяца назад

      @@salient244 yeah, but still you'd need to store the friends relationships somehow and you'd get into the sharing issue when it scales up

    • @TheSdl79
      @TheSdl79 Месяц назад

      You've got it wrong. The idea is to have all the _followers_ of the user in one shard. This way, when the user posts a tweet, you would get all their followers ids from one shard with one query. Then you'd use this list of ids, to update their respective feeds with the tweet. When the user request their feed, they get it pre-computed from the cache, not built on-the-fly.

  • @tiskahar9738
    @tiskahar9738 Год назад +38

    This is a fantastic example of a realistic architecture screen. I would note for viewers that you will almost certainly not be able to think of and describe everything that was covered here and as someone who conducts 3 or 4 of these every week, I don't expect candidates to cover everything here in the 20-30 minutes I have with them. But as you go through this video, the issues presented scale really well with the expectations that go along with the seniority of the candidate and position. We actually skip a lot of the preliminary setup so that we can delve into the more complex issues for more senior candidates. If you're a mid level, I'm not expecting you to come at me talking about batching out feeds and dynamically updating them based on high popularity tweets.

    • @alexd7466
      @alexd7466 Год назад +1

      no, with such test you filter already for ex-twitter employees. That would be fine if you build a social network, but you'd miss out on all the all the brilliant devs who for example designed large e-commerce or data-pipeline architectures, because that requires a very different approach.

  • @jti107
    @jti107 Год назад +242

    I guess twitter will be a case study in “does talent matter” and “how interchangeable/disposable are sw engineers”.

    • @KennethBoneth
      @KennethBoneth Год назад +62

      It will also be a case study on if these software companies are truly over staffed or not. If Twitter survives after laying off so many people it may inspire other companies to consider down staffing

    • @Mattarii
      @Mattarii Год назад +46

      @@KennethBoneth I think the main issue with scaling down on employees is that the remaining employees will essentially have to monitor and handle the same amount of work as before scaling down, which will cause additional stress and probably a less than healthy work life balance.

    • @bryanyang7626
      @bryanyang7626 Год назад +36

      Not really, Tesla and SpaceX both are well known for the horrendous work environment. So it depends on the management and the owner of the company in this case.

    • @Mattarii
      @Mattarii Год назад +17

      @@bryanyang7626 that's true, might not work well with other companies once people start realizing their lives are worth more than slaving away

    • @KennethBoneth
      @KennethBoneth Год назад +19

      @@Mattarii That is true if you were properly staffed to begin with. If twitter is as overstaffed as many people believe, then a large chunk of employees are effectively doing nothing. IF twitter goes from properly staffed to understaffed, you are correct. If twitter is going from overstaffed to properly staffed, then that won't happen.

  • @jacksonashby7471
    @jacksonashby7471 Год назад +1

    we need more of these for sure

  • @tzadiko
    @tzadiko 7 месяцев назад +2

    First time Kim Kardashian has come up in any tech video I've watched

  • @RandomShowerThoughts
    @RandomShowerThoughts Год назад +16

    the biggest thing about sharding is that we could potentially lose the joins, and it adds a huge layer of complexity on the application.

  • @karanbhatia2834
    @karanbhatia2834 Год назад +13

    This level of quality content is available for free, it blows my mind! Also, I am churning through your Blind 75 list of questions and I am loving your solution videos.

  • @thatsJD
    @thatsJD Год назад +1

    I loved your video, very much and thanks a lot for he afford you made. These are the question we actually face when you are working on the BE side.
    One small question,
    If someone asks you, what kind/type of architecture is this? What will be your answer?

  • @josephp1263
    @josephp1263 Год назад +1

    I almost spilled my coffee when i heard the word "How hard can it be?" LOL

  • @user-cy6uq7qd4m
    @user-cy6uq7qd4m 9 месяцев назад

    which tool are you using to draw the diagrams?

  • @roxhensm.8071
    @roxhensm.8071 Год назад +1

    What software and device do you use for the drawing?

  • @gmanonDominicana
    @gmanonDominicana 10 месяцев назад +9

    Once I had an interview explaining how to design something. I totally missed the point. This definitely give us a clear idea.
    It's not about writing a user story, and not even building the actual application, but identifying the most critical points and possible components and to come up with how to solve it.
    Thanks again.

  • @andrewlee7574
    @andrewlee7574 Год назад +18

    What a nice video, I learnt a lot even being a junior developer.
    Btw, how can I find the official twitter engineering paper you mentioned at the end?

    • @antwanwimberly1729
      @antwanwimberly1729 11 месяцев назад

      I’d try checking their engineering blog for leads.

  • @punarvdinakar
    @punarvdinakar 8 месяцев назад

    That initial diss on twitter is everything 😂😂

  • @ROBIN12JBJ
    @ROBIN12JBJ Год назад

    The abstract design is vital! Now I have realized this point.

  • @divyareddy7622
    @divyareddy7622 Год назад

    thank uuuuuuu can you please upload more videos on system design and object oriented design. I know you might be busyy but would mean a LOTT!!!!

  • @maximilian19931
    @maximilian19931 Год назад

    Caching the Feed page in the CDN and purge it on update(feed is tagged with User_ids), the infrastructure is basically a multi layer data retrieval, uid->followee->tweets(sorted by timestamps) and then merge to get the final result.
    The uid->followee mapping can be compactly stored and updated if needed. (K/V or RDB)
    followee->tweets would be a sharded DB with all tweets posted. (K/V).
    it would just be a simple backend and most of the load would be handled by the CDN.

    • @marspark6351
      @marspark6351 Год назад

      That more or less is I think what he described for his feed cache description.
      But it doesn't solve the problem he brings up where we don't want to update all the followers' feed cache whenever a popular user posts a tweet.
      Also, I don't know how to do it, but when you say "on update", I'm assuming that whenever a person posts a tweet, all the users following that person gets "updated". In that case, then only thing that needs to be changed is inserting that new tweet into the feed (and probably popping out whatever oldest or least important tweet that is in the feed that this new tweet will replace). In that case, I don't think retrieving and merging all the relevant tweets each time there is an "update" makes sense. I think that's why he brought up pub/sub. So it's just a queue where whenever a new one comes the least important one gets popped out.

    • @TheIntraFerox
      @TheIntraFerox Год назад

      ​@@marspark6351 Maybe it's possible to determine a "popular" user and when those users create a tweet, only cache that tweet instead of allowing a message to go through the pub/sub when they post a tweet.

  • @mayankkumargupta9601
    @mayankkumargupta9601 Год назад +1

    Literally Amazing man. Take a bow🙇‍♂️

  • @spork1125
    @spork1125 Год назад

    Where do those caches live? Are they separate servers? Or are we caching on the app servers?

  • @OswinChou
    @OswinChou Год назад +6

    If you have the capacity for asynchronously pre-building timelines for all (active) users, why don't you increase the capacity of the cache layer for the RLDB, or store the tweets in a fast KV NoSQL?

    • @TheSdl79
      @TheSdl79 Месяц назад

      Probably, having NoSQL KV-store with such massive reads you'd have to deal with its sharding anyways. Don't think you'd just set up Cassandra and start throwing in nodes to the cluster mindlessly. So, author, choosing SQL DB, just makes that logic explicit.

  • @alexanderradzin1224
    @alexanderradzin1224 11 месяцев назад

    Thank you for interesting video. I however doubt that relation database can store the tweets. I've just asked to design twitter during a job interview and constructed something very similar. But I suggested to use aerospike for messages using the following schema: id->list off messages. Aerospike is horisontaly scaled, so there is no need to think about sharding.

  • @tyronedamasceno6706
    @tyronedamasceno6706 Год назад +1

    That’s amazing how this kind of large-scale system can grow and become so complex with amount of components and “moving parts”, also it’s impressive how it works with a massive amount of users and data storage like petabytes. In the end, I didn’t understand if your solution was using sharding or not on the database, if it is using, how do you solve the issue about the sharding-key, ‘cause it looks like not possible to use the “every account followed by someone” strategy due the reasons you even talked about.
    Is it possible to have sharding and reading replicas at the same time? And how to handle it, using many load balancers, each one after sharding for a single replicas cluster?

    • @lucassaarcerqueira4088
      @lucassaarcerqueira4088 5 месяцев назад

      I was left with the same impression. I don't see how this sharding could work

  • @ankitasingh734
    @ankitasingh734 Год назад

    Simply amazing content

  • @slaytyxperry
    @slaytyxperry Год назад

    Thank you man

  • @randysong823
    @randysong823 Месяц назад

    Great video! One question (or perhaps a mistake), in 18:20, you say all the people this guy follows should be on one shard but I don't think that's possible. If person A follows B and C, then B and C should be on one shard. if person E follows C and D, C and D should be on one shard, but its already on a different shard. Maybe B,C,D are all one shard, but as long as each person follows another different person, we will only have one shard.

  • @dannysi1234
    @dannysi1234 Месяц назад

    This is great! Thank you!

  • @somebodyoulove
    @somebodyoulove Год назад

    This is great. I loled at 0:48 .This video is neet.

  • @asdfasdf9477
    @asdfasdf9477 10 месяцев назад

    One of the defining features of twitter is timely notifications about new tweets from people you follow. Could you please describe how could it be implemented in this architecture? Likes and comments allow users to attach their content to a potentially popular tweet. How would it affect our storage layer? What challenges, if any, we would face with multi-az deployment of such system? Thank you for your time and interest in our company.

  • @rajatsaraf237
    @rajatsaraf237 Год назад +1

    If we shard based on a used id, won't it become a hotspot (if user is a celebrity or has large no of tweets)?

  • @siddharthsingh7281
    @siddharthsingh7281 Год назад

    I was waiting for something like that

  • @zertbrown4642
    @zertbrown4642 Год назад

    my IT classes coming in clutch

  • @programadorpython
    @programadorpython 6 месяцев назад

    omg, you're insane. thank you!

  • @_jko
    @_jko 7 месяцев назад

    Don't forget ads. Imagine how complex this whole thing becomes when we add in ads.

  • @ourangzebkhan6516
    @ourangzebkhan6516 11 месяцев назад

    which hardware you use for writing?

  • @kewtomrao
    @kewtomrao Год назад

    Wat tools do you use to draw?

  • @marspark6351
    @marspark6351 Год назад

    I have a question on how on 23:46 on how that "update of the feed upon request instead of during when a tweet is created" would work.
    So would the feed of a user keep continuously get updated via the message queue whenever there's a new tweet, except for the tweets of the popular one? And when that user requests the feed, it will somehow just fetch that missing tweet and fill it in the feed? How would that work?
    Isn't that the same issue as what it's described at 19:57 where 19 of your 20 tweets could be cached but you'll have to go to the disk to find that one tweet?

    • @TheSdl79
      @TheSdl79 Месяц назад

      Before returning the feed, the app server would check if the user follows any celebrity (one query to follow table). Then get the tweets of the celebrities which user follows from the cache, and inject them into the feed based on the timestamp. This approach has significant downsides like increasing latency for all users, so I believe this problem is addressed differently in real world.

  • @rizthetechie
    @rizthetechie 9 месяцев назад

    Agree on the part that, the data is more on relational side. But why can't we put the tweet in any NoSql db like cassandra, scylla. As from our follow table i know which followee's tweet i have to fetch. Now that i know, i simply have to search in shards the followee's tweet stored.

  • @ivanjermakov
    @ivanjermakov Год назад

    Speaking of popular users. We can separate tweet data by some follower threshold (say 10k followers) and, when popular profile post a new tweet, we only need to update that feed. Every normal profile will check that feed in case they follow popular profiles.

    • @SameAsAnyOtherStranger
      @SameAsAnyOtherStranger Год назад

      So...use the average Twitterer's tweets as load dampening. They should do that. It will make Twitter even less popular.

  • @dantedt3931
    @dantedt3931 10 месяцев назад

    Great video. Learnt a lot.

  • @kSergio471
    @kSergio471 9 месяцев назад +1

    If sharding by user id then, to retrieve a single tweet (e.g. by a direct link), you would need to request all shards. Is it something tolerable or how do you overcome it?
    And what about hot user problem? Sharding by user id does not work well in this case.

    • @TheSdl79
      @TheSdl79 Месяц назад

      Yep, but there is no requirement in this case to be able to request tweet by id directly without knowing the author of the tweet.

  • @mehrdadk.6816
    @mehrdadk.6816 Год назад

    Thank you so much for this video and its good content. Actually one thing to correct maybe is that 12:24 it's not good to save authorization token in db due to security reasons. so maybe if one says that in interview , the interviewer thinks the interviewee does not care about this, and reject him/her

    • @zhenghaohe4727
      @zhenghaohe4727 Год назад

      do you mean by passing user ids along with the request implies that the auth token is stored in db? because I don't see him mention it explicitly in the video where to store auth tokens. Also out of curiosity where do we store the auth tokens then?

    • @cesarvspr
      @cesarvspr Год назад +1

      @@zhenghaohe4727 we don't store them, we validate them against our secrets

  • @veliea5160
    @veliea5160 Год назад

    I understood why the userId helps as shard key but I did not understand why choosing "tweetId" as shard key does not help. Why to we have to query all the shards if we shard based on "tweetId"? can someone explain pls?

  • @akashbhardwaj7810
    @akashbhardwaj7810 Год назад +18

    What books / sources did you refer to get a strong grip on system design?

    • @NeetCode
      @NeetCode  Год назад +29

      DDIA is the most comprehensive resource (assuming you have at least some experience).
      Also, most companies (including twitter) release blog posts and white papers about technical challenges they faced and how they overcame them. I think many beginners miss these, but they are an extremely valuable and free resource, which is why they are commonly referenced by system design textbooks.

    • @akashbhardwaj7810
      @akashbhardwaj7810 Год назад

      Thanks!!

    • @sezer6200
      @sezer6200 Год назад +1

      @@NeetCode Is there a central url where you find those blog posts or do you just google them?

    • @meepk633
      @meepk633 Год назад

      A good place to start is by learning the classic OOP design patterns. It's less about the OOP and more about the patterns.

  • @Sudarshansridhar
    @Sudarshansridhar Год назад

    I don't even have a twitter account or did get the reall need.
    So do the interviewers gives inputs what is the twitter is used for?

  • @jenokalinszki1696
    @jenokalinszki1696 Год назад +1

    I am a little confused about the DB schema - can someone explain why would we favour indexing based on the follower rather than the followee? What's the advantage here?
    I would assume the former is more logical to implement but I can be wrong.

    • @NeetCode
      @NeetCode  Год назад +4

      If we wanted all the people that user1 follows (in order to generate their news feed) we could run a query like:
      SELECT *
      FROM followers
      WHERE followers.followerId = user1
      Notice we are filtering by followerId.

    • @ketanambati4413
      @ketanambati4413 Год назад +2

      Whenever we create the newsfeed we want to populate it with tweets of people that a user follows(followee). So when we index the follower, we can query the followees relatively quickly, meaning that we can get all the people that a user follows, which makes it easier to create their newsfeed.

    • @ismailmo4
      @ismailmo4 Год назад

      I understood it as: when the timeline is loaded and we need to populate tweets, you're going to be querying for tweets based on the follower of that tweet as opposed to the person being followed (followee).
      So if we say the user loading the timeline is the current_user a query (in a simplified world) would be like:
      SELECT tweets.content FROM tweets WHERE tweet.follower_id = current_user.id
      Note how our WHERE clause is on follower_id of that tweet and NOT the person who wrote that tweet (followee).

    • @jenokalinszki1696
      @jenokalinszki1696 Год назад

      I see. Thank you all for explaining this!

  • @progdynamic3114
    @progdynamic3114 Год назад

    I have a question. in most of the read internsive applications . most of the design is to add a cache layer like redis to block the db traffic. Can i not add any cache but add as many as read-only replicas of mysql to distribute the traffice ? as cache also need to consider the sync problem between redis and mysql. but read-only replica can get rid of this hassle .

    • @marspark6351
      @marspark6351 Год назад

      I would believe this has less to do with whether it's SQL or noSQL, but probably more to do with that Redis makes better use of RAM than mysql. Don't take my word tho. Just a possible assumption

  • @ismailmo4
    @ismailmo4 Год назад

    great video!

  • @Thomas-lv1dc
    @Thomas-lv1dc Год назад

    Ngl as a aspiring software engineer, I find this video helpful in terms of macro design. New video style over the different duties of a software engineer? 👀👀

  • @johnsaenzc
    @johnsaenzc Год назад

    Gracias - Thanks, great video.

  • @yiyao1522
    @yiyao1522 Год назад +8

    Correction 9:01 We can also implement sharding in most nosql databases.

    • @NeetCode
      @NeetCode  Год назад +5

      That's correct, I meant that while NoSQL is easier to scale (automatically or by specifying a shard key), we can still scale relational DBs via sharding.

    • @-_______________________.___
      @-_______________________.___ Год назад +2

      Nice catch boss

  • @daph7017
    @daph7017 Год назад

    What program did you use to draw?

  • @IAmNumber4000
    @IAmNumber4000 Год назад +1

    If the interviewer is Elon, all you need to do is remember the word “turboencabulator”.

  • @marspark6351
    @marspark6351 Год назад

    12:48
    Can you clarify what you meant by "I shouldn't be able to pass in your uid"?
    Are you saying that function should actually not take uid as input?

    • @StockDC2
      @StockDC2 Год назад

      Pretty sure he means that someone shouldn't be able to use something like Postman to send a request with someone else's user id and retrieve all of their tweets.

  • @DarrienGlasser
    @DarrienGlasser 6 месяцев назад

    Great video, I even got a similar answer so I know it's good ;D

  • @arthur723
    @arthur723 Месяц назад

    At 18:12, how do you manage to get all the users one follows in a single shard? It seems strange to me. If that can work, then all the users need to be in a single shard, which fails the purpose of sharding.

  • @zuowang5185
    @zuowang5185 3 месяца назад

    why do you index on follower, instead of making 2 db index on both

  • @PhillyHank
    @PhillyHank Год назад

    Thanks!

  • @thekauer
    @thekauer Год назад +1

    Would it make sense to only store the tweetId of the tweets in the feed cache, so when someone popular edits their tweet, the edited version will probably be in the tweet cache already, from where we can quickly grab it?

    • @merick1453
      @merick1453 Год назад

      You’re already pushing tweet related info to the feed cache why would we limit it to tweet id only? That’s actually more of an overhead since we’ll need to do another request to actually fetch the tweet detail. Also for update we can always use a lastUpdate timestamp to compare and only push to the cache if it changed

  • @ayumi5621
    @ayumi5621 Год назад

    Can someone please tell me what drawing tool he use here?

  • @KellsCode
    @KellsCode Год назад +2

    What software do you use to record drawings like this?

    • @NeetCode
      @NeetCode  Год назад +6

      Paint3d and streamlabs obs

  • @semenivanoff8615
    @semenivanoff8615 6 месяцев назад

    Number of users doesnt matter as you should design scalable system that grows in building blocks.
    And as userbase grows you add blocks.

  • @yilmazbingol4838
    @yilmazbingol4838 Год назад +1

    People watch netflix, I watch neetcode.

  • @hakimmalik6995
    @hakimmalik6995 Год назад

    Nice Video, how about design of an online bank ?

  • @sindhu8480
    @sindhu8480 Год назад

    Can you please do video recommendation design

  • @smittyplusplus
    @smittyplusplus Год назад

    I would send the tweet timestamp from the client. If you handle it server-side and something breaks and delays the server-side ingestion of the tweet, you'd have an incorrect timestamp. ("Wow, what an amazing touchdown!" posted 2 hours after the touchdown and way out of context on feeds etc)

  • @Brosales1414
    @Brosales1414 Год назад

    I'm confused on how pub/sub works? can anyone explain to me what its suppose to do? if you can explain like I'm five that would be great!. THX

  • @MrRetroboyish
    @MrRetroboyish 8 месяцев назад

    I appreciate the effort and care you put into this video but I think it could use a little more focus. Especially at the sharding-for-writes portion. You jumped around a lot to digressions that made that line of thought hard to follow.

  • @erickim89
    @erickim89 11 месяцев назад

    Found this system design playlist: ruclips.net/p/PLmtNcpUq3YIJequI5FneNkiEGiHmwm3_o

  • @chrishabgood8900
    @chrishabgood8900 9 месяцев назад

    considering how many joins you would have to do in a relational DB, it would be hard to justify that for twitter.

  • @maywilliams82
    @maywilliams82 5 месяцев назад

    It will be helpful if you present it in a more realistic interview Q&A kind of scenario, as often the interviewer interrupts the process, asks a different question, or asks to take a different approach. The mocks presented only as a monologue do not serve that purpose.

  • @SreekantShenoy
    @SreekantShenoy Год назад +1

    Neet: How hard could it be?
    Candidate: *sweats profusely seeing Elon* 😥

  • @tukkanen
    @tukkanen Год назад

    I wouldn't combine reads of tweets with "reads" of videos into a single number of data we're going to read from our "storage" as storing videos and streaming videos and storing and reading text tweets + meta data are completely different tasks which access and deals with data in a completely different way.

  • @michaelscofield2652
    @michaelscofield2652 3 месяца назад

    I would argue you need an index on both followee and follower because in twitter you can see both ways

  • @gazijarin8866
    @gazijarin8866 Месяц назад

    There shouldn't be any userId in the POST /v1/tweet/create endpoint. This is because we will get the id of the user initiating the request from the authentication token in the request header. Putting sensitive information like authentication tokens in the request body is a security risk

  • @deeptishetty6074
    @deeptishetty6074 Год назад

    Great video. Working the hashtag in to this design would have made it even better.

  • @jasonswift7468
    @jasonswift7468 Год назад +1

    Hi NeetCode. Coud you use the 4k adaptation video? make the video look higher definition. Thank you very much.

  • @suba_sah
    @suba_sah Год назад

    "They recently fired everyone so Twitter needs someone who knows Twitter beforehand" LMAO

  • @kinshaabid3063
    @kinshaabid3063 Год назад

    Nice ! could you do part with how the data is index and search optimised ?

  • @i.eduard4098
    @i.eduard4098 Год назад

    Never had a twitter account. Idk how to even use it. I suppose I can do the CRUD for tweets, and the chat between users with SingalR, but the feed would be limited to hashtags or simply categories a user has the highest count.
    Anyway I dont even have a job and I would do a shitty demo in angular, who am I to talk about this.
    The sharding, indexers I really have no experience and a lot of other shenanigans.

  • @Nonchalant2023
    @Nonchalant2023 Год назад +1

    so what's a batch RPC? Asking for a friend...

  • @Angelslo690
    @Angelslo690 Год назад

    Why you need relational db, all this relationship data you can store in document db as json for high performance, low latency and scalability. Usage of relational db will not be efficient in this scenario because we need to achieve high availability, we need eventual consistency so NoSql Mongo db is preferred over relational db in this scenario. Correct me if I am wrong.

  • @DANIELEVI1234
    @DANIELEVI1234 Год назад

    Hi, can you elaborate please on choosing sql database?
    you've mentioned, Joins for exmaple but Mongodb also supports joins
    and naturally supports sharding.
    Also, can you please elaborate on strategies of sharding sql databases?
    Thank you

  • @okramoffacebook1381
    @okramoffacebook1381 Год назад

    Twitter has more engineers than HR

  • @____r72
    @____r72 Год назад

    You have such a nice voice

  • @ankitsheoran1788
    @ankitsheoran1788 5 дней назад

    If user A follows B and C and B follows back to A then all three should be on same shard and same way if B follows 10 more people and even one person follows back then all those 10 should be on same shard and it goes on with all data on single shard . looks like very abstract way , i am not sure why people not think little more rather thn explaining that abstract way