Basic System Design for Uber or Lyft | System Design Interview Prep

Sdílet
Vložit
  • čas přidán 7. 06. 2024
  • Visit Our Website: interviewpen.com/?...
    Join Our Discord (24/7 help): / discord
    Join Our Newsletter - The Blueprint: theblueprint.dev/subscribe
    Like & Subscribe: / @interviewpen
    This is an example of a full video available on interviewpen.com. Check out our website to find more premium content like this!
    Problem Statement:
    Design a high-level system for a ride-sharing service. There will be drivers & riders requesting rides:
    - Rides select their pickup point on a map & can view ETA + price data
    - Riders must be able to pay for their rides
    - Drivers & riders are matched, drivers accept rides
    - Riders receive information about the driver, driver location updates in real-time
    Table of Contents:
    0:00 - Requirements
    0:30 - High-Level Overview
    1:10 - Tight Coupling!
    1:42 - Visit interviewpen.com
    2:01 - Event Bus
    2:34 - Rider & Driver APIs
    4:14 - Database Data
    6:01 - Database Structure
    7:57- Map Infra
    8:39 - Payments
    9:46 - Dynamic Pricing
    11:40 - Rides Service
    12:19 - Uber's H3 (Global Position Indexing)
    13:14 - Matching
    14:22 - Next Steps
    15:43 - Go to interviewpen.com
    Socials:
    Twitter: / interviewpen
    Twitter (The Blueprint): / theblueprintdev
    LinkedIn: / interviewpen
    Website: interviewpen.com/?...

Komentáře • 398

  • @interviewpen
    @interviewpen  Před rokem +16

    Thanks for watching! Visit interviewpen.com/? for more great Data Structures & Algorithms + System Design content 🧎

  • @keyurshah6298
    @keyurshah6298 Před 11 měsíci +145

    THIS IS PURE GOLD!
    It just somehow magically landed in my recommendations and damn, I'm so grateful it did. Just 2 minutes into the video and was convinced to subscribe!
    So thankful to Bobby, he has a great future ahead!

    • @interviewpen
      @interviewpen  Před 11 měsíci +1

      Thanks for the kind words! Have a great day

    • @steverosky
      @steverosky Před 10 měsíci

      same for me too

    •  Před 9 měsíci

      Same thing happened to me, I'm grateful for that!

  • @hectorluis9294
    @hectorluis9294 Před 10 měsíci +267

    I can't believe what I just saw. This man is literally what I want to become in the long term. For me, this video has set up my end goal as a senior. What an amaizing video. Thank you so much. New subscriber here.

    • @interviewpen
      @interviewpen  Před 10 měsíci +5

      Thanks for the kinds words - and thanks for watchinf!

    • @DavidBcc
      @DavidBcc Před 9 měsíci +6

      This is not "senior" by any stretch of the imagination. Any junior / medior engineer can understand and explain these concepts.

    • @hectorluis9294
      @hectorluis9294 Před 9 měsíci +8

      @@DavidBcc Welp, I guess I'm way more junior than I thought.

    • @gewdvibes
      @gewdvibes Před 8 měsíci +35

      @@DavidBccno they can’t lol
      I swear there’s always gotta be someone like you

    • @jaysonp9426
      @jaysonp9426 Před 7 měsíci +11

      ​@@gewdvibes100% 😂

  • @hedsut8864
    @hedsut8864 Před rokem +31

    These system design videos are awesome! Really interesting topic with good visual explaining, keep up!

  • @yuganderkrishansingh3733
    @yuganderkrishansingh3733 Před rokem +88

    Great content. Please make more videos. Content is king. Even though there are tons of videos on Internet about System Design but the kind of clarity that one gets from these videos is unparalleled. It's to the point.
    Worth watching again and again.

    • @interviewpen
      @interviewpen  Před rokem

      Really glad you enjoyed it, we've got more content on the way. Thanks!

  • @pitakibunja7420
    @pitakibunja7420 Před rokem +12

    This channel just came at the right time, when I am doing system architecture, thank you and keep them coming you are indeed contributing to my career growth

    • @interviewpen
      @interviewpen  Před rokem +1

      ok! we'll post more and more! building a team rn

  • @sinnloses746
    @sinnloses746 Před 9 měsíci +1

    This is so good. I have searched for this type if videos but this is very very good. Clean fast forward explanation with much detail. Thank you!

  • @alexsanderhamir8445
    @alexsanderhamir8445 Před rokem +17

    This channel is easily gonna get a lot of subscribers, great content.

  • @PlamenDrop
    @PlamenDrop Před 9 měsíci +158

    I'm not a software engineer or developer, but you just had my eyes glued to the screen for 16 minutes. While I might not understand the concepts in this system design, the way the information was presented was extremely well done and approachable for a wide range of viewers.

    • @interviewpen
      @interviewpen  Před 9 měsíci +4

      Thanks for the kind words!

    • @jjlian1670
      @jjlian1670 Před 7 měsíci +3

      Totally agree. I love how he put things together and it all makes sense to me and makes me want to learn more.

    • @Snprwlf
      @Snprwlf Před 6 měsíci

      no offense, but the reason you like this is exactly because you are not an engineer or developer.
      Almost everything seen in this video is obsolte and just a nice visualization of what the process of creating a real app looks like (which is done without all the painting)

  • @igorsantanas
    @igorsantanas Před rokem +3

    Loved it. Well structured and comprehensive!

  • @mohameddhiazoghlami9802
    @mohameddhiazoghlami9802 Před 9 měsíci +1

    Mate im just speechless, you earned my subscription and this is one of the best videos ive ever watched

  • @muyiwaoyinloye5732
    @muyiwaoyinloye5732 Před 10 měsíci +2

    CZcams reccomended this video to me and 2 minutes into the video, i subscribed to the channel, i can't let this kind of content pass me by, please do more.

  • @user-mo4wq6gl9p
    @user-mo4wq6gl9p Před 9 měsíci +34

    I cannot believe you've placed many valuable topics in a 16-minute video! This was worth more than a 12-hour course! Thank you!

  • @amatreshka194
    @amatreshka194 Před 4 měsíci

    I've seen lots of system design prep videos on youtube especially cause I'm being interviewed right now for Senior BE position and this guy really shows valid ideas on required abstract level. For everyone who has doubts, "yes" this is proper level for senior position and his conceptions are valid for every-day usage with this level of abstraction.

  • @ondrejhadrava4109
    @ondrejhadrava4109 Před 10 měsíci +1

    This is one of the most educative videos I have seen in a long time

  • @ih8tusernam3s
    @ih8tusernam3s Před 9 měsíci +1

    This guy is really good at teaching, very informative and concise, thanks.

    • @interviewpen
      @interviewpen  Před 9 měsíci

      I appreciate that! Thanks for watching!

  • @danielgospodinow
    @danielgospodinow Před 4 měsíci +1

    One of the best systems design videos I've seen! Great job!

  • @kamrulislam8158
    @kamrulislam8158 Před 3 měsíci +1

    The way he explains everything is just pure gold

  • @miettoisdev
    @miettoisdev Před 2 měsíci

    pretty decent take - I've seen some comments on specific improvements, but narrowing the scope of a given problem on SD interviews is A MUST, otherwise you won't make it inside the given time frame. functional/business prioritization on this case was very well done!

    • @interviewpen
      @interviewpen  Před 2 měsíci +1

      Super good point. This was very broad; usually a system design interview will drill into a specific part of this much larger system to see how deep your understanding goes. Thanks for watching!

  • @jesseli5038
    @jesseli5038 Před 9 měsíci +1

    You're very good at explaining! Thanks for this

  • @ANDREWGEN_
    @ANDREWGEN_ Před 7 měsíci

    WxCtly what I needed. I don’t have time to learn syntax, so I generate all my snippets but I need form of macro assembly training to manage larger models thanks a million

  • @mudaserali1862
    @mudaserali1862 Před 10 měsíci

    awesome effort guys please keep up this momentum!

  • @zeydtc
    @zeydtc Před 4 měsíci

    This is absolutely perfect! Thank you so much for sharing!

  • @AhaH-df2fz
    @AhaH-df2fz Před 7 měsíci

    I wish I can lecture the interviewer like this. Very well articulated.

  • @smiley2827
    @smiley2827 Před 10 měsíci +1

    I did not know that spark could be used to solve problems in this kind of project, very informative and detailed explanation thank you.

  • @kraysibadass
    @kraysibadass Před 8 měsíci

    instant subscribe over here. very clear information, amazing content. Keep it up! Thanks

  • @dossantos4415
    @dossantos4415 Před rokem +2

    These videos are so good
    Hope you post more

    • @interviewpen
      @interviewpen  Před rokem

      We will! Stay tuned - we will be posting weekly (try our best to).

  • @LarryMenta1
    @LarryMenta1 Před 9 měsíci

    This is super cool man, thanks so much. Just a small feedback, I clicked on the video because I saw a really nice diagram. I'm a highly visual person, probably like a million others and when I saw your drawings I was a bit dissapointed, not because they are bad but because studying with other people hand writting definetly slows you down like "what does it say here?" Don't take this the wrong way, you are a genius, keep up the good work.

    • @interviewpen
      @interviewpen  Před 9 měsíci +1

      Glad you liked the video! Yeah, I know my handwriting isn't great, and I'm striving to improve that always. Thanks for the feedback.

    • @LarryMenta1
      @LarryMenta1 Před 9 měsíci

      @@interviewpen keep up the good work, you gained a new subscriber

  • @TenthFir
    @TenthFir Před 8 měsíci

    Mind blown... this was amazing to watch...

  • @TheKBDestiny
    @TheKBDestiny Před 9 měsíci

    These types of videos imo are the best as these can get one out of “tutorial hell”. Although challenging - I think it forces me out of my comfort zone and actually makes me think on how to program and shows me gaps in my knowledge. New subscriber - I would like to see more of your videos!

    • @interviewpen
      @interviewpen  Před 9 měsíci +1

      Thanks for the comment and thanks for watching 👍

  • @mokiiblue
    @mokiiblue Před 4 měsíci

    Haven't started watching the video yet but I know I have to subscribe!

  • @GlezMusic
    @GlezMusic Před 9 měsíci

    Def gonna buy interview pen!! Awesome stuff!!

  • @risithmarshall8654
    @risithmarshall8654 Před 10 měsíci

    This is a really good explanation. Thank you for sharing your knowledge.

  • @oscarbarajas3610
    @oscarbarajas3610 Před 3 měsíci

    Good analytical skills man. Congrats!

  • @davidmataviejo3313
    @davidmataviejo3313 Před 7 měsíci

    After seeing this I am definitely buying a subscription in your webpage

  • @s8x.
    @s8x. Před rokem +1

    thank u for making these videos. love to see how u would implement these in code

    • @interviewpen
      @interviewpen  Před rokem

      sure! we can experiment with that - will be releasing more content

  • @victortungiru
    @victortungiru Před měsícem

    Thank you for the this content... What a pleasure!

  • @sijifalore8252
    @sijifalore8252 Před 14 hodinami

    Very well done. Cool.

  • @JimmysNotes
    @JimmysNotes Před 9 měsíci

    This video is amazing and was recommended at just the right time for me. Subscribed within 2 minutes of watching!

  • @giannizamora7247
    @giannizamora7247 Před 9 měsíci

    Insane! Thank you

  • @MosesMatsepane
    @MosesMatsepane Před 9 měsíci

    Excellent architecture work there bud.

  • @katiewashington
    @katiewashington Před rokem +1

    Love this!

    • @interviewpen
      @interviewpen  Před rokem

      thanks for watching - more videos coming soon!

  • @j0131n
    @j0131n Před 10 měsíci

    Got me subscribed! Nice.

  • @leroyombiji5699
    @leroyombiji5699 Před 10 měsíci

    Great content here. Subscribed

  • @speckdratz
    @speckdratz Před 7 měsíci

    Amazing content. Instant sub.

  • @Titanman316
    @Titanman316 Před 7 měsíci +6

    I feel like you can make a whole series on this one problem man, would love to see an extended version of this where you go a little slower and into more detail. Either way, this video is super useful!

    • @interviewpen
      @interviewpen  Před 7 měsíci

      Glad you found it useful!

    • @verb0ze
      @verb0ze Před 7 měsíci

      I agree! Typically during interviews, we'd take an hour to cover one of the many key concepts he addressed here: efficient data storage and retrieval at scale; distributed systems and comms; buy vs build tradeoffs; algorithms to for efficient search at scale; etc. I was very impressed at how good he was at packing all that info in under 20mins, and conveying it in a way that's easily digestible!

  • @awb19892
    @awb19892 Před měsícem

    Fantastic video.

  • @dmitriusold8084
    @dmitriusold8084 Před 9 měsíci

    tbh I am very impressed about a content, that autor produced despite of his young age he has a lot of knowledge in projects and it's greate! I found a lot of interesting things. Thanks a lot!

  • @fruitypie
    @fruitypie Před 10 měsíci

    Thank you, it was interesting and informatively

  • @nelsonjma
    @nelsonjma Před rokem +1

    thanks for the information.

  • @Mike.e
    @Mike.e Před 9 měsíci +1

    This is a fantastic video - lots of content in a short space of time delivered clearly - thanks!
    One question I had was regarding storing of driver locations and loading them into H3 - how would that be accomplished using the DB design here? Or would the H3 index constantly be updated separately? Thanks.

    • @interviewpen
      @interviewpen  Před 9 měsíci

      We showed the two databases separately to show that they can be decoupled, but they certainly could be done in the same one. However, the index would still need to be update separately either way. Thanks!

  • @PrinceKumar-hh6yn
    @PrinceKumar-hh6yn Před 10 měsíci

    Visual explaination was comprehensive

  • @utkarshgupta2909
    @utkarshgupta2909 Před rokem +2

    You got 1 more subscriber. Please keep posting with such a great explanation

  • @messiahscent
    @messiahscent Před 10 měsíci

    im so blown away

  • @joseluna5557
    @joseluna5557 Před 5 měsíci

    Thank you. This is amazing

  • @DanielMontenegro140982
    @DanielMontenegro140982 Před 9 měsíci +9

    Cool stuff! Anyways, I think it is very important to get the requirements as clear as possible before jumping into the design. Ask questions, make sure you are not assuming too much. This solution could be way over-engineered for some cases and it might rise some red-flags among the interviewers.

    • @interviewpen
      @interviewpen  Před 8 měsíci

      Yes, you're absolutely right. This is a super important first step (and our more recent videos try to be better about this). Thanks for watching!

  • @CertificationTerminal
    @CertificationTerminal Před 9 měsíci

    Awesome!

  • @noanir7673
    @noanir7673 Před měsícem

    I was asked to design Über in an interview about a month ago, if only I came across this before

  • @user-lj6rz6rd2w
    @user-lj6rz6rd2w Před 8 měsíci

    This is amazing! As im in a junior developer, this video is inspiring me with verious concepts of the highly efficient architecture in real time situation and suggesting ultimate goal! Thanks for sharing this great insight!

  • @beingnurdin
    @beingnurdin Před 10 měsíci

    This is Gold

  • @christophhollmann
    @christophhollmann Před 6 měsíci

    Love this video

  • @Ikaezboi
    @Ikaezboi Před 4 měsíci

    You know ball dude, keep it up

  • @connorhatcher2202
    @connorhatcher2202 Před 8 měsíci

    Good stuff :)

  • @UsernameR8
    @UsernameR8 Před 2 měsíci

    Great video

  • @deathdefier45
    @deathdefier45 Před 9 měsíci +3

    I've heard Uber uses a structure called a Quadtree to split their map area into grids for easier rider - driver matching.

    • @interviewpen
      @interviewpen  Před 9 měsíci

      Yep, quadtree is another data structure that can be used instead of the H3-based approach discussed here. Both have pros and cons. Thanks for watching!

    • @codr0514
      @codr0514 Před 6 měsíci

      Uber uses H3

  • @CJ-iv4ie
    @CJ-iv4ie Před 9 měsíci

    great video

  • @dalmasogembo7034
    @dalmasogembo7034 Před 10 měsíci +1

    This is awesome! Could you kindly do a video on how to work around the same, like making this a complete project maybe. Thank you

    • @interviewpen
      @interviewpen  Před 9 měsíci +1

      It's tough to cover every part of systems like this in detail in a video (Uber has spent years building their systems), but we try to give you the core foundations you need to get started and to approach similar systems. Thanks for watching!

    • @dalmasogembo7034
      @dalmasogembo7034 Před 9 měsíci

      @@interviewpen Alright, it is still nice, let me try from here, thank you

  • @miettoisdev
    @miettoisdev Před 2 měsíci

    one organization improvement I'd make on the diagram, not only for readability, but also for a better notion of resources management, would be delimiting some domain/namespace boundaries, organizing the services appropriately:
    - Client APIs
    - External APIs / Services
    - Events Bus
    - Internal APIs / Services
    - Data / Storage
    etc

  • @microsnot1900
    @microsnot1900 Před 9 měsíci

    Excellent vid! Thanks!
    Question: What is that drawing tool being used..?

  • @bilalarain4632
    @bilalarain4632 Před 10 měsíci

    excellent

  • @m.syaddad.g.alfarez8914
    @m.syaddad.g.alfarez8914 Před 10 měsíci

    good information. im subscibe you.

  • @swaggerlife
    @swaggerlife Před 5 měsíci

    It was just amazing, I really wish there was some course.

    • @interviewpen
      @interviewpen  Před 5 měsíci

      Thanks for watching! We have a full system design course on interviewpen.com :)

  • @Allyourneedsmet
    @Allyourneedsmet Před 3 měsíci

    You inspire me mehn

  • @KingKingSofa
    @KingKingSofa Před 8 měsíci +19

    Beware that the second you mention a pub/sub system in an interview you may have to touch on the topic of message ordering. The immediate scalability of kafka event streams seems great in paper but if you have to process things like chats in order you may have to make kafka store all the relevant events in one partition which isn't scalable.

    • @interviewpen
      @interviewpen  Před 8 měsíci +5

      Great point. In this system, message ordering isn't a huge concern, but there are certainly situations where this is an important consideration. Thanks for watching!

  • @marvelous812
    @marvelous812 Před 10 měsíci

    Mantap bang makasih

  • @shakeddembo6248
    @shakeddembo6248 Před 5 měsíci

    Hey, first of all great video, great content, exceptional delivery - seriously wow.
    Around minute 6:20 of the video you correctly say that the DB will have to be able to scale horizontally as it is expected to be very large with high traffic coming in. You said, the easiest way to do it is by sharding, which left me wondering, did you consider a noSQL option? Clearly it is easier for horizontal scaling. If so, why did you decide to stay with the relational approach?

    • @interviewpen
      @interviewpen  Před 5 měsíci

      I don’t think sharding implies a relational database, in fact you’re absolutely right that NoSQL databases are far easier to shard. Good thoughts and thanks for watching!

  • @javisartdesign
    @javisartdesign Před 8 měsíci

    like it these architecture use case solutions

  • @fredericherrera
    @fredericherrera Před 9 měsíci

    very good

  • @damianemmanuel9294
    @damianemmanuel9294 Před 10 měsíci

    Thank God I found u

  • @romankastusik7544
    @romankastusik7544 Před 3 měsíci +1

    Hey @interviewpen, great video, thanks! One question I have is why did you go for the server side API app with load balancing rather than an API gateway to access Rides (and maybe other services) directly? I know load balancers and gateways are not mutually exclusive, just interested why you went with one app routing all the client requests?
    Another question is about payments, will the user get payment confirmation on the client side as well? You show in the little diagram that user will receive the confirmation after the webhoot will send the message to kafka, so the server side of the app will be subsribed to the topic of payments filtering by user_id (for example), but how would the client side receive the confirmation afterwards?

    • @interviewpen
      @interviewpen  Před 2 měsíci

      Thanks for watching! Usually when people talk about API gateways, it's a nebulous term that probably means a load balancer. If we want to scale our API, we need some way to route our clients to one of several nodes, so a load balancer is critical. About payment confirmations, this is something we could set up by sending a message to the client over WebSockets after the server receives the message. Hope that helps!

  • @user-vp3xs3gw3y
    @user-vp3xs3gw3y Před 10 měsíci

    It is very important to me levels to development the system like uder

  • @poseidon8680
    @poseidon8680 Před 4 měsíci +1

    Amazing except I needed this 5-6 years ago 😂

  • @tommypaulsen7291
    @tommypaulsen7291 Před 9 měsíci

    great video. What software did you use to make the diagrams and presentation?

  • @maxyushin
    @maxyushin Před 9 měsíci

    Thanks for the video, it's very educative.
    I didn't fully get how global indexes are working. Would appreciate it if you can elaborate on it.

    • @interviewpen
      @interviewpen  Před 9 měsíci

      Sure--a global index is essentially a copy of a database table, but organized differently. This allows us to query the data in different ways efficiently. Hope that helps, thanks for watching!

  • @thenashbridges
    @thenashbridges Před 9 měsíci

    It looks like a rouiting component is missing. Pricing clearly depends on the route length (the mentioned surge just scales this price up) and, sometimes, on traffic jams. You can't calculate ETA without a route. And most client UIs draw the route on the map.

    • @interviewpen
      @interviewpen  Před 8 měsíci

      Routing algorithms are hard, and we abstracted a lot of this logic away. The ETA service will of course calculate a route to get the ETA, the pricing algorithm must take a route as an input, and the route must be sent to the client to display it on a map. Thanks for watching!

  • @giubueno
    @giubueno Před 8 měsíci

    I’ve watched quite a few of your videos and I see that you mentioned websocket, but you don’t elaborate about the impact of that in terms of how to scale it. Thank you 🙏

    • @interviewpen
      @interviewpen  Před 8 měsíci

      Thanks, we'll consider doing a video on that!

  • @okoromahchuck4622
    @okoromahchuck4622 Před 10 měsíci

    Fam, speechless.

  • @arshadalam923
    @arshadalam923 Před 10 měsíci +1

    Please upload more video of system design

  • @Highfiify
    @Highfiify Před rokem +2

    Really great video! How is the calculated price communicated from the Pricing service to Stripe?

    • @interviewpen
      @interviewpen  Před rokem +1

      There's a few ways to do this; the simplest would be to push the price into the trips database before processing payments. Glad you enjoyed the video!

  • @adamjung6855
    @adamjung6855 Před 16 dny

    lisan al gaib, he is the chosen one

  • @Mike_Maxwell
    @Mike_Maxwell Před 6 měsíci

    This is great, now how do I explain requirements to someone who has no idea about uber/lyft or applications in general? You have good intuition here used to synthesize requirements and identify possible issues immediately. That intuition comes from knowing what you're trying to build, for new product development where the final product is not clear, how could we handle that?

    • @interviewpen
      @interviewpen  Před 6 měsíci +1

      You're right, we should've gone through the requirements first before diving into the solution. Our newer videos are much better about this! Thanks for watching.

  • @quentin7343
    @quentin7343 Před 2 měsíci

    excalidraw my dude :)

  • @codingmonkey233
    @codingmonkey233 Před 5 měsíci

    One critical part that is missing in this SD interview is, discussion about different trade offs. e.g. in the matching service, why use Uber's H3, what about quadtree, geohash and Google's S2, what's the pros and cons of using these different methods.

    • @interviewpen
      @interviewpen  Před 4 měsíci

      Good point, there’s tons of options for geospatial indexing. Thanks for watching!

  • @woo_loo
    @woo_loo Před 24 dny

    great video, why a monolithic db? should the microservices not own their own data?

    • @interviewpen
      @interviewpen  Před 23 dny

      Most of the microservices in this design do in fact own their own data! The core database is only being used by the driver and rider APIs, which of course need to see the same data. Thanks for watching!

  • @DedesFewscres
    @DedesFewscres Před 7 měsíci +1

    FYI (for those interested in project and program management) systems design and project management works hand-in-hand. Technical Project Management is breaking these down one by one, little by little then coming up with a solution - that's technical project management. More often than not, technical project managers help the engineers by solving what they cant: meaning issue X is more of a devops issue than an engineering issue, the tpm looks at the problem from an engineering standpoint, asks the devops team how to solve it, creates a plan, budget etc. If you're into firefighting all day, get into TPM, we need lots of people that wants to fight chaos.

  • @chihchang1139
    @chihchang1139 Před 6 měsíci +13

    I think this is kind of a intern/junior level software design, which is good, but certainly lacking in most details that these systems require. For example, when you talk about sharding the database, it's not so easy to say just shard it. Some of the problems with sharding a db using such a key in this way would be referencing and constraint enforcement as well as update request stream consumers and their ordering.
    Also, your "rider and driver APIs" discussion is...flawed. Most of the system design for those APIs should be about actual data modeling and api design. You also can't just say to use "websockets" because it has some very bad tradeoff. For example, sockets are not stateless and requires consistent connection, which you will definitely not have in a driver's mobile phone. Another problem is data consistency. If your data producer sends a message to the socket but the receiver was in a temporary disconnected state; what happens to that request? Also, since it's websockets, who is doing the broadcast? And since cars can "come online" at any point; does the requester keep resending the request? If so, then isn't polling necessary anyways? If the concern is concurrent request scale, it's much easier to shard the api using the same H3 algorithm, isn't it?
    There are a lot more problems with this design, but for a student and assuming an ideal world, this is a good first draft. I would say though that it would be much better to assume those ideal conditions (perfect and constant connectivity, some scale target, some location target, etc), and then to better simplify your solution. I feel like a big problem with this presentation is the use of buzzwords without knowing how they work or what they mean. I'd rather you use fewer techy sounding words and be more accurate with your solution because your interviewer will certainly see right through these buzzwords and you will get drowned with real world problems that you can't explain (like the Kafka network limitations that makes this just not possible as described)
    Also, for this channel in general: this is not a good interview question for system design. Usually, system design interviews are more for mid level engineers so doing it at this scope is not good enough. When I interview engineers for system design, it's okay to start with a broad system question, but it's much more revealing to dive into one specific area because the complexity of a problem is when you have to design in the details. I think even just the payment processing is sufficiently complex to deep dive let alone trying to design every system in Uber.
    edit: I'm a senior software engineer at a FAANG and have conducted 100+ mid level engineer interviews.

  • @hamburgengineer
    @hamburgengineer Před měsícem

    We call these Activity Diagram in UML/SysML

  • @nirshadnijam2291
    @nirshadnijam2291 Před 6 měsíci

    I am not even a software engineer, but this was interesting to watch. The seemingly simple applications that we use in day to day have complicated backends. Hats off to the engineers.

  • @opppo89
    @opppo89 Před 2 měsíci

    Would you go for SQL or NoSQL based DB here? Great video btw!

    • @interviewpen
      @interviewpen  Před měsícem +1

      Personally, I like NoSQL databases for these types of systems since they're inherently designed for sharded data models where related data is stored together. However, it is also possible to use a relational database for this and some developers prefer that approach. Thanks!

  • @EvgeniyBerlin
    @EvgeniyBerlin Před 9 měsíci

    DB sharding by the Trip ID means you're going to use a separate database for each single trip, isn't it a huge resource consumption?

    • @interviewpen
      @interviewpen  Před 9 měsíci +1

      Good question. With sharding, we can use the shard key to algorithmically determine which DB node the record should be stored on--but there's no requirement to have a distinct node for every key. We could have many many trip IDs that all map to the same node, and we can create as many or as few nodes as needed to meet the load. Thanks!