System Design for Beginners Course

Sdílet
Vložit
  • čas přidán 15. 06. 2024
  • This course is a detailed introduction to system design for software developers and engineers.
    Building large-scale distributed systems like Google, Facebook, Amazon, and Twitter requires an in-depth understanding of computer science principles. This allows systems to handle millions of users concurrently despite hardware failures.
    We discuss the fundamental concepts of system design in this course like requirement selection, API design, Database Design, Network protocols, Fault-tolerance, design trade-offs, solution tradeoffs, and low-level design.
    Gaurav Sen created this course. Check out his channel: ‪@gkcs‬
    You can learn about distributed systems and system design using the following resources:
    Designing Data-Intensive Applications by Martin Kleppmann: amzn.to/3SyNAOy
    System Design Simplified: interviewready.io
    Let us know your thoughts and suggestions in the comments!
    ⭐️ Contents ⭐️
    ⌨️ (0:00:00) What is System Design
    ⌨️ (0:02:27) Design Patterns
    ⌨️ (0:04:07) Live Streaming System Design
    ⌨️ (0:07:42) Fault Tolerance
    ⌨️ (0:08:32) Extensibility
    ⌨️ (0:09:49) Testing
    ⌨️ (0:10:32) Summarizing the requirements
    ⌨️ (0:11:27) Core requirement - Streaming video
    ⌨️ (0:14:52) Diagramming the approaches
    ⌨️ (0:17:12) API Design
    ⌨️ (0:20:02) Database Design
    ⌨️ (0:22:32) Network Protocols
    ⌨️ (0:29:07) Choosing a Datastore
    ⌨️ (0:32:57) Uploading Raw Video Footage
    ⌨️ (0:34:37) Map Reduce for Video Transformation
    ⌨️ (0:39:24) WebRTC vs. MPEG DASH vs. HLS
    ⌨️ (0:41:55) Content Delivery Networks
    ⌨️ (0:42:27) High-Level Summary
    ⌨️ (0:44:48) Introduction to Low-Level Design
    ⌨️ (0:47:00) Video Player Design
    ⌨️ (0:49:17) Engineering requirements
    ⌨️ (0:50:32) Use case UML diagram
    ⌨️ (1:02:32) Class UML Diagram
    ⌨️ (1:06:27) Sequence UML Diagram
    ⌨️ (1:11:49) Coding the Server
    ⌨️ (1:24:23) Resources for System Design
    🎉 Thanks to our Champion and Sponsor supporters:
    👾 Nattira Maneerat
    👾 Heather Wcislo
    👾 Serhiy Kalinets
    👾 Erdeniz Unvan
    👾 Justin Hual
    👾 Agustín Kussrow
    👾 Otis Morgan
    --
    Learn to code for free and get a developer job: www.freecodecamp.org
    Read hundreds of articles on programming: freecodecamp.org/news

Komentáře • 301

  • @KejriwalBhakt
    @KejriwalBhakt Před rokem +321

    Just to let others know, Gaurav has started his own startup and is being helped by the startup cell of Maharashtra state to smoothen out the process.

  • @potatocoder5090
    @potatocoder5090 Před rokem +137

    FreeCodeCamp is amazing! Only yesterday, I was learning Assembly Programming with ARM for beginners on this channel, and today there's a system design course already waiting for me! Thank you Gaurav for creating such a thorough resource for free and FreeCodeCamp for bringing it to millions of learners like me :)

  • @michaelwarren8354
    @michaelwarren8354 Před rokem +78

    "You want your features to be extensible. For this, you have to take out your engineering crystal ball, and gaze deeply into it..." 😂🤣

  • @tolufindsyourhome
    @tolufindsyourhome Před rokem +85

    Thanks Gaurav, Glad to have you here. I worked on many case studies of your classes and has tremendously helped in getting my system design skill to an advance user over the last few months.

  • @marvelousadesina4673
    @marvelousadesina4673 Před rokem +24

    Big thanks to everyone at FCC for their efforts in making these videos

  • @TheEvolvingEngineer
    @TheEvolvingEngineer Před rokem +178

    I am not even a software engineer but the way he started explaining things make so much sense to me and made me stick to the video till the very end. Gaurav knows who make it engaging. Kudos to FCC and Gaurav!!

    • @sailendrapamidi
      @sailendrapamidi Před rokem

      Exactly my thoughts.

    • @magicmedia7950
      @magicmedia7950 Před rokem +5

      That is what system design is all about. It's meant to be understood by the layman. Surprisingly the most important part of programming is not in writing the code rather it's solving a problem using logical sequence that captures everything problem solution(system design). If you are not good at this then programming may not be for you!

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

      I want to get placed as a software Engineer so for this should i learn system design ??
      Is this video good for a starter ?

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

      @@magicmedia7950 well said

    • @mma-dost
      @mma-dost Před 3 měsíci

      sorry for the late reply but learn system design at the start may be interesting for starting but you need to learn how to write code and make good projects.@@illuminatidaylight8566

  • @Sandeep-zd6dq
    @Sandeep-zd6dq Před rokem +21

    Now I will start my system design journey with this course.

  • @aldrinseanpereira140
    @aldrinseanpereira140 Před rokem +44

    Gaurav hats off to your wonderful course!

  • @debmalyamitra353
    @debmalyamitra353 Před rokem +52

    Yup Gourav Sen, the OG of system design, no surprises there!!

  • @chauvoluuhuong7485
    @chauvoluuhuong7485 Před rokem +41

    For me, it is not about SQL or noSQL
    It is more about:
    - Is it cheap? is it scaleable? at this stage of the project can I utilize my available resource?
    - Do we need schemaless/no schemaless, usually because of shameless, the database needs to take more space for storing and is slower at execution. Like dynamic-typed langue vs typed language.
    - Can I make relationship ? (typically the NoSQL is considered weak relationship, BUT YOU CAN STILL MAKE RELATIONSHIP. PLUS, BECAUSE OF SCHEMALESS YOU CAN EMBED DOCUMENT FOR MAKING THE RELATIONSHIP AND MAKING THE QUERY FASTER WITHOUT JOINING ACROSS TABLES )
    - How about its built-in function? it is usually better if you make the computation on the database instead of pulling it down to the server and computing and of course, you don't have to re-develop that function
    - The last one, of course, which type of database is more familiar to my team

    • @domisPL_01
      @domisPL_01 Před rokem

      i believe you mean "schemas" , not "schemaless"?

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

      In terms of databases you really only have a few types, NoSQL, SQL, and in-memory. The brand of the db is almost irrelevant any decent engineer should know how to work with any of them.

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

    I really liked this course. it includes not just the patterns, but also connects it to the process of distilling Business Needs as an engineer. Thank you for sharing this course! Excellent point about testing the design, especially for large complex systems.

  • @utsavnangalia7580
    @utsavnangalia7580 Před rokem +8

    Great Tutorial, videos like these really make a difference. Thank you for the efforts Gaurav and the team at FCC.

  • @rustam-z
    @rustam-z Před rokem +10

    Nice short introduction to system design! Nice job Gaurav!

  • @jamialhasan9203
    @jamialhasan9203 Před 2 měsíci +4

    Teaching something simple thing in complex way dose not really mean learning system design, rather knowing philosophy behind a system or process is more important.

  • @amankumarjha8155
    @amankumarjha8155 Před rokem +1

    The knowledge and versatility of Gaurav is just amazing, I m stunn

  • @juffler463
    @juffler463 Před rokem +9

    I know all this but I was doubting my self that, Is my way of system design is right. Now I am more confident thanks 🙂

  • @IsxaaqAcademy
    @IsxaaqAcademy Před rokem +1

    I typed it on the search box, and you have uploaded it 5 hrs ago, Delightful!

  • @alexmagnitov7324
    @alexmagnitov7324 Před rokem +35

    Please, do something about architectures like layered, event-driven, etc. To a newbie like me it’s really complicated to build highly responsive projects.

    • @gkcs
      @gkcs Před rokem +3

      I have a video on event driven architectures on my channel.

  • @Vancouver2010BC
    @Vancouver2010BC Před rokem +4

    A large scale system design for beginners with no experience!!
    And they will hire you as a Senior System Analyst too.
    Good luck in your career!

  • @Tommypants
    @Tommypants Před rokem +2

    This is exactly what I need. Thank you!!!

  • @TheJohndward01
    @TheJohndward01 Před rokem +3

    This is an amazing tutorial, thank you FCC!

  • @founder8372
    @founder8372 Před rokem +16

    Excellent course, thank you! I really wish though that the audio quality was better

  • @akumarsingh85
    @akumarsingh85 Před rokem +4

    Wow just what I was looking for this year!!

  • @Tridib_Tinkel
    @Tridib_Tinkel Před rokem +1

    Most precious gift for the web developers!

  • @rajeevsinha2670
    @rajeevsinha2670 Před rokem +5

    One of the best videos i have where it explains all nuances of system design from front end to back end, how APIs work, DB, network, protocols etc. 👏👍

    • @illuminatidaylight8566
      @illuminatidaylight8566 Před 11 měsíci

      I want to get placed as a software Engineer so do I have to learn system design ?
      Should I watch this course ?

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

      ​@@illuminatidaylight8566This course is not sufficient. Yes,you need to study.

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

      ​@@khyatichaudhary4083thank you for replying 😊
      So do you have the idea about the sufficient ones ??

    • @fabio.1
      @fabio.1 Před 5 měsíci

      👀

  • @arnoldbhebhe
    @arnoldbhebhe Před rokem +7

    Hi @gkcs!
    Thank you for the amazing content. Your videos have been super helpful in helping me understand system design!

    • @gkcs
      @gkcs Před rokem +1

      Thank you!

    • @arnoldbhebhe
      @arnoldbhebhe Před rokem

      @@gkcs you're welcome!
      Do you have any project recommendations that can help with mastering these skills?

  • @johnroca338
    @johnroca338 Před rokem +3

    Wowow! Super informative! Better than I had in my school!

  • @NoNTr1v1aL
    @NoNTr1v1aL Před rokem +14

    Nice Microservices reference! 😂

  • @mikedelta658
    @mikedelta658 Před rokem +4

    Thank you, the one and only Gaurav Sen!!!
    From Ethiopia

    • @gkcs
      @gkcs Před rokem +2

      Thank you!

  • @priyan8004
    @priyan8004 Před rokem +1

    Who knew the power of free knowledge ! Thanks man for all the effort.

  • @PrantikNoor
    @PrantikNoor Před rokem +1

    Thanks for this course. It will help to design my project better.

  • @egbolives123
    @egbolives123 Před rokem +2

    This was a very educative course! highly recommended

  • @shloksuman8164
    @shloksuman8164 Před rokem +3

    Pretty well summed up by him , helpful for beginners like me

  • @minhlhq62
    @minhlhq62 Před rokem +1

    Thank you so much! Very great content!

  • @CodeSnap01
    @CodeSnap01 Před rokem +1

    gaurav is an inspiration to many

  • @jhonsen9842
    @jhonsen9842 Před rokem +1

    He is Gaurav. The God Of System Design.

  • @prashlovessamosa
    @prashlovessamosa Před rokem +6

    Already learnt form this legend

  • @sathvikvutukuri9179
    @sathvikvutukuri9179 Před rokem +2

    Oscar award for Best system designer.

  • @divyanshupandey4041
    @divyanshupandey4041 Před rokem +1

    best gaurav sen system design video ever

  • @jmbert0
    @jmbert0 Před rokem +7

    You posted this at the perfect time thank you

    • @adrianbitsinnie1537
      @adrianbitsinnie1537 Před rokem +1

      For Real!! I didn't notice it was posted 7 hours ago but it is such perfect timing for me

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

    A fantastic resource for any newer software engineers.

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

    Great video. 1:18:43 - if going with variable frame length, then, if a frame is extended with absolute start position attribute, it becomes possible to do binary search within frames array for timestamp, instead of linear iterations ( O(log n) vs O(n) ). With fixed frame length even better, instead of iterations just divide timestamp by frame length, and we have a frame index in O(1).

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

    Just started the video, so far so good, should be the first step when thinking of creating software

  • @kaushikdr
    @kaushikdr Před rokem +2

    For "Go back to video and watch from timestamp", couldn't it be `play(user, videoID, 0)` where if it is 0, you check your cache to see if the user saw it previously?
    I also think that watched video shouldn't be a separate object because it doesn't make sense to create a new object every time a user watches a video. Instead, I think there should be a database table for watched videos with userID, seekTime, and videoID that can be queried in the VideoConsumingService.

  • @cemunlu9552
    @cemunlu9552 Před rokem +1

    i have exam about information systems and this contains the subject thankss!!!

  • @Srishti9015
    @Srishti9015 Před 7 měsíci +4

    I am still going through the video, but just wanted to say thanks so much for making content like this. It's so well thought out and articulated. I am a mid-level engineer and I have a rough, abstract understanding of most of these concepts but I need the nitty gritty to be reinforced so that I can talk about it confidently. You covered exactly that in your example. Thanks Gaurav and thanks freecodecamp for another video that hits the nail on the head

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

    Kudos to this man!😊😊😊 I learn a lot in your system design course. It's a good video to watch in 2024

  • @JackSparrow-tv3mo
    @JackSparrow-tv3mo Před rokem +1

    Love u , searching this topics from long time.

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

    Hands down the best system design course ever. Thanks so much!!!!

  • @i_am_dumb1070
    @i_am_dumb1070 Před rokem

    I am thinking of making a basic video sharing and streaming platform for personal projection and this really helped me a lot thankyou

  • @fotoflo
    @fotoflo Před rokem +3

    Fantastic course! Thank you. Curious what your setup is for the drawing stuff part - are you using an iPad + pencil? with what software?

    • @AnkushBisht
      @AnkushBisht Před rokem +1

      Microsoft Whiteboard. He mentioned in a reply to one of the older comments.

  • @zohebahmed6733
    @zohebahmed6733 Před rokem +1

    Nothing much to say, Just happy to see Gaurav Sen :3

  • @artyomnomnom
    @artyomnomnom Před rokem +3

    It would be great having subtitles for such important topic

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

    Really really awesome video. Thank you for this tutorial! This is exactly what I have been looking for.👍👍👍

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

    This is wonderful. Much love from Nigeria

  • @user-vv7po3zq4x
    @user-vv7po3zq4x Před 6 měsíci

    Liked it. Very informative in an easy-to-understand way!

  • @jelonidas7772
    @jelonidas7772 Před rokem

    I've been waiting for that! thx FCC!

  • @JN-of7mf
    @JN-of7mf Před 9 měsíci

    Great Video!
    One question. In the getFrame() method, can we just divide the given timestamp by Frame.FrameTime, to get the index to the array of frames ? Instead of looping to find the frame ?

  • @achiver
    @achiver Před rokem +2

    Really I wait for that course so long

  • @theobaldigberaese4572
    @theobaldigberaese4572 Před rokem +5

    Great work ✅

  • @kush501
    @kush501 Před rokem +4

    Thanks you sir!!!

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

    Thankyou so Much , This is a very informative video , this videos takes us on a journey where we think deeply which we never thought before , How in detail a engineer thinks about every aspect from making a call for next 10 seconds video frame , and all the various parts to make sure for a user the complete experience is so smooth and he never bother about it ... Thankyou so Much it is a great video to start learning about system design , It is interesting and Informative 🔥🔥

  • @mahendranath2504
    @mahendranath2504 Před rokem +2

    Thank you so much ❤😂🎉👏🙏🏻🤔🤝👌👍

  • @MadalinIgnisca
    @MadalinIgnisca Před rokem +3

    Hi Gaurav. Thank you for sharing such a nice course.
    May I ask what software you use to edit your videos, as I do see lot's of open source touch to it?

    • @gkcs
      @gkcs Před rokem +3

      It's Microsoft Whiteboard.

  • @techwithbube
    @techwithbube Před rokem +1

    Awesome content. I really enjoyed this

  • @noahhradek5426
    @noahhradek5426 Před rokem +2

    thank you for this. System design is on interviews and there are very few resources.

    • @gkcs
      @gkcs Před rokem +1

      You can also try InterviewReady for system design interviews.

  • @yashukumar4713
    @yashukumar4713 Před 11 měsíci

    Prerequisites for understanding the concepts is some sort of APIs Knowledgs, Networking Protocol, Database System. Just need basic concepsts.

  • @user-fi2ty4bm2n
    @user-fi2ty4bm2n Před rokem +2

    This course is decent!
    I learned this course in my degree, and it cost 3500 USD.
    Huges thanks to Gaurav Sen and freeCodeCamp.

  • @joseantoniojose7933
    @joseantoniojose7933 Před rokem

    Thanks a helpful and intersting video of all these systems topics... Very good...

  • @50kT
    @50kT Před rokem +1

    What whiteboard software is he/you using for this 17:23, I noticed boxes automatically get squared up and lined clearly. I've got a drawing tablet and want to implement this into my workflow and looking for some good whiteboard software.

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

    Yeah I totally could have used this video last year when I was deep into my capstone project, except I was trying to figure out all this stuff with my team trying to come up with a very similar program, our conversations were very similar to everything in this video… we weren’t able actually make a viable product tho, this would have been a great help… we were missing some of the late video processing parts that were very complex to get implemented and working

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

    Excellent walkthrough! Nitpicking: at 33:37 RTMP must be arrow-connected to the "video" table, not to the "user".

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

    Holy cow, is that Galactus? Great easter egg, guys!

  • @ekanshmishra4517
    @ekanshmishra4517 Před rokem +1

    Hey can someone explain where are some good resources to study these protocols like MPEG DASH, HLS and other web rtc and so on.. I haven't heard about them😶I want to know everything about them and where are they used.

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

    Awesome video!
    Really enjoyed through the video

  • @sinikp3015
    @sinikp3015 Před rokem

    Thank you Gaurav . Excellent content ❤

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

      Is this really helpful??
      I want to become a software Engineer so should I watch this ??

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

      @@illuminatidaylight8566 yes why not

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

    Thanks Gaurav,
    Salam from Lahore, Pakistan

  • @lets_learn_some_tech5542

    What software is used to draw those use case ? : it's LucidChart

  • @shubhamsingh-gb5zh
    @shubhamsingh-gb5zh Před rokem +2

    Very good explanation

  • @IdiotOfftheInternet
    @IdiotOfftheInternet Před rokem +2

    The explanation in the video is prolly not exactly related to "live streaming" service but more inclined towards a offline video streaming model like yt

  • @dandandan01
    @dandandan01 Před rokem +3

    5:46 got me good

  • @dustinbruce
    @dustinbruce Před 10 měsíci +3

    When he said 'if this sounds exciting to you' I had to laugh a little.
    I'm the only person in my life remotely interested in software engineering. My fiance is a CNA getting her RN. My dad owns a welding business. Her stepdad and brother both weld, so all in all I am the only person I know interested in it, and I get really excited about different software engineering related things, and I always feel like the oddball out. So it's nice to know other people get excited about it as well xD

  • @dehu3010
    @dehu3010 Před rokem

    Could you guys consider making a course for Solidworks?

  • @grotsunfull
    @grotsunfull Před rokem +3

    nice job!

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

    i like the idea of Brad Pitt posting on LinkedIn :D
    great course, thank you ;)

  • @vimalalwaysrocks
    @vimalalwaysrocks Před rokem +1

    1:18:47.. isnt the timestamp condition inverted? Shouldn't it be if (frames[i].timestamp >= timestamp && frames[i].timestamp + Frame.frameTime < timestamp)? Great tutorial btw

  • @AllenLSY
    @AllenLSY Před rokem

    Gaurav? That's a person for interview. Interview is quite different than real system design.

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

    Great! Thanks a lot! Which tool did you use for drawing in the first and second part of the video? Are you using a tab or digital pad for writing?

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

    great for viewing from ux designer point of view

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

    Does anyone know about the software he was using for drawing UML diagrams?

  • @_seeker423
    @_seeker423 Před rokem +4

    I think overall the content was great. But I am not sure if example of video processing and serving was well suited for beginners.

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

    great tutorial for beginners

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

    Why it will be different coding in Python? Python also supports OOP.

  • @rishiraj2548
    @rishiraj2548 Před rokem +1

    Great thanks

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

    Good to see @gkcs here

  • @Lost1nTranslation
    @Lost1nTranslation Před rokem +1

    Thank you!

  • @MrAbbydarappa
    @MrAbbydarappa Před rokem

    If it is live streaming data. How exactly would CDN help ? Cause the data frames gets updated continously.

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

    The tutor is amazing

  • @rachitaa._
    @rachitaa._ Před 5 měsíci +1

    What are the pre-requisite to study this? I'm in my freshman year of college, and we don't have any computer science subjects in the first two semesters

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

      You can watch this anytime you want, but recommend having some knowledge about full stack development (or backend development at least)before watching this, so that you can understand more effectively like that is an API and Epoint, etc, etc.

  • @6_nikki_9
    @6_nikki_9 Před rokem +1

    Very interesting.