Damn! This is the best tutorial video on TH-cam for system design I have seen so far. You managed to get in the details, draw a sufficiently elaborated system, explained how you should think without actually doing it and still managed to finish it within 11 min. Thanks for your work! 🔥👍
I work in Amazon , such a detailed and crisp video is hard to find that cover all the core concepts . Thanks again for sharing this valuable information
Hi Pratiksha, I have a few questions for you: 1. Can you please add the inventory table schema? 2. The inventory DB is a SQL DB, right? 3. The inventory DB has to have strong consistency, correct? 4. At which point do you deduct from the quantity on the inventory table? On a successful order? (most likely not when someone adds it to their cart, right?) 5. Do you lock the inventory item at some point to make sure no one orders an item that is about to become (or just became) 0 in the inventory? 6. When you pull information to show a product to a user, you also pull the quantity from the inventory? (is that not more expansive?) I would appreciate your answers, thank you!
I like the flow you captured from the user requirement to the scaling part. Can you come up with more such videos so that we can frame our mindset in solving such HLDs. May be it's better if you could also talk on what these components do exactly & what are there alternatives. Overall, this seems to be a productive one. Thanks for such videos, hoping for more such videos soon
Excellent and crisp explanation.Just a few questions.1. Why do we need a cartDb? As this is a temporary data and will not be required once an order is placed for the cart. It may be redundant in that case. But it will be useful if the user wants to retrieve the cart information later on. In my opinion, we can manage both Cart and Orders using a single DB.Same goes with inventory DB and order DB.We can use a single DB to manage both.And we can manage recommnedations using the search service itself as the source of truth is the search history db managed by Search Service.
When user add items to the cart but doesn’t complete the order and leave the site, you can keep those items in the cart when they revisit. I agree with your suggestion that you could manage that in the order database, by simply adding an additional column to indicate whether the order has been placed or not. I don’t think it’s such a good idea to have one database for inventory as well as orders, they’re essentially two different types of of data. When they’re separate, you can archive historical orders but if you maintain inventory in the same table, design is not as clean.
Could you please discuss the product inventory database please? I'm not clear on the flow and what you're storing to check and update inventory. Thanks
how are these valuable information is available for free. You are amazing thank you so much, even if I dont clear my interview (which I am hoping I will), but the knowledge you are sharing here is out of the world. Cant thank you enough! :)
Hello Ma'am or infact I can say Pratiksha as in IT culture we don't call Sir or Madam anyone. Your video is truly nice & the way you taught and expressed this concept is really great. There are many tutorials and the tutors teaching on YT refer to themselves having experience in top product based companies. But, from your teaching style, I am influenced and your concepts are really strong and it definitely looks like you are working with Amazon and you can really switch between product-based companies.
@Pratiksha Bakrola , keep up the good work. Very concise, to the point, in fact I like the speed of the videos it helps cram things faster before a system design interview. Much better than many ex fang swe's whose videos I have seen . Appreciate it.
Very Basic design. Most of the time talked about the DB designs. Looking for the how product search is implemented, order transactions which will be interesting for the interviews. You talked about the scalability but didn't about the how you are going to implement via deployment or maintenance point of views
Thanks for taking the time to share your thoughts! Normally, your system design interview will be for one hour. If you remove the initial introduction with your interviewer and last few minutes for Q&A, you will have only about 45 minutes for the actual interview. If you can cover the design , elastic search, transaction processing system, plus deployment and maintenance point of view, Go for it!! But if you take all of that in requirements and don't complete the design, it reflects poorly on time management skills. Also, if you take on too many features, you may not be able to provide in-depth explanations. So, choose wisely!!
@@pratikshabakrola normally, user management is same for all the use cases. In interview, if its specially mentioned about ecommerce then you should focus on ecommerce related topics. Like how you are going to design your product catelog, cart management, order management. Covering only user management for the sake of time killing its not a good idea. 1hr is a huge time, to showcase your skills you should concentrate the other aspects apart from user management. Wisely from an architect POV, interviewers looking for how you are handling scalability, resiliency and how you are bringing out of the box ideas.
Great video! The part where you scale all the services was pretty quick and hand wavy. I would have appreciated some explanation as to how the message queues, etc. do what you said. But overall extremely helpful and succinct.
Excellent Design covering from requirements, estimation,DataModelling,API's & drawing all service components in detail. Appreciate your effort & its a great content for system design. Keep going!! only suggestion is why cant user client talk to cart service directly and some message queues between services are not needed.
as i randomly searching system design arch for e-commerce website this video is just a perfect match but i think this much type of deep dive is not needed for my product. Really appreciate your efforts and yes i understand how will i suppose to do things before starting actual implementation. 👍👍
This is really helpful and useful video for system design for beginners. Please add more videos from the above playlist. Your knowledge is really helpful for beginners in the software development.
Good work. Thank you. You have forgotten to add address ID as a FK in User table so that you can FK it to address table where Address ID is a PK. Pls check it out or LMK if my understanding is incorrect. Thanks.
thanks for your video. can you explain please the usage of MQ for the search service and addToCart service? I'm not sure I get the idea why to use it instead of Rest API
hi pratiksha , may i know in which platform were you doing the high level system design . the the entities that you were using were the default ones or were you needed to download some extensions ?
I loved that you built the architecture following an ordering of usage (search to order status) and base implementation to improvements (services, DBs and then caching , archives) I just had one concern. Is it good to have one single service touching more than one database ? Also maybe horizontally organizing the system design in layers like web tier, app tier, data tier would improve the readability of the overall architecture by avoiding entanglements in the design. Thanks very much for sharing your knowledge :D Please post more of that content!
I have started watching your videos. Just amazing. Way better than a lot of TH-camrs. Specifically, your videos are to the point, and save a lot of time unlike other 1 hour videos. Keep the good work going. Full Support🙂 keep posting such videos
Hi Pratiksha, Great explanation.... just one question, why does Search service and Recommendation service needs to interact with Add-to-cart service ? add-to-cart service can be directly called with productId and userID to store in db.... any specific reason for that communication ? because for as it is a microservice, it should be highly cohesive, also these services requires high availability then why un-necessary increase the work load?
Thank you for putting this together. A couple of notes. The video seems sped up at certain parts and normal in others. A little jarring to follow. Personally, I see Search/Cart/Order as separate services. I would expect a direct interaction from User to Order or Cart Service and not through Search Or Reommendation.
Hi, Thank you for taking the time to share this. It usually takes a few hours to film the whole video and i sometimes talk faster(especially when i get tired). I will pay attention to the pace at which I talk. Regarding the Search/Cart/Order service. There are multiple right ways of doing something. So, You can have them as a separate service if you like. My thought process is: You saw a recommended product on your homepage and decided to add it to cart or You want something, you will search for it and add it to the cart from the search results. Hope this helps! Thanks,
❓Question - Why do we need to pass UserId to every api call param as we can extract it from the api session itself? (Assuming APIs are accessible post to user login)
Thank you for creating such an awesome video that helps to learn about System Design based on real-life product. Could you please share downloadable links or images of the System Design (non-scaled and scaled) that were shown in this video?
How and when is the Product inventory DB getting populated? And once an order is placed, shouldn't it decrease the number of items from product DB as well as Elastic search cluster?
Great video on System Design good part of this video it is fast forwarded so to recap it's easier to come back and review, Thanks for creating it. At 5:10 You have opted to use NoSQL DB for order data to avoid 2 tables. Can that approach apply to user data? storing both user details and addresses in one place using NoSQL DB ?
I just wanted to let you know how much I loved your content! It was absolutely fantastic, and I can't wait to see more. Do you think you could upload some more soon? I'm really looking forward to it.
Hi Pratiksha, Thanks for this video. I have two doubts, 1. what is the use of message queue in search service and get recommendation service? 2. You have mentioned everything as db, so are they maintaining everything in separate db as product db, search history db, recommendation db, and product inventory db?
When to use SQL vs NoSQl is clear. But how do you decide between documentDB vs keyValue in this case? Like why did you use KeyValue in the customer reviews and not document DB?
I see you have recomondationDB -> But we have millions of active users -> It will not be scalable if we are stroing user specific recomondations right ?
Was not expecting this much knowledge in span of 10min.
Amazing content
first time , I am decreasing the speed of videos 😄
Ha ha !
Qq❤q❤@@pratikshabakrola
@@pratikshabakrolaqq
😎👍
Same 😂, btw useful ❤
Damn! This is the best tutorial video on TH-cam for system design I have seen so far.
You managed to get in the details, draw a sufficiently elaborated system, explained how you should think without actually doing it and still managed to finish it within 11 min.
Thanks for your work! 🔥👍
I am so glad to hear this, thank you!
I work in Amazon , such a detailed and crisp video is hard to find that cover all the core concepts . Thanks again for sharing this valuable information
Its so amazing that you completed it in just 10 mins, where other UTUBERS take more than 30. ❣
Thank you :)
I'll suggest to focus more on
How Payment Service, Order Service and Inventory Service interact and how they hold the lock etc
Can you please mention the tool that you have used to draw the flow chart?
I am using free version of excalidraw
@@pratikshabakrola can you tell me which library u used for icons
Hi Pratiksha,
I have a few questions for you:
1. Can you please add the inventory table schema?
2. The inventory DB is a SQL DB, right?
3. The inventory DB has to have strong consistency, correct?
4. At which point do you deduct from the quantity on the inventory table? On a successful order? (most likely not when someone adds it to their cart, right?)
5. Do you lock the inventory item at some point to make sure no one orders an item that is about to become (or just became) 0 in the inventory?
6. When you pull information to show a product to a user, you also pull the quantity from the inventory? (is that not more expansive?)
I would appreciate your answers, thank you!
it looks you just gave me whole idea of system design in one shot
I am glad you found it helpful and really appreciate you sharing this!
I like the flow you captured from the user requirement to the scaling part. Can you come up with more such videos so that we can frame our mindset in solving such HLDs. May be it's better if you could also talk on what these components do exactly & what are there alternatives.
Overall, this seems to be a productive one. Thanks for such videos, hoping for more such videos soon
First time for me as well reducing the speed of the video. Really good job at drawing the system design! Thank you!
Amazing content, giving so many i things in less than 10 min, superb.
Excellent and crisp explanation.Just a few questions.1. Why do we need a cartDb? As this is a temporary data and will not be required once an order is placed for the cart. It may be redundant in that case. But it will be useful if the user wants to retrieve the cart information later on. In my opinion, we can manage both Cart and Orders using a single DB.Same goes with inventory DB and order DB.We can use a single DB to manage both.And we can manage recommnedations using the search service itself as the source of truth is the search history db managed by Search Service.
When user add items to the cart but doesn’t complete the order and leave the site, you can keep those items in the cart when they revisit. I agree with your suggestion that you could manage that in the order database, by simply adding an additional column to indicate whether the order has been placed or not. I don’t think it’s such a good idea to have one database for inventory as well as orders, they’re essentially two different types of of data. When they’re separate, you can archive historical orders but if you maintain inventory in the same table, design is not as clean.
@@pratikshabakrola Sorry for the typo.I meant same DB for product and inventory.Its not orders.
Very informative video...thank you so much. What tool did you use for draw the diagrams?
Excalidraw, I guess
Could you please discuss the product inventory database please? I'm not clear on the flow and what you're storing to check and update inventory. Thanks
how are these valuable information is available for free. You are amazing thank you so much, even if I dont clear my interview (which I am hoping I will), but the knowledge you are sharing here is out of the world. Cant thank you enough! :)
Hello Ma'am or infact I can say Pratiksha as in IT culture we don't call Sir or Madam anyone.
Your video is truly nice & the way you taught and expressed this concept is really great.
There are many tutorials and the tutors teaching on YT refer to themselves having experience in top product based companies.
But, from your teaching style, I am influenced and your concepts are really strong and it definitely looks like you are working with Amazon and you can really switch between product-based companies.
@Pratiksha Bakrola , keep up the good work. Very concise, to the point, in fact I like the speed of the videos it helps cram things faster before a system design interview. Much better than many ex fang swe's whose videos I have seen . Appreciate it.
Awsome !! Only thing i wished, if I can get the the whole flow chart as an image or pdf. Would have been a great help.
Thank you for this video.
Please what tool do you use to implement the design?
Very Basic design. Most of the time talked about the DB designs. Looking for the how product search is implemented, order transactions which will be interesting for the interviews. You talked about the scalability but didn't about the how you are going to implement via deployment or maintenance point of views
Thanks for taking the time to share your thoughts!
Normally, your system design interview will be for one hour. If you remove the initial introduction with your interviewer and last few minutes for Q&A, you will have only about 45 minutes for the actual interview. If you can cover the design , elastic search, transaction processing system, plus deployment and maintenance point of view, Go for it!! But if you take all of that in requirements and don't complete the design, it reflects poorly on time management skills. Also, if you take on too many features, you may not be able to provide in-depth explanations. So, choose wisely!!
@@pratikshabakrola normally, user management is same for all the use cases. In interview, if its specially mentioned about ecommerce then you should focus on ecommerce related topics. Like how you are going to design your product catelog, cart management, order management. Covering only user management for the sake of time killing its not a good idea. 1hr is a huge time, to showcase your skills you should concentrate the other aspects apart from user management. Wisely from an architect POV, interviewers looking for how you are handling scalability, resiliency and how you are bringing out of the box ideas.
Video is informative. Thanks for sharing the info in quick time.
I don't know this happened to me or all Playback speed was fluctuating.
Sorry about the furcation on playback speed. I will pay closer attention to that next time.
Great video! The part where you scale all the services was pretty quick and hand wavy. I would have appreciated some explanation as to how the message queues, etc. do what you said. But overall extremely helpful and succinct.
Could you please name the icons library you used in excalidraw? It looks perfect.
Excellent Design covering from requirements, estimation,DataModelling,API's & drawing all service components in detail. Appreciate your effort & its a great content for system design. Keep going!! only suggestion is why cant user client talk to cart service directly and some message queues between services are not needed.
could you please mention the name of library you used for drawing in Excalidraw ?
+1
Same question
Best content for hld
Please continue with the videos
Will do! thank you!
as i randomly searching system design arch for e-commerce website this video is just a perfect match but i think this much type of deep dive is not needed for my product. Really appreciate your efforts and yes i understand how will i suppose to do things before starting actual implementation.
👍👍
Great to hear!
This is really helpful and useful video for system design for beginners. Please add more videos from the above playlist. Your knowledge is really helpful for beginners in the software development.
Could you please let me know whats the tool used to do the system design diagram
Very insightful and densly packed. Thanks👍
Good work. Thank you. You have forgotten to add address ID as a FK in User table so that you can FK it to address table where Address ID is a PK. Pls check it out or LMK if my understanding is incorrect. Thanks.
Nice video. Which tool is used to make the system design diagram?
You can use excalidraw
Excellent..! Well Articulated.
Thanks for sharing. Nice speed flow given me More info in Less time.
Please do keep sharing.
Thank you, I will
Have to decrease the speed in order to catch up lol. Very good content!
Great content and great skill to deliver great content👏👏
Very concise and to the point. Thanks so much!
Can you please tell me about the tool used for system design diagrams
what tool did you use to draw the system?
Great content!! Where can I find the draw tool and the library of images for each component? That would be greatly beneficial !
Very detailed explanation, by the way, which tool are you using to design?
You made it look so easy and understandable! Keep up the good work !
Glad it was helpful!
thanks for your video. can you explain please the usage of MQ for the search service and addToCart service? I'm not sure I get the idea why to use it instead of Rest API
hi pratiksha ,
may i know in which platform were you doing the high level system design .
the the entities that you were using were the default ones or were you needed to download some extensions ?
Great content! and very clear explanation ! Thank you !!!!
How can someone be so effortless. Ireally enjiyed watchubg whole video . Seriiusly❤❤
Thank you so much! Appreciate that
Why are we not using SQL for order database when the requirement states you need high consistency for it?
I loved that you built the architecture following an ordering of usage (search to order status) and base implementation to improvements (services, DBs and then caching , archives)
I just had one concern. Is it good to have one single service touching more than one database ?
Also maybe horizontally organizing the system design in layers like web tier, app tier, data tier would improve the readability of the overall architecture by avoiding entanglements in the design.
Thanks very much for sharing your knowledge :D
Please post more of that content!
There are many ways to optimize the architecture, Thanks for taking the time to call out other considerations!
Yes, more videos to come soon!
I have started watching your videos.
Just amazing.
Way better than a lot of TH-camrs.
Specifically, your videos are to the point, and save a lot of time unlike other 1 hour videos.
Keep the good work going.
Full Support🙂
keep posting such videos
Thank you so much! 😊
Hi Pratiksha, Great explanation.... just one question, why does Search service and Recommendation service needs to interact with Add-to-cart service ? add-to-cart service can be directly called with productId and userID to store in db.... any specific reason for that communication ?
because for as it is a microservice, it should be highly cohesive, also these services requires high availability then why un-necessary increase the work load?
crisp and very relevant to interviews. estimations are good again wrt to interviews . thank you
I guess you are referring to table when you say database here right ? For example address db, product db etc.
Thank you for putting this together. A couple of notes. The video seems sped up at certain parts and normal in others. A little jarring to follow.
Personally, I see Search/Cart/Order as separate services. I would expect a direct interaction from User to Order or Cart Service and not through Search Or Reommendation.
Hi,
Thank you for taking the time to share this. It usually takes a few hours to film the whole video and i sometimes talk faster(especially when i get tired). I will pay attention to the pace at which I talk.
Regarding the Search/Cart/Order service. There are multiple right ways of doing something. So, You can have them as a separate service if you like.
My thought process is: You saw a recommended product on your homepage and decided to add it to cart or You want something, you will search for it and add it to the cart from the search results.
Hope this helps!
Thanks,
Spot on ! Loved this
Useful, Insightful and Thoughtful system design videos before Interviews. Thanks Pratiksha :)
Thank you for the feedback!
Wooww! Amazing. This is by far best system design video for amazon! Keep posting :)
Thank you so much! This made my day!
❓Question - Why do we need to pass UserId to every api call param as we can extract it from the api session itself? (Assuming APIs are accessible post to user login)
Improvement Points: for Search API -> add query parameters for pagination
Do not use verbs on service names - can combine Order Service into one
Excellent call out! Thanks
Top Tier explaination, very informative 👍
Glad you think so!
Thank you. This was very helpful.
Glad it was helpful!
❤ awsome vedio...can I clear my system design interview by watching all your vedios?
Nice. Whcih tool did you use for the block daigram ?
The tool is called Excalidraw. I am using the free version with System design libraries.
This is super simple, neat, and helpful! Thank you!
Thanks for sharing this feedback! Appreciate it
Could you explain why did you add messageQ, won't the search and add to cart operations by synchronous ?
Great content, learned a lot of new things. Thanks a lot
Pratiksha, which tool are you using to draw these diagrams/blocks of system design?
Very nice tutorial ma'am. Very helpful. Please make videos like this, it truly helps us.
Thanks for sharing the feedback, more videos to come soon!
Nice video, can you please share the excalidraw libraries you used to get the wodgets ?
I am using : System Design Components by @Rohan Pithadiya
Great video, the structure and information of your presentation are the best, thank you!
Wow , amazing step by step explanation 🎉🎉🎉🎉 subscribed ❤
Keep up the great job !!!!!
Cant wait to watch more videos like this
Thank you so much :) :) More videos to come
single best resource online
Thank you so much!
most underrated i still wonder how this channel has such low sub count.
What tool are you using for whiteboarding?
Thank you for creating such an awesome video that helps to learn about System Design based on real-life product. Could you please share downloadable links or images of the System Design (non-scaled and scaled) that were shown in this video?
Thanks for sharing the feedback, i am working downloadable links.
Thanks for making this so easy to understand. Can you tell what tool are you using for this design diagram?
Thank you so much! I am using Excalidraw. It's a great collaboration tool, you should totally check it out.
Could you please create a video for the database design of Swiggy or Zomato?
Your video is absolutely stunning! ❤ Great job!
Thank you!
How and when is the Product inventory DB getting populated? And once an order is placed, shouldn't it decrease the number of items from product DB as well as Elastic search cluster?
Very good madam please keep to making these videos
Thanks, will do! Appreciate your feedback
Thanks @ Pratiksha Bakrola for the awesome explanation in very short video. Could you please mention the tool name used for system design creation?
Thank you so much!
The tool is called Excalidraw. I am using the free version with System design libraries.
Great video on System Design good part of this video it is fast forwarded so to recap it's easier to come back and review, Thanks for creating it.
At 5:10 You have opted to use NoSQL DB for order data to avoid 2 tables. Can that approach apply to user data? storing both user details and addresses in one place using NoSQL DB ?
I just wanted to let you know how much I loved your content! It was absolutely fantastic, and I can't wait to see more. Do you think you could upload some more soon? I'm really looking forward to it.
Thank you 🙏🏼 more videos to come soon!
Thank you, really very informative ✅💯
Glad it was helpful!
Hi Pratiksha, Thanks for this video. I have two doubts, 1. what is the use of message queue in search service and get recommendation service? 2. You have mentioned everything as db, so are they maintaining everything in separate db as product db, search history db, recommendation db, and product inventory db?
May i know the tool you have used to draw the design
Which tool u r using to demo..?
Great explanation in short time .
Thank you so much!
When to use SQL vs NoSQl is clear.
But how do you decide between documentDB vs keyValue in this case?
Like why did you use KeyValue in the customer reviews and not document DB?
Thank You for this awesome explanation
Thank you!
The video is very easy to understand. Kudos on that. May I know what software do you use to make these systems?
I am glad you found this helpful!
The tool is called Excalidraw. I am using the free version with system design libraries.
Awesome work Pratkisha. Thanks.
your explanation is good and to the point
Thanks!
I see you have recomondationDB -> But we have millions of active users -> It will not be scalable if we are stroing user specific recomondations right ?
Awesome
Thanks
Loved it. ❤
Which excalidraw library r u using
Great content in short time. Keep it up!
Why the add to card service is triggering order service, not the client or payment service when payment is done
well explained .. need to watch couple of time. thanks
Hey can you share the tool you used to create the system design ???
I am using Excalidraw with system design libraries for quick graphics.