System Design Interview: Architecture of Amazon, Flipkart like e-commerce system with @gkcs

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hello and welcome to sudoku today we have a special guest with us and he is a repeating guest on our channel and today we are going to talk about system design of one particular domain which has actually revolutionized the startup ecosystem in india as well as in other places as well so we are going to discuss e-commerce design you all know him very well he is the founder of interview ready dot io mr god of sane and also known as gkcs and if you have still not checked out the course on low level design by him on interview ready dot io please go check it out and you can also use the magic words pseudocode to get a 20 discount now without getting further delayed let's get started [Music] they are going to discuss how someone builds an ecommerce system like in a system design interview and gaurav is going to act as the candidate and i'm going to act as the interviewer but please keep in mind that this is going to be a discussion and this is going to be a design that how he would design it or how he would go about the design or how i think about that design this doesn't mean that this is the final solution or this is the best answer you are you are free to share your opinion you are free to uh share what you think but also try to absorb as much as you can from what gaurav has to share here and how he would go about solving such a problem in a real system design interview let's say you are leading a team and you have to build an ecommerce system the and you have a team around it you have to come up with the vision and the idea of how the architecture is going to look like so how would you go about designing an ecommerce system okay so when when we're talking about e-commerce um the first thing i would do is i would probably go to the founders in this case it's you yogitta you are the product management and i would start asking what is the what is the requirement what is the problem that we are solving uh and you know how will the users be interacting with this system so can you give me some example of an e-commerce system that you're specifically looking for or a problem that you're trying to solve sure so right now let's say that we have to start with an mvp and we are planning to build a system like amazon or flipkart where you have an inventory of products so definitely we want to have an inventory of products and we want to display that inventory to the users where users can search for products and then they uh can place an order and we we have delivery systems in place to deliver uh the placed order to the respective address uh so we don't have to worry about the delivery tech we only have to worry about uh you know putting up a website uh so that a web app or website so that people can look for the uh products that they want to buy uh they can add the products and they can make the payments so and after that uh everything is taken care of like once they put the order in the cart and they make the payment everything post that is taken care of but we want this tech in the place first that they should be able to search for a product uh add that product to cart or multiple products to cart and make payments uh we can go into the details of these sections if you like but let's start with with a high level uh view first like how would we go about this okay okay so this is this is great so the example that we can take is amazon or flipkart and like you said uh this the standard way in which let's say i would buy a product is to go on their website and then say i would check out their inventory so i would probably have some sort of search feature it's very often that i search for a specific thing uh like for example right now ganesh chaturthi is going on so a lot of people are searching for uh puja items like worshiping items so that's something that you can search uh amazon then lists that in in the you know search as a search result uh let's get to this in some time this is the inventory that we have in the back end uh we also need some sort of delivery maybe status updates uh some way to update the delivery itself the status of a delivery so i'm thinking in terms of a state machine right now but yes let's again keep that aside we need something in delivery when it comes to payments users should be able to pay in any currency that they like we could have different domains for different countries in which case they can pay only in one currency that will simplify the process a little bit apart from that they need to be able to connect to any payment gateway like let's say paypal or stripe or or any gateway through which they can make a payment right okay that that is that's one of the key features then payments and we also have the concept of a cart where people are adding items to their shopping cart so you can add items you can remove items um you don't need to order items you don't need to do anything else apart from that you can change the quantity of the items like you can increase the quantity of the items or decrease the quantity of the items apart from adding and removing different items right so okay so for a particular let's say product id you can change the count of those items in an ad or a remove operation okay okay now after that is done after i add items to my cart i go to checkout and after i've checked out yes the delivery process starts so i'm thinking right now in terms of a user like what is my life story i went on the website check the inventory got the list added to the cart made the payment and then i am waiting for a delivery so this will require let's say notifications okay through email or sms for my status updates or uh yeah that that should be or an app also is possible i am thinking about anything else like for a delivery there are status uh updates okay so you're thinking like order tracking so the user can track the order they can know where i think that's that's the exact term yes uh order tracking is something that users need this i've written it in red but it's important uh that's why yeah i'll do a double mark okay okay so as a let's say if i have a team then what i would do is i would try to figure out what are the what are the highest priority items and then also see in terms of how a user is using this app and then choosing the ones which have the maximum priority and are being used in the start so that if i start that way as a user story i'll be able to pick those items which impact the user the most and therefore be able to roll out a minimal viable product as soon as possible so i think all of these are super important but uh the most like basic thing to even start with the app and to allow other developers to work in parallel is to attack this part that is the inventory okay because because all the uh all the services that we have after that are depending on this so okay okay so an inventory has search search items and get them on a list okay so uh okay before i wrap them out sorry uh yogita is this fine i mean i'll fail the interview i know so that's okay so before we deep dive into the component of inventory i would like to know like let's say these are the four components that we are looking from a high level right would you like to go with a with a with one system monolith system or would you right away split it into micro services what are your thoughts so initially i would go for a monolith the monolith would be having the inventory system initially and then what i would do is most likely i will split this system as things get more and more complex for example uh you know for a very large organization like amazon maybe maybe the listing is a service in itself when you get results you want to pass them in different ways and different services are consuming this in different ways that's an engineering decision but uh right now i mean i'm assuming that you know there's a one-hour interview firstly this is the other thing is that the team is going to be small initially so let's start with the monolith for the inventory that would be my suggestion uh and then as we you know get bigger as a as engineering uh you know effort we can actually start splitting sure sure and what are you thinking about the delivery payments and card like are these going to be different services deployed on same infra or these are going to be different services deployed so as long as i can stick them all in one service i wouldn't say one service rather i can create different repos for them so that it's a little easier to work with them uh and deploy them individually but having said that when it comes to uh like the let's say true microservice architecture where databases can be independent uh in fact they are suggested they are actually told that they should be independent databases uh there should be uh you know they should be running on different machines or containers now it probably doesn't matter initially but like you said there are millions of users who are probably going to be using this app so eventually we need to move on to that make a you know very smooth deployment process have proper metrics logs these are absolutely critical when you're thinking about product quality that is testing also is involved in that but right now i'm i'm thinking about making a very simple product which can actually just take queries and survive and build something maybe my personality or something has changed since since uh the startup interview ready like it's it's now just let's survive and then you think about the big things later no that's that's absolutely fine because as i mentioned in the start of the interview that you have a small team and first you have first we are building the mvp and we are not looking for scale right now so i think that going with the monolith is a is a good decision right now but also keeping in mind that we design and develop in a way that it is easier to decouple later on like we don't get entangled in the you know uh havocs of monolith and not be able to separate yeah i agree that you what your concern is absolutely correct uh if our architecture is not extensible or if it is let's say very difficult to debug or you know if there are serious problems in the architecture in the start our product will not scale and even as the product team you will be unhappy so i would have not done justice as an engineer to this then so i'll try to keep it as scalable as possible definitely oh i mean extensible yeah okay now we can uh dive into inventory and start okay so in an inventory right now i'm just looking at how can users see products how can uh you know which is basically one thing if you look at technically like this is just one thing actually and the other one is to add items so this is happening let's say in the back end that will require usually administrators or support staff or operations teams dashboards for them to go and add an item amazon is a you know c2c service so to speak like customer to customer so i can go and sell products on amazon so amazon is probably going to give me a dashboard to add products to it do you want me to look into that side also which is adding products or listing products in amazon yeah so if we if we will go on that side that will become a system in itself where you have to handle adding of products like one product at a time or products at a time and right so uh let's focus on first building let's say that you already have an inventory we have an inventory of say like hundreds of thousands of products we just have to bring that onto the system and then implement search and list for them and categorize them so we can focus on that and adding products we can leave it right now as out okay awesome that's great because uh that that actually makes it a totally customer or consumer facing side of things okay so i can i can focus on that part initially we have a user who needs to actually get something from the inventory so they are sending a search query to us it's the search has some text or we can call this the query string this query string has to be matched with all products which are related to this so i would use the server this connection is made you're actually talking to it and you are the protocol let's say is http i mean i'm not too concerned about protocol right now okay so initially we have this server the server needs to go to the inventory database and there's multiple ways in which we can fetch products so one way would be to do a select star from products where name uh equal to let's say this string so string and then we put a wildcard character and then we say okay fine this is what we need to search for give me all the products which are like this um and then you are ordering by you know whether how many products you have or how close it is but this is a very naive way of thinking according to me because there might be something in the description also which has this string somewhere inside it so it's not just that it has to start with this name but it can be anywhere in the description it can be in some other part let's say metadata tags of the product you might want to tag products so i'm i'm not totally convinced that using a building a solution in-house makes sense here i would go for a you know off-the-shelf solution like elasticsearch also uh do you think uh even if we go with this solution like first uh if the first one uh do what do you think about the performance of this query so the problem with this query yes like you said the performance of this query even if we put an index on this is it should be fine it depends on what kind of read should i say i hope we don't have too much contention when we're doing reads on this so if a person is adding a product from the back end and we don't really care whether that product is shown immediately to the user or not that level of consistency or that level of isolation if if we don't care about which is probably the case when a person is doing a search query uh then the performance will be fine uh you can you can say that hey is the name having this string as a prefix which is performing pretty good unfortunately that's not what the user is looking for if a user is looking for let's say yeah yeah plant or something then garden plant is not going to be picked up here or any tulsi plant all the user experience is very bad so this is probably not going to suffice but like you said performance is like okay not necessarily great if if i say name equal to string and description or i mean this is all description equal to wildcard string wildcard this means that does the does the description contain this string so this is going to take a long time uh and we can only use one index on yeah inside this that is the technical detail i wanted to touch upon which you have very successfully clarified so i do agree that uh there is no point in reinventing the wheel and using uh an already available solution which would make much more sense so then you can continue with your idea about elasticsearch okay that that's that's great so i can basically use elasticsearch because it does give us a fast queries text search it's a it's a text search engine it's marketed as that it is designed as a nosql database it's not a it's a nosql data store which has keys of product so product id is the key and it will have the product details as a json blob okay so now searching in this is done by elasticsearch how it does this internally is a mixture of tokenizing the string and some algorithms text search algorithms but the good thing is as a as a high level systems engineer i don't need to look into this would you like me to go into details on this or no so this this detail is clear i have one question though the elasticsearch data store that you're going to use is that going to be the source of truth or you are going to store the inventory in some other data store and index the products here like what is your take that's a that's a very good question so if we have a let's say a back end uh place where dashboard through a dashboard people are able to add products i would probably use a nosql i would probably use a rdbms storage here the main reason being that i want high consistency here i don't want i mean elasticsearch also gives us consistency this is more like a data dump area so it can be a file system also yeah it won't be the source of truth this elastic search because if i want the that's a good question actually can users directly come and just add a product to elasticsearch initially i don't see any problem initially if a user wants to add a record to elasticsearch the product id according to me that is fine and in fact even later on let's say millions of users are actually reading from elasticsearch as long as i have the the read guarantees as pretty simple like you know if a person let us say is adding a product at time stamp 100 and over here they are searching at time stamp 101 and the database takes 10 units of time to actually commit it so they will not be able to see the product even though the product was actually added to the database so there is no locking mechanism or there is no way to get that record do i care right now i don't see the problem in this right maybe i'm thinking too simple maybe i need to think a little bigger yeah so let's say as long as elasticsearch is used for searching the products and users are the only client who are reading from elasticstore elasticsearch store this looks fine to me right but now let's think about that the product inventory that we are building right that can be and obviously this was not in the scope of the interview but if we think about future because we still we are building the mvp but we still want this to be scalable in future right so let's say there are other services which want the details of product so let's say a user will not require the the background details of the product like who is the seller or who is the manufacturer or who has uploaded this product and how much stock is there right but there are other services which are going to maintain all this inventory right and they also need to read from uh the product inventory so do you think that having the shared data stored for different services to reach from would be a good idea or we should have uh like this should not be the source of truth and we should have uh uh you as you have suggested like a different rdb rdbms solution for having product inventory yeah i uh after hearing your uh you know that's a very very good point in future we might have we might have a lot of details firstly about the product which are being entered that we don't want an elastic search elasticsearch provides a certain benefits but uh it may be expensive to store all that data and i mean effectively we are storing that data for some users so when i say product id and product details this might have how many units sold also ideally we don't want to keep it in the same place but yeah yeah so we don't want to get this record out every time we get the product id because the users don't need it so okay in terms of security in terms of relevance in terms of and like you said in terms of the the source of truth i don't think elasticsearch should be the person i think it should be periodically getting this data as a dump from an upstream rdbms so the way i would do it is i would probably have a service which people can upload products to so these are sellers sellers add products they give these details and then once this product is added to this database where the the schema is well defined so everything about a product is known and if you need some metadata specific for this product then we can give you a json tag for that but once that is done maybe asynchronously you can tell elasticsearch to you know take this product also so you can put it in a you can fire two queries one for rdbms which you are really really concerned about to give a right answer and the elasticsearch one can go after the rdbms gives you a successful response yeah like after it it is it this would be like a synchronous thing right so that after dbms has successfully said that this is with me then only we update uh yes that's it that's a very good point to mention uh in an interview without me asking for it uh now so from from this design it looks uh clear that we have yes for the search for the searching and listing of the products you have the service and you have the service to add the products also which is like an added feature and the data modeling for um products in es and rda rdbms is clear as well now uh so i think this is something that uh that is fairly uh logical and what everyone is doing and this this is scalable now i want to uh uh i want to know about like once you have built this system this inventory system how would you go about monitoring and debunk debugging it like what do you think uh could be uh problems uh which would happen once we deploy this solution and how are you going to make sure that you are able to debug and fix those problems okay okay those are those are some really interesting questions uh when we are talking about monitoring a system one of the things that i would do uh is to make sure that so on the product side there are a few things if or even more interesting let's go to this one the most common problem that i have seen when it comes to payments is that a user makes a payment and it's not registered on our website so if a user says pay for a product id and then we send them to effectively we give them a let's say paypal page we redirect them to the paypal page and they make the payment after this is done we should get a response they should be redirected to our server again where we are going to tell them thank you for purchasing the product this can fail yeah paypal giving us a response also can fail so the worst part is not when the user response fails because that is like they can retry and they'll be fine they can go in the worst part is when paypal's response fails so uh in that case what happens is the user is left hanging they are not sure whether the product has been bought or not their bank will be showing that the money has been debited but we will we will say that no we are not sure so in such a case there should always be some sort of monitoring in this part so what i would do is i would probably add a email and sms firing so we give paypal a web hook that in case there is a successful payment please hit this url with the payment details like this person paid this this much amount for uh this item so when the web book is not hit in the in 10 seconds that time an event firstly a purchase event is created let's say so right now i'm not going for event driven architecture because that itself is uh a different video yeah yeah so we can we can do an rdbms thing like a thing so you know you have a purchase or purchase id or order id so the with the user id you'll also have other details like product and everything but i'm ignoring them for now and i'm going for status so status is purchasing so when it is purchasing i know that the payment has been authorized by the user and paypal has been shown that payment however the payment has not given me a success or it has not given me a failure also it's stuck on purchasing and if if this is longer than let's say 15 seconds or 20 seconds or even uh you know more simplistic uh for a minute then we are sure that there's something wrong here so you're using this state as a as a way to monitor the state of uh potentially failed payments like that could potentially yes yes yes so if if within 10 seconds we are not getting this so now what do we do we can write a cron job which checks whether the status of purchasing is there on a database for more than 10 seconds we could also have the cron is effectively pulling records from here we could also have a notifier which which pushes these alerts to let us say a channel like a slack channel if the team is heavily involved in looking at this or it can send that alert as an sms some way or the other we need an alert on our system that something has gone wrong and this is like this is a red alert this has gone horribly wrong so we can also like if we are really advanced we can also go and create a ticket on jira which our support team can get and then they can look into and do stuff i remember in uber this was a very very seamless kind of system so because every uh every ride which is a support ticket costs them a lot of money it's equivalent to many profits made of trips sorry for digressing again but no it's okay [Music] in this case yeah we do need alerts so this is this is the part of where like you have uh very uh nicely covered uh the failed payments and how to have alerts on them now let's say that you are scaling and the queries on search are slowing down or for some queries uh there are a lot of misses like there should be hits but there are misses how do you think uh we can monitor that so okay now for that one of the things we can do is we can keep dashboards and so initially we need to we need some metrics we need to be able to measure how well our system is doing and we need to first define some parameters as to what system health means so one of the things that we can do is we can keep a health check kind of service which ping systems and make sure that they are live whether things are going fine and not so every five seconds or every 10 seconds it pings the server and checks whether things are working like the regular health check endpoint yes yes yearly health check just like that this is doing a five second health check uh if you don't get a 200 okay then you know then there's something wrong so um in the next in five seconds if you don't get it that's a problem uh and if you miss two heartbeats then you can say that it's not just that the person did not respond to one heartbeat maybe there's a there's a temporary fault but two are like uh probability is very high that the server is down so assume that the server is dead uh and you can then fire a alert to an engineer and even if you have like basic systems can also restart themselves so you can have a script which you trigger um as an api like the head check service can try to restart this service if it misses two health checks this is the most standard solution uh but of course what you are asking for is a little more you know involved than that that is metrics so in metrics the kinds of metrics that i would like to have in my server would be let us say requests on order service so i'm writing this very small but requests like received how many uh how many were dropped off let's say so how many requests time out okay then you can have how many requests had a general error so where am i going to get these metrics right so in case you raise if you get a request your system might raise an exception and when you raise an exception you don't just return that to the user with a 500 uh error you can also say or 503 error you instead send that error back to the system and also asynchronously you you'll be logging yes but you'll also be sending it to a metric system so the metric system can be something which is pulling from your logs and checking the logs for errors and you know info statements error statements and then giving you these metrics or it could be directly being pushed to in which case you might be pushing these directly to a database yes uh or you can push it to kafka where all services like this is i i have gone too big again sorry all the services are pushing to kafka and kafka then is consuming these logs and sending it to us consolidated metric service the benefit of doing that is that for a single request id or for a single order id you can actually track the the logs for the entire system if you go and push them all in one place we are thinking about a single server now but when the system gets sufficiently large and complex it's very hard to debug without having a clear pathway of the request going so that would be that would be one thing that i would like to have uh but the most basic metrics that i can do in this system now is you know how many are being served how many are being accepted and how many are timing out or having errors uh if if this number goes above a threshold let's say so this threshold can be configured manually then again fire sms or fire fire some sort of an alert if you want this to be dynamic there are certain algorithms uh which which do that i think i think one is uh winterhoff or there is an algorithm which is basically adaptive it goes along with the graph okay so i i think we have covered uh the monitoring part now uh one part that i i think we uh completely missed is uh how do we plan to store the images because products are going to have images as well uh apart from district and obviously we were talking about search here so it was not the focus but if in order to complete our inventory service and uh so we have covered the text and the searching part the only part that is remaining is how do we plan to store the images of the products and serve those images right so if we are going to store the images of a product i'm definitely going to be using some sort of cheap mechanism to do that i'm going to be storing it in the file system because if i store the images in a database okay would you would you i'm sorry i should clarify are you looking for a specific example for an image storing service or are you looking for you know what could be the possible solutions for image no so uh so even if we are building an mvp so uh from the perspective of building an mvp or one uh es store and one search service is fine right but we also have to store the images right because we uh like even for mvp storing images and serving images along with the search results of the product is required right so i i'm just looking for how would you go about it if you have multiple solutions in mind you can share those but in the first version how would you go about it right so what i would probably do is when the product is being added they're also going to be uploading an image along with the product or multiple images or maybe even tiny videos maybe 30 seconds or one minute long in which case i'll be using i'm comfortable with using s3 as a blob store so s3 is an object store but it can it can store images therefore what s3 will do is it will actually upload this image to a place and it will give me the link through which we can access this image so the benefit is that s3 is really cheap that's one thing uh the second thing is all the stuff that is there in a database like mutability or transaction guarantees they are not really necessary in a file so we are not going to be mutating the file or doing any sort of transaction on it uh so i don't need that the the other thing is like i don't want to uh you know i want to separate out image storage and database data storage so that i can treat them differently in case i need to do some sort of file parsing or something and any kind of security issues which are there when it comes to accessing s3 will also be there when accessing a database so security is as good so the main major cost the major reason for me choosing s3 will be cost this is where i would go and upload the image if anyone needs the image i just send them the link for the image uh and they can go and upload download it themselves so on the use on the browser when a person is looking at a product i don't need to give it as a response i just give it as a link and then this is a publicly accessible link it reminds me one of the things like if you delete a product you have to be careful to go and actually physically delete the image also otherwise what happens is the link stays and this is something that google photos very recently i think they had a problem with this that if the link stayed then you could go and see it so you could randomly check anybody's link yeah i'll go for s3 so where do you plan to store this link in your in your current system so that whenever a product is searched and the result is written so how would you make sure that the product result and the correct image is returned with that product right so when it comes to the source of truth uh the link is also something which is critical to the product so i will be storing it in this rdbms as a column so maybe not as one column maybe i can store it as i have two options either i store it as multiple columns like image one image to image three uh or i can store it in a separate table so i will denormalize i'll say that this is the product id with all its relevant metadata and there is a image table where i store the product id pid and i store image id so one product can have multiple images here so product one has let's say three images image id one two three one two four one two five and the links also on s3 so i think this looks like a pretty uh good mvp for an inventory uh service or a or a catalog or product management system uh this will cost a few lakhs yes that's it so i think i am done from questions from my site but uh would you like to add something or would you like to point out something uh if you if you have any kind of observation or improvements on this system feel free to share that otherwise like my end of questions is done honestly like i'm i wasn't able to get to payments uh i wasn't able to get to the rest of the stuff that i said that uh you know there may be order tracking which is required or payments that is required which goes to show to some extent that maybe i am either going for a very simplistic approach uh or it could be that the problem itself is pretty complex and we are digging into rabbit holes in different areas it could be a mixture also both i think in this particular system i have been very very conservative when it comes to making any promises or or designing things maybe an irrational fear has entered me so uh but in general yeah it would be nice if you can explain so as a as a as a person who's applying for a job my focus would be to explain what i'm doing much more than how is this going to happen or how you know how i'm going to actually uh implement it in the real world so all the decisions made by me should be backed by logic and through communication so that the product and i am on the same page i'm not sure if that is what is happening currently in the in the system design scenario where people are like okay let's let's bring in the heavy gun off you know this is just one million dollars that's it yeah this is none yes so if if i have to so now i mean uh we can get to the part where i can share my feedback yes yes i'm sorry i know i have failed yes but please go on no so first of all um you have not failed and secondly in any system design interview like we do this on a regular basis we do take system design interviews it is not possible for anyone to design an end-to-end system in 45 minutes right even if we you and i try to build videos like where we are sharing how would we design a system of amazon or flipkart or uber in 45 minutes become well prepared with all the boxes and components in our head and then we draw it in 45 minutes side but in a real world system design interview like we were trying to uh mock right now you give an overall design and then you just drill down on one component or two components because i just wanted to test the understanding like your understanding when it comes to building scalable products like right so i i got to know that you know about data stores you can you know the factors that have to be thought about whenever you are trying to choose a database or trying to make decisions for storage of data which you uh showcased here using ess store rdbms ns3 then it comes about whether you are able to think about the problems or not right when i mentioned about monitoring you were able to think about problems beyond this scope you were uh you just you not only mentioned the problems uh with uh search uh systems and request you also mentioned what could be the problems with payments and then on the go you suggested a solution so that just goes to show whatever you are doing here that can scale to build other services right just just uh the way we scale our systems your solutioning uh skills or your problem solving skills are also scalable to other services right so as an interviewer i don't need to know all of it right i just need to have a have a window into your mind like what are the areas you can solve or what are the areas uh you are lagging or you need feedback or you need some inputs which happened here right so and so i think this this was pretty good and for for an interviewer uh if you just know uh what you're talking about and you're able to build an mvp what was asked uh that that is good and i also liked that this was more of a discussion rather than one person driving the interview which i think this is how system design interviews are right people do the interviewers also get to learn a lot from the candidates in system design interviews because you know it comes from experience and domain knowledge and you know a lot of work that we have done previously so that is that is my feedback if you like you can share my feedback as an interviewer like how did you feel in the interview were you comfortable enough did you feel like i am giving you a lot of cross questions i i wanted to ask you what the job role is about and you know what's your daily life like in the job now i was just but uh enough jokes what i should uh i i will probably ask you that uh what do you what do you think i could have done better this is not a great question to ask in an interview but i am asking you because this is of course uh you know a mock interview the other thing would be that my feedback for you as an interviewer i think you were excellent you were very patient you were you didn't you know just tell me that okay stop stop thinking about that just move ahead this is obvious or you know why aren't you thinking big or something that no one says that directly but there are uh indirect ways to put that forward like so you were very kind actually and uh you didn't do that which kept my confidence till the end to finish thank you thank you for actually doing that because there were times when i thought that i'm i'm uh skipping over a lot of the details or or feeling too hesitant to dig deep into let's say off-the-shelf solutions just just add more components to the system uh there is that uh i could have done that but you were you were really kind to me not to not to ask me to do that but yeah in case you you know if you had to give me some scope of improvement or if you had to give like in general uh how would you say that this system was overall okay so i think uh that you did well when it comes to the inventory system and you went in a lot of details and you covered a lot of things right the only thing uh so first of all this is you are meeting the bar and what was expected right uh what could have been you know you could have done extra to impress the interviewer or you know like going extra mile like uh you could have started with a diagram of first the components like how the journey of a of a user would be and then just focus on one component and drill down but having said that that is just only a nice to have it is not a must-have and coming back to like not uh interrupting or not you know stopping you as an interviewer so this is not an interview to test how would you perform in pressure right this is an interview to uh judge and measure your problem solving skills right if i would have to measure how do you perform under pressure i will give you a 45 minute coding interview and ask you to solve two medium questions from lead codes [Laughter] okay okay i i don't know whether that was a bit of sarcasm that was real but thank you so much yogita for for making this possible thank you for actually setting this up entirely um it's wonderful uh to always get together and talk about engineering problems like this and also to see where we are standing right when push comes to shop where are we standing actually right thank you for doing that as you can see this is a pretty involved process if you're looking for more detailed videos on system design you can check out yogurt's channel that's exactly where we are do subscribe to the channel do like the video if you like it there's a lot of system design concepts that yoga has talked about in a playlist that's in the link in the description also if you like even more detailed videos on system design from me then head to interviewer dot io we'll see you next time thanks a lot gaurav for taking our time and being here and telling our audience and viewers how to go about solving problems in system design interviews as he said if you uh like to watch uh basic fundamentals of system design please follow like share and subscribe to pseudocode if you want detailed interviews on system design and in-depth concepts please head over to goddess channel the link is in the description and you already know and also if you're preparing for the interviews and you're looking for more detailed videos on low level design and concepts like consumers and producers even driven systems etc you should check out his course on interview ready dot io the link is in the description and don't forget you get a 20 discount if you use the code pseudocode please spread the word please like and share this video it can be of use to so many people and do subscribe to my channel and his channel and we will see you in the next video thank you [Music] you
Info
Channel: sudoCODE
Views: 284,899
Rating: undefined out of 5
Keywords:
Id: 2BWr0fsDSs0
Channel Id: undefined
Length: 45min 22sec (2722 seconds)
Published: Sat Oct 02 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.