BOOKMYSHOW System Design, FANDANGO System Design | Software architecture for online ticket booking

Sdílet
Vložit
  • čas přidán 3. 08. 2018
  • Learn how to system design BOOKMYSHOW or FANDANGO or Online ticket booking system.
    One of the famous interview question in companies like Linkedin, facebook and many startups.
    Here is the system design diagram : imgur.com/Ij2FqKs
    #bookmyshow #systemdesign #architecture #interviewpreperations #amazoninterviews
    #interviews #learnsoftwaredesign
    Donate/Patreon: / techdummies

Komentáře • 275

  • @orpat007
    @orpat007 Před 5 lety +7

    you are my new favourite on youtube. Keep up the good work. Thanks for such informative videos.

  • @mrinmoym
    @mrinmoym Před 5 lety +120

    Great video, wanted to correct a wide-spread incorrect assumption about Relations in context of RDBMS. A "Relation" in RDBMS do not represent the relationship between 2 tables. Many believes thats the case. But Relation in RDBMS means a "Table". So all rows belonging to a Table is "related" set. In other words Table=Relation and it stems from the Set Theory.

    • @aneeinaec
      @aneeinaec Před 2 lety +2

      Isn't it related to entity relation ship model? Which is relation ship between entities and entities represented by individual table?

    • @Imkflow
      @Imkflow Před 2 lety +3

      @@aneeinaec relationship*** != relation

  • @sachinpabale
    @sachinpabale Před 5 lety +3

    Real good video i saw every video of yours and it really helped me cracking interview of one of the big 4.. i used concepts of this video in my design n architecture, and it really helped me.. keep doing good stuff man..

  • @pandiarajanrajendran4505
    @pandiarajanrajendran4505 Před 5 lety +21

    This is one of the high quality system design content. Very useful. Thanks a lot.
    As others mentioned, I'm also expecting LLD from you. As these days a lot class designs are expected during interviews, like designing a HTML parser, parking lot, ORM framework, DI container, unit testing framework.

  • @MrJaswant10
    @MrJaswant10 Před 4 lety

    Hi Narendra , you have explained the session very well. I am your consistent viewer/user and follow your all system design related series and concept.

  • @TZ-oi4od
    @TZ-oi4od Před 8 měsíci +6

    This is a good example of how an SDE i/ii would design the BMS in an interview, as interviews would like the candidate to talk more about how the 15 mins locking period (book to pay) is implemented and how the tickets are not oversold when the QPS is super high. Narendra I'm wondering how would you do if you are asked to record this video again after 5 years, thanks!

  • @vikashkumarchaurasia1299
    @vikashkumarchaurasia1299 Před 2 lety +1

    Great video , best explaination i have ever seen for BMS on youtube. Thanks a lot

  • @krishnaverma7744
    @krishnaverma7744 Před 4 lety

    I can see you worked hard for this video
    Very clear and easy to understand
    Thanks for sharing

  • @diptidesai7399
    @diptidesai7399 Před 5 lety +3

    Absolutely Superb explaination in just 27 mins...i cleared most of doubts and gave knowledge on the latest techologies like NoSQL. Thank you, Narendra. Great job. May God bless u

  • @dhananajaykrishna8259
    @dhananajaykrishna8259 Před 4 lety

    Awesome!! Explained really well....Looking forward for many such videos

  • @dharmendrabhojwani
    @dharmendrabhojwani Před 6 lety +1

    Nice video. Initially I thought he can't do it but I was wrong. It went very well. Nice. Looking forward for more such videos

    • @TechDummiesNarendraL
      @TechDummiesNarendraL  Před 6 lety +2

      Dharmendra Bhojwani Thanks a lot, am pretty new to explaining stuff and I am always open for suggestions. Please do suggest me some improvements.

  • @connect2rajib
    @connect2rajib Před 5 lety

    You are really good in teaching.Please keep up the good work.It is helping millions of people like us to learn.

  • @siddeo85
    @siddeo85 Před rokem

    nice video, understood the basics of system design. Planning to read about each individual unit you briefed in the video.

  • @kishrazor
    @kishrazor Před 5 lety +1

    Thanks for the detail explanation,it is very useful.

  • @ameerm7894
    @ameerm7894 Před 3 lety

    Great explanation of each comments, usage and use cases etc... Keep it excellence work...

  • @dvlduvall
    @dvlduvall Před 3 lety +1

    Love the dog barking on the background. These are great series. Thank you so much for simplifying the interview process.

  • @soumyabiswas6251
    @soumyabiswas6251 Před 4 lety

    Short and simple - Thank You Narendra :)

  • @subhayu2148
    @subhayu2148 Před 4 lety

    awesome detailed explanation cleared lot of technology doubts as well.

  • @MeenaSivan
    @MeenaSivan Před 4 lety

    Like your indepth knowledge and explanaitions!

  • @SaurabhKumar-jk4nl
    @SaurabhKumar-jk4nl Před 5 lety

    Doing great job !! Thank you :)

  • @karanm1992
    @karanm1992 Před 5 lety +1

    This was really helpful.

  • @SwapnilSuhane
    @SwapnilSuhane Před 5 lety

    awesome ..covered almost all design aspects..

  • @RaviChandraEnaganti
    @RaviChandraEnaganti Před 3 lety +9

    In the architecture, the ELK stack is generally to be used for server log aggregation and searching. For Searching, You might just need any indexing database like Lucene based Solr, Elastic. The data can be indexed to the search databases from the transactional systems using a pipeline.

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

      Does ELK forms Elastic search,Logstash and Kibana? Why again separate specification of Lucene or its derivatives? Pls clarify

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

      @@vishnuv4813 Yes both of them can be Elastic search. But it is better to maintain separate instances of Elastic search for logging and Application search for the sake of separation of concerns. Logging might be huge data, application search might have relatively less data. If you have the same search database for both, you might face noisy neighbor problem i.e log data causing slowness in the response of the application. Micro services architecture prefer separate databases for separate services.

  • @amitprakashpandeysonu
    @amitprakashpandeysonu Před 3 lety

    Thanks for nicely explaining each and every details.

  • @SantoshKotagiri
    @SantoshKotagiri Před 5 lety +1

    Great video. lots of information very well explained. Good work. Thanks. You could add a little bit more details on SQL and NoSQL data modelling along with entities you covered it would be great.

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

    Great content ... very well explained in simple terms and at perfect pace.....

  • @sureshbabu-ne2kv
    @sureshbabu-ne2kv Před rokem

    Impressed, It has huge information bro

  • @nishantraithatha8701
    @nishantraithatha8701 Před 6 lety +1

    great job in detailed explanation

  • @HemantNegi
    @HemantNegi Před 5 lety +3

    Great video.
    I want to understand more about scaling a SQL and No SQL database and how to overcome problems like Replication delay, Consistency, Transactions and Different locking strategies on a highly available distributed database. Please can you make a video explaining this only.
    Thanks

  • @lordlynxtube
    @lordlynxtube Před 5 lety +2

    Your system design videos are very good. Please do more.

  • @arjun.s5112
    @arjun.s5112 Před 3 lety

    Thank you so much. This helped me !

  • @shivaprasad.v.g7526
    @shivaprasad.v.g7526 Před 3 lety +16

    Compared to other videos this lacks technical depth. How exactly locking happens , how theater API's works , why do we need logstash etc are required in my opinion

    • @suryatej3791
      @suryatej3791 Před 2 lety

      Locking probably at database isolation level via read committed technique

    • @satishpatel3518
      @satishpatel3518 Před rokem

      locking is database concept with verious lavel ex. write lok,read lock,both ....

  • @pushpak3981
    @pushpak3981 Před 4 lety

    Thanks for such valuable information and time brother. :)

  • @user-pn8vw8rr3m
    @user-pn8vw8rr3m Před 5 lety

    Excellent explanation as usual! Subscribed to channel.

  • @ashishbhalgat2482
    @ashishbhalgat2482 Před 3 lety

    Very well articulated. Thanks

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

    Superb Video and Explanation, thanks for continued help.

  • @cseshivaprasad1985
    @cseshivaprasad1985 Před 3 lety +5

    I have been lately following your system design videos which have good meat in it.
    Specifically for this video, I feel it could have been made better focusing on the crucial information
    - Strong Consistency handling with Optimistic Concurrency Locks, how it fits into this use-case
    - Good reasoning around the choice of DBs for Search and Booking and how does the data synchronization happen between the two
    - Pub-Sub model when we publish single booking event and how it will be interpreted by its subscribers for its own use-case such as notification, analytics etc..
    - Reasoning covering the choice of the DBs such as CAP theorem fitment, scale, schema flexibility, data distribution
    - Clear separation of Functional and Non Functional requirements

    • @codedestiny6955
      @codedestiny6955 Před 3 lety +1

      Yes specially booking the same seat by users, suppose your system is getting 100k request per day How you're going solve this problem ???

    • @yogini1351
      @yogini1351 Před rokem

      Great question. @TechDummiesNarendraL Would like to hear your solution to this problem

  • @SunilGupta-ki2qw
    @SunilGupta-ki2qw Před 6 lety +1

    Very well explained :)

  • @anastasianaumko923
    @anastasianaumko923 Před rokem

    Thank you so much for your work 😌 Very educative

  • @dipankarsana6445
    @dipankarsana6445 Před 5 lety

    Thanks for the video. I was looking for system design for 1. Google Maps 2. E-commerce website like flipkart. It will be great if you please make videos for those. Keep up the good work. Thanks.

  • @tarunkr.9041
    @tarunkr.9041 Před 5 lety

    Love your efforts

  • @ameyapatil1139
    @ameyapatil1139 Před 4 lety

    Superb ! Great video.

  • @krishsrivatsav7308
    @krishsrivatsav7308 Před 4 lety

    Very useful video tqsm bro

  • @monkwhocodes790
    @monkwhocodes790 Před 3 lety

    Great videos. Your videos helped me crack interviews at Amazon and Goldman Sachs. Thank you❤️

  • @kiranspillai03
    @kiranspillai03 Před 4 lety

    Great stuff. Thanks

  • @PARVEENKUMAR-qr9cz
    @PARVEENKUMAR-qr9cz Před rokem

    Nice informative video from beginner perspective.

  • @DebasisUntouchable
    @DebasisUntouchable Před 4 lety

    very informative, thanks a lot :)

  • @vivekgrewal8129
    @vivekgrewal8129 Před 4 lety +65

    I watched your other system design videos which are great. But I feel this one could be better if you would have focused more on the microservices which we will have in this use case and how they are interacting to fulfill our requirements. And less focus on specific technologies. The system design diagram looked more generic which should highlight more on solving the business problem.

    • @AmitJigajinni
      @AmitJigajinni Před 2 lety +2

      i agree with Vivek here. This is a very generic design. you should put in the service names naming which one handles what responsibility . You also have mentioned nosql and cache. would have been better if you started simple and then address how adding these 2 will address the problems related to speed and concurrency.Try #CodeKarle channel's system design for air bnb its quite similar question about tkt booking and he has explained it much more better.

  • @funnybugsbunny
    @funnybugsbunny Před 3 lety

    Very detailed. Thanks

  • @devarajchennur9911
    @devarajchennur9911 Před 4 lety

    Great explaination ....hats of🤓🤓🤓🤓

  • @JM_utube
    @JM_utube Před 4 lety

    awesome video thank you so much

  • @vadane1
    @vadane1 Před 4 lety

    Great video, great explanation

  • @bharath_v
    @bharath_v Před 4 lety

    One of the best!

  • @mohitg7151
    @mohitg7151 Před 5 lety +1

    You are doing a good job explaining high level overviews of architectures. This can be improved by reducing each video to byte-sized videos based on a concept or by provding duration markers.

  • @sangeethakp6217
    @sangeethakp6217 Před 5 lety +1

    Excellent explanation - thanks a ton for this! :)
    I had a quick question - can we place Varnish in front of the Load Balancer?

  • @jaswantpardeshi9029
    @jaswantpardeshi9029 Před 3 lety

    Thank you for this video.

  • @shreyansborad9977
    @shreyansborad9977 Před 2 lety

    Really Nice video and explanation

  • @anilkumarpandey4572
    @anilkumarpandey4572 Před 5 lety

    You rock man.

  • @user-fc3nq7wy3m
    @user-fc3nq7wy3m Před rokem

    Very clear system design

  • @vedantgunde1881
    @vedantgunde1881 Před 3 lety

    Superb explanation

  • @feziletati2958
    @feziletati2958 Před 3 lety

    great work keep it up

  • @PrashantGupta-mq4hw
    @PrashantGupta-mq4hw Před 2 lety

    great job! sir

  • @Kasatankit
    @Kasatankit Před 5 lety +1

    @Narendra L : Awesom set of videos. Please make a video on designing train reservation system (irctc) , Asked in Amazon multiple times.

  • @priyalagarwal371
    @priyalagarwal371 Před 5 lety

    Hey, very helpful video thankyou for this one. Though, it would be great if you can make system design video of make my trip.

  • @balajimysore5868
    @balajimysore5868 Před 6 lety +1

    Good informative video

  • @dsunilkulkarni
    @dsunilkulkarni Před 6 lety +1

    Excellent

  • @Everevolvingguy
    @Everevolvingguy Před 5 lety +5

    How to handle when other platforms books ticket. How to update the seat chart please explain that. This is very simple what you explained

  • @nadeemqureshi9779
    @nadeemqureshi9779 Před 3 lety

    Big thumbs up!!

  • @prithviamruthraj
    @prithviamruthraj Před 5 lety +8

    Hey Naren .. 1) in the beginning of the video you mentioned theatre DB. Does that mean the db owned by theatre (and not BMS) ? So any db that needs to on-board to bms should expose lock api right ?
    2) there is a db schema that you mentioned at the end. So these tables owned by bms will be maintaining a replica of some details like available seats etc which already is stored in theatre db is it ?
    Can you please help in differentiating between theatre db and db owned by bms ?

    • @smbehindyou
      @smbehindyou Před 4 lety +1

      correct .. i too have the same doubt ...

  • @nishat2ahmad
    @nishat2ahmad Před 5 lety +1

    Thank you for such a detailed explanation
    I have two queries
    1. As you said there is relationship between entity like movie,Cinema etc that is why we should choose RDBMS,But if read to too heavy should not we choose denormalized database design? As Music player has been designed in Cassandra's official blog. Where as per query table has been designed, of course for booking we can go with RDMS because it will need transaction.
    2. I have seen different blogs where they have explained to first calculate TPS and DB sized required,It is really required in interview to calculate tps and db size

    • @TechDummiesNarendraL
      @TechDummiesNarendraL  Před 5 lety +2

      1. Yes you are right RDBMS is must when you need transactions.
      In case of MOVIE->ACTOR relationships you can use De-normalized database tooo(depends of size and QPS) or you can use RDBMS and a caching layer if reads are more.
      It is absolutely possible to build relationships using Cassandra with proper data-modeling.
      2. It depends, please clarify it with interviewer before you answer(its always good to have DB size calculation as it gives you an idea of what kind of DB you should go for). I also including DB size and TPS/QPS information in recent videos too.

  • @MrSanblazer
    @MrSanblazer Před 5 lety

    Great video ..this was very helpful. Can you do a system design video explaining docker and kubernetes in detail? Thx

  • @chabhishyam
    @chabhishyam Před 5 lety +1

    Very Good Information. Thank you so much for the nice content. One question from my side. U have mentioned that we can user elastic search for searching of movies, theaters, etc. So from where the elastic search will consume the data..? I mean what will be the input data source?

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

    Hi Narendra,
    Thank you for the insightful video on system design. However, I wanted to point out that BookMyShow primarily functions as an aggregator. Therefore, the actual seat availability and booking processes are likely managed by third parties or partners, such as Inox, who handle the ticket reservations. Could you consider creating a video explaining how such aggregators communicate with multiplexes or chains of multiplexes, how they display showtimes and seat availability in real-time, and how they facilitate real-time ticket bookings?

  • @ashupu
    @ashupu Před 5 lety +7

    Please include class diagram, database design and also some basic coding for all the system design . That will help much to visualize all the things behind the scene.

  • @ajitkumarpes
    @ajitkumarpes Před 5 lety +1

    Nice video, Can you please add video for retail website like amazon, When they will have sales how they will manage lots of request and availability of item for particular pin-code and how they will decide one day delivery of item. It will be very helpful if you will add this. Thanks

  • @ChinmaySrinath
    @ChinmaySrinath Před 5 lety +20

    This is a sure fire way to flunk a system design interview. System design interviewers generally look for the application specific design details rather than bunch of product/technology propositions. Buzzwords without substantiation raise an immediate red flag.

    • @pkr619
      @pkr619 Před 5 lety +3

      What buzzwords did the presenter use exactly? Is it a database, cache, server, load-balancer or locking? The video covers a 10k feet view of a system. it doesn't need to be very specific. It's abstracted but solves the problem.

    • @aditandadit
      @aditandadit Před 5 lety +3

      Completely Agree, This may be covered in the first 10 minutes as a High-level Application design.
      But Any actual interview would involve Data model (Entities + Relationships), API, Concurrency and so much more.
      This video taught me absolutely nothing I didn't know from working as an engineer in the first place

  • @bertieeusebius
    @bertieeusebius Před 5 lety +1

    Thanks. This is really great. One question. When you walked through user flow towards the end, you didn’t tell how the backend RDBMS comes in play. Kindly elaborate

  • @pravaskumar7078
    @pravaskumar7078 Před 5 lety

    Excellent..

  • @AbhishekSharma-si8ui
    @AbhishekSharma-si8ui Před 4 lety +1

    AWESOME

  • @rajk.4530
    @rajk.4530 Před rokem

    Good explanation but you have overwhelmed me with thought, I will recommend initially focusing on one problem design bookmyshow and then jumping into the concept of Market Place. even Amazo has the problem of inventory and sometimes you may get a theatre which doesn't have an online system but they are still selling their ticket on multiple site .

  • @sachinjindal4921
    @sachinjindal4921 Před 3 lety

    Nice Stuff

  • @321zipzapzoom
    @321zipzapzoom Před 4 lety

    Awesome explanation..just one quick question which I have is..how to handle increased number of users logging in accessing the booking flow from concurrency perspective..thanks again mr. Naren

  • @thorthegreat10
    @thorthegreat10 Před 5 lety +2

    Thank you for the video - I love how you did the diagram of all system components. Can you do a follow-up material on how to support that ticket reservation (in more technical details)? I've done an interview with Google recently, one engineer asked this sys desing question, but drilled in depth on that ticket reservation. Details from my interview - user can book up to 10 tickets (sets) at the time, it's reserved for him fo 2 minutes, there must be no collistions (like user 1 sees seat A23 as available, then spend 1 minute to fill the info, but the same seat booked by other user 2 and user 1 got error response)

    • @mailurvj
      @mailurvj Před 4 lety +1

      I guess following will happen:
      1. Call theater's API to get available and booked seats for a movie+show-date-time combination for a theater in a city.
      2. User chooses and selects the seats. clicks next.
      3. Call Hold API for the selected seats (Hold for 5mins), it'll appear as booked to any users who tries to see available seat. if unavailable return error to user and let them select other seat/
      4. let the user fill all the details, login if was not loggedin, add payment details.
      5. This is optional - verify credit card and place hold. if payment can't me held show error to user and let them enter a new credit card.
      6. validate seat can be booked and still has hold, if unavailable return error to user.
      7. collect payment, if payment can't me collected show error to user and let them enter a new credit card.
      8. Mark seat as Booked in theater.
      9. Return confirmation to user.

  • @maggisp3
    @maggisp3 Před 5 lety +1

    Do they use API's to access the theatre's inventory or DB Connectivity?

  • @xuedong360
    @xuedong360 Před 3 lety

    great !!!

  • @dishagupta6923
    @dishagupta6923 Před 5 lety

    Hey Narendra ... good learning for me by watching this video. You explained in a very good way. Could you please help me by letting me know from where should I check the further design details i.e. low level design

  • @vatsalshah8389
    @vatsalshah8389 Před 2 lety

    Hi Narendra, You explained very well. Well, the basis on the explanation, Would you please cover the scenario that If, the theaters would have their own booking system and they are taking bookings from various sources such as Book my show, Paytm and so on then how it would work ? Also, the counter question is.. how to handle the same request at the same time from two or more sources?

  • @buvanaanguchamy9589
    @buvanaanguchamy9589 Před 2 lety

    Hi Naren, Thanks for the detailed explanation. Can you please create a video for ticket booking system from Theatere side.

  • @arjunkadayaprath5165
    @arjunkadayaprath5165 Před 5 lety +2

    Thanks a lot for the information. This was very useful. I just have a quick question on the theater server side. Who maintains information on the theater server side? In case of BMS, do we have a generic API in the theater side? Or do we have to implement it in the theater side as well if we have to support a particular theater?

    • @TechDummiesNarendraL
      @TechDummiesNarendraL  Před 5 lety +2

      PVR/INOX like big theaters companies have their own ticket booking application, so as a theater aggregator service we need to work along with their system/APIS.
      But some small scale theaters will not usually have ticketing systems. in that case we will have to provide some sort of service/server to let them know what tickets are occupied/free.

  • @kryptu
    @kryptu Před 4 lety

    very useful.

  • @vipinjain6410
    @vipinjain6410 Před 5 lety

    Please add information about movie timings as well, rest all is helpful. Thanks a lot.

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

    Thank you

  • @shuaibpantnagar
    @shuaibpantnagar Před 4 lety +2

    Hi Narendra , I am big fan of your system design videos. I have question here. Since BMS follows micro service architecture, a comment or like by 2 users(geographically located at 2 different places) may be handled by two different servers. Then how does system ensure the consistency for number of comments/likes. Will system be eventual consistent ?

  • @mayankrathore7558
    @mayankrathore7558 Před 5 lety +1

    It was great thanks brother really appreciated

  • @sushmitagoswami7320
    @sushmitagoswami7320 Před 2 lety

    Can you please break the design into microservice? Thank you for all your efforts. It is really worth watching.

  • @Shashankurade
    @Shashankurade Před 4 lety +3

    Great video!! I had been asked this question in Amazon's interview for SDE2 role. They expect a lot much from a low-level design perspective like class diagram. You mostly cover HLD please cover component level design as well. Thoughts??

    • @zhouchong90
      @zhouchong90 Před 4 lety

      Shashank Urade I think the fields/class diagram is very simple. He’s mostly teaching architecture design. If you understand all these, try to shoot for a SDE3 or Principal SDE in Amazon and they’ll ask you the same.

  • @ethanbourne8324
    @ethanbourne8324 Před 4 lety

    Can you please do a system design video on how a global distribution system (GDS) for travel works. It would be very helpful. Thanks

  • @rizthetechie
    @rizthetechie Před 2 lety

    This is nice. I see app servers never talks to rdbms or nosql db directly. There could be lot of scenarios where I have to hit db directly instead of always the cache route.

  • @jaganjkk
    @jaganjkk Před 4 lety

    Small correction, finally you said you are processing the log data using ELK. Initially you told you do user search for movie using elastic search. As per the design it should be queried and cached right. If we have that information in elastic search, it should be feeded in the form of some data which should not be from log

  • @rahulsharma5030
    @rahulsharma5030 Před 3 lety

    If we want to store movie information in elastic search for faster search,can we store directly or does it has to go through logstash?I mean log stash is meant for this or only for logs purpose?