System Design for Beginners Course

  Переглядів 1,053,558

freeCodeCamp.org

freeCodeCamp.org

День тому

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

КОМЕНТАРІ: 295
@tolufindsyourhome
@tolufindsyourhome Рік тому
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.
@potatocoder5090
@potatocoder5090 Рік тому
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 :)
@KejriwalBhakt
@KejriwalBhakt Рік тому
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.
@rachitshukla7111
@rachitshukla7111 Рік тому
Context?
@ankitrawat06
@ankitrawat06 Рік тому
​@@rachitshukla7111 koi context nhi h bas likhna h
@rachitshukla7111
@rachitshukla7111 Рік тому
@@ankitrawat06 😂😂😂😂😂😂😂
@neowantsword
@neowantsword Рік тому
Thanks bro😌🙏
@thranduillord001
@thranduillord001 Місяць тому
kejru to pakda gaya bhai
@Sandeep-zd6dq
@Sandeep-zd6dq Рік тому
Now I will start my system design journey with this course.
@marvelousadesina4673
@marvelousadesina4673 Рік тому
Big thanks to everyone at FCC for their efforts in making these videos
@TheEvolvingEngineer
@TheEvolvingEngineer Рік тому
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 Рік тому
Exactly my thoughts.
@magicmedia7950
@magicmedia7950 Рік тому
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 10 місяців тому
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 4 місяці тому
@@magicmedia7950 well said
@mma-dost
@mma-dost Місяць тому
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
@aldrinseanpereira140
@aldrinseanpereira140 Рік тому
Gaurav hats off to your wonderful course!
@mrsbootsworkouts
@mrsbootsworkouts 6 місяців тому
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 Рік тому
Great Tutorial, videos like these really make a difference. Thank you for the efforts Gaurav and the team at FCC.
@rustam-z
@rustam-z Рік тому
Nice short introduction to system design! Nice job Gaurav!
@juffler463
@juffler463 Рік тому
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 🙂
@chauvoluuhuong7485
@chauvoluuhuong7485 Рік тому
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 Рік тому
i believe you mean "schemas" , not "schemaless"?
@nobytes2
@nobytes2 9 місяців тому
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.
@founder8372
@founder8372 Рік тому
Excellent course, thank you! I really wish though that the audio quality was better
@amankumarjha8155
@amankumarjha8155 Рік тому
The knowledge and versatility of Gaurav is just amazing, I m stunn
@alexmagnitov7324
@alexmagnitov7324 Рік тому
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 11 місяців тому
I have a video on event driven architectures on my channel.
@debmalyamitra353
@debmalyamitra353 Рік тому
Yup Gourav Sen, the OG of system design, no surprises there!!
@horacinis
@horacinis Рік тому
Gaurav Sen***
@ankush8270
@ankush8270 Місяць тому
​@@horacinisGaurav Senpai😅
@arnoldbhebhe
@arnoldbhebhe Рік тому
Hi @gkcs! Thank you for the amazing content. Your videos have been super helpful in helping me understand system design!
@gkcs
@gkcs Рік тому
Thank you!
@arnoldbhebhe
@arnoldbhebhe Рік тому
@@gkcs you're welcome! Do you have any project recommendations that can help with mastering these skills?
@johnroca338
@johnroca338 Рік тому
Wowow! Super informative! Better than I had in my school!
@xuutee
@xuutee Рік тому
Frame is good for video data, as a random video ID and data too. On youtube commercials are helping, clicking on a feed too. I was thinking about this years ago. Good work! Time between searching on videos in big platfroms helps, but smaller video streamers are not so complicated, useful goal keeper behavior is better inside the box.
@rajeevsinha2670
@rajeevsinha2670 Рік тому
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 10 місяців тому
I want to get placed as a software Engineer so do I have to learn system design ? Should I watch this course ?
@khyatichaudhary4083
@khyatichaudhary4083 10 місяців тому
​@@illuminatidaylight8566This course is not sufficient. Yes,you need to study.
@illuminatidaylight8566
@illuminatidaylight8566 9 місяців тому
​@@khyatichaudhary4083thank you for replying 😊 So do you have the idea about the sufficient ones ??
@fabio.1
@fabio.1 4 місяці тому
👀
@TheJohndward01
@TheJohndward01 Рік тому
This is an amazing tutorial, thank you FCC!
@michaelwarren8354
@michaelwarren8354 Рік тому
"You want your features to be extensible. For this, you have to take out your engineering crystal ball, and gaze deeply into it..." 😂🤣
@Tommypants
@Tommypants Рік тому
This is exactly what I need. Thank you!!!
@Vancouver2010BC
@Vancouver2010BC Рік тому
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!
@akumarsingh85
@akumarsingh85 Рік тому
Wow just what I was looking for this year!!
@IsxaaqAcademy
@IsxaaqAcademy Рік тому
I typed it on the search box, and you have uploaded it 5 hrs ago, Delightful!
@priyan8004
@priyan8004 11 місяців тому
Who knew the power of free knowledge ! Thanks man for all the effort.
@PrantikNoor
@PrantikNoor Рік тому
Thanks for this course. It will help to design my project better.
@shloksuman8164
@shloksuman8164 Рік тому
Pretty well summed up by him , helpful for beginners like me
@mikedelta658
@mikedelta658 Рік тому
Thank you, the one and only Gaurav Sen!!! From Ethiopia
@gkcs
@gkcs Рік тому
Thank you!
@prashlovessamosa
@prashlovessamosa Рік тому
Already learnt form this legend
@Srishti9015
@Srishti9015 6 місяців тому
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
@jamialhasan9203
@jamialhasan9203 Місяць тому
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.
@tusharys9404
@tusharys9404 23 дні тому
I agree to this
@Tridib_Tinkel
@Tridib_Tinkel Рік тому
Most precious gift for the web developers!
@minhlhq62
@minhlhq62 Рік тому
Thank you so much! Very great content!
@egbolives123
@egbolives123 Рік тому
This was a very educative course! highly recommended
@jmbert0
@jmbert0 Рік тому
You posted this at the perfect time thank you
@adrianbitsinnie1537
@adrianbitsinnie1537 Рік тому
For Real!! I didn't notice it was posted 7 hours ago but it is such perfect timing for me
@JN-of7mf
@JN-of7mf 8 місяців тому
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 ?
@i_am_dumb1070
@i_am_dumb1070 11 місяців тому
I am thinking of making a basic video sharing and streaming platform for personal projection and this really helped me a lot thankyou
@BestURLShortenerBioPageQRCode
@BestURLShortenerBioPageQRCode 8 місяців тому
Really really awesome video. Thank you for this tutorial! This is exactly what I have been looking for.👍👍👍
@CodeSnap01
@CodeSnap01 Рік тому
gaurav is an inspiration to many
@askholia
@askholia 7 місяців тому
A fantastic resource for any newer software engineers.
@lewismuriungi4564
@lewismuriungi4564 5 місяців тому
Just started the video, so far so good, should be the first step when thinking of creating software
@divyanshupandey4041
@divyanshupandey4041 Рік тому
best gaurav sen system design video ever
@kaushikdr
@kaushikdr Рік тому
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.
@JackSparrow-tv3mo
@JackSparrow-tv3mo Рік тому
Love u , searching this topics from long time.
@nikkis8102
@nikkis8102 10 місяців тому
Hands down the best system design course ever. Thanks so much!!!!
@lemonjuice6177
@lemonjuice6177 3 місяці тому
Bro this is nuts
@ivanfoofoo
@ivanfoofoo 3 місяці тому
What's nuts? xD
@cemunlu9552
@cemunlu9552 Рік тому
i have exam about information systems and this contains the subject thankss!!!
@sherwinmontanez5481
@sherwinmontanez5481 3 місяці тому
Kudos to this man!😊😊😊 I learn a lot in your system design course. It's a good video to watch in 2024
@NoNTr1v1aL
@NoNTr1v1aL Рік тому
Nice Microservices reference! 😂
@umehmoses8118
@umehmoses8118 9 місяців тому
This is wonderful. Much love from Nigeria
@artyomnomnom
@artyomnomnom Рік тому
It would be great having subtitles for such important topic
@user-vv7po3zq4x
@user-vv7po3zq4x 5 місяців тому
Liked it. Very informative in an easy-to-understand way!
@visheshgupta4990
@visheshgupta4990 5 місяців тому
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 🔥🔥
@jelonidas7772
@jelonidas7772 Рік тому
I've been waiting for that! thx FCC!
@kush501
@kush501 Рік тому
Thanks you sir!!!
@chrisrockscode1202
@chrisrockscode1202 2 місяці тому
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
@kyzmitch2
@kyzmitch2 Рік тому
thanks, great video, probably coding is not a part of a system design and not sure about spending that much time on the specific use cases, because I'm guessing each use case could be a separate system or described as a separate system design
@techwithbube
@techwithbube Рік тому
Awesome content. I really enjoyed this
@zohebahmed6733
@zohebahmed6733 Рік тому
Nothing much to say, Just happy to see Gaurav Sen :3
@MadalinIgnisca
@MadalinIgnisca Рік тому
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 Рік тому
It's Microsoft Whiteboard.
@jhonsen9842
@jhonsen9842 Рік тому
He is Gaurav. The God Of System Design.
@fotoflo
@fotoflo Рік тому
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 Рік тому
Microsoft Whiteboard. He mentioned in a reply to one of the older comments.
@noahhradek5426
@noahhradek5426 Рік тому
thank you for this. System design is on interviews and there are very few resources.
@gkcs
@gkcs Рік тому
You can also try InterviewReady for system design interviews.
@joseantoniojose7933
@joseantoniojose7933 11 місяців тому
Thanks a helpful and intersting video of all these systems topics... Very good...
@theobaldigberaese4572
@theobaldigberaese4572 Рік тому
Great work ✅
@achiver
@achiver Рік тому
Really I wait for that course so long
@aammssaamm
@aammssaamm Рік тому
Try reading books. 😂
@sathvikvutukuri9179
@sathvikvutukuri9179 Рік тому
Oscar award for Best system designer.
@harsh9558
@harsh9558 5 місяців тому
Awesome video! Really enjoyed through the video
@sinikp3015
@sinikp3015 Рік тому
Thank you Gaurav . Excellent content ❤
@illuminatidaylight8566
@illuminatidaylight8566 9 місяців тому
Is this really helpful?? I want to become a software Engineer so should I watch this ??
@thymos6575
@thymos6575 6 місяців тому
@@illuminatidaylight8566 yes why not
@MrKrishnanandaKHegde
@MrKrishnanandaKHegde 8 місяців тому
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?
@sriharshan9788
@sriharshan9788 6 місяців тому
It's lucid chart
@MrKrishnanandaKHegde
@MrKrishnanandaKHegde 6 місяців тому
@@sriharshan9788 oh okay..
@yashukumar4713
@yashukumar4713 10 місяців тому
Prerequisites for understanding the concepts is some sort of APIs Knowledgs, Networking Protocol, Database System. Just need basic concepsts.
@dehu3010
@dehu3010 Рік тому
Could you guys consider making a course for Solidworks?
@mahendranath2504
@mahendranath2504 Рік тому
Thank you so much ❤😂🎉👏🙏🏻🤔🤝👌👍
@_seeker423
@_seeker423 Рік тому
I think overall the content was great. But I am not sure if example of video processing and serving was well suited for beginners.
@lishingchan1075
@lishingchan1075 2 місяці тому
thanks for this video! I am a PM and would like to understand how developers work. Would you have a recommendation on the time taken for each stage: api design, database design, protocol before implementation?
@akhzarnazir
@akhzarnazir 26 днів тому
Thanks Gaurav, Salam from Lahore, Pakistan
@IdiotOfftheInternet
@IdiotOfftheInternet Рік тому
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
@ekanshmishra4517
@ekanshmishra4517 Рік тому
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.
@bobobobo-ki2fw
@bobobobo-ki2fw 9 місяців тому
fantastic do you have a course with AWS node?
@shubhamsingh-gb5zh
@shubhamsingh-gb5zh Рік тому
Very good explanation
@mllenessmarie
@mllenessmarie 9 місяців тому
Holy cow, is that Galactus? Great easter egg, guys!
@grotsunfull
@grotsunfull Рік тому
nice job!
@50kT
@50kT Рік тому
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.
@pavanrayudu3031
@pavanrayudu3031 7 місяців тому
great tutorial for beginners
@lets_learn_some_tech5542
@lets_learn_some_tech5542 Рік тому
What software is used to draw those use case ? : it's LucidChart
@MihirAmanRaj
@MihirAmanRaj Рік тому
Please make a complete course on type script from beginner to advance with a few projects :)
@freecodecamp
@freecodecamp Рік тому
Here is a TypeScript course we published a few months ago: ukposts.info/have/v-deo/a2B9i6CfkbCYlmQ.html
@aammssaamm
@aammssaamm Рік тому
You need a google search course. 😂
@adithyagowda4642
@adithyagowda4642 Рік тому
@@aammssaamm hahaha
@Lost1nTranslation
@Lost1nTranslation Рік тому
Thank you!
@SatyaUpendra
@SatyaUpendra 8 місяців тому
Good to see @gkcs here
@vimalalwaysrocks
@vimalalwaysrocks Рік тому
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
@BodhiSoftMobileApps
@BodhiSoftMobileApps 9 місяців тому
It's a pity that nobody helped the instructor get set up with proper audio. Long courses & videos are fatiguing to listen to when audio quality is poor. This matters to the mission of freeCodeCamp. Proper mic'ing is easily within reach economically these days, and audio engineering, acoustics, and home audio recording technology are not particularly complex topics for those with a STEM degree who've had the standard classical physics series.
@shiwamsinha7076
@shiwamsinha7076 9 місяців тому
very fruitful video
@aceintheblackhole
@aceintheblackhole 9 місяців тому
i like the idea of Brad Pitt posting on LinkedIn :D great course, thank you ;)
@aminesedki7485
@aminesedki7485 Рік тому
Thanks for this amazing course,is there a good book for the same topic that u can advise ?
@gkcs
@gkcs Рік тому
It's at the end of the video, and mentioned in the description.
@dustinbruce
@dustinbruce 9 місяців тому
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
@dandandan01
@dandandan01 Рік тому
5:46 got me good
@gkcs
@gkcs Рік тому
Yes!
@rishiraj2548
@rishiraj2548 Рік тому
Great thanks
@megamaxdevelopment9890
@megamaxdevelopment9890 Рік тому
Great video !
@Ni7ram
@Ni7ram Рік тому
i have 3 questions! 1. when commenting on a video.. why is the author's name sent in the POST, if the system already has it? (by processing the token on the header of the POST request) 2. why does the user (after closing the window) ask for the timestamp, and then make another request with that value? the way i see it the server already has that data too.. it could directly return the videoframe on the 1st request 3. and the last one... how is it possible that when commenting, the ID of the comment is sent in the POST? thats the most weird of all.. it is not even saved in the database yet. it doesn't have an ID. or even worse.. would't this lead to duplicate IDs if 2 users comment at the same time? am i sharper than normal today, or am i missing something? excellent video! learnt a lot from it , thank you very much 🙏
@sohamvishwas6795
@sohamvishwas6795 Рік тому
Thank you :)
20 System Design Concepts Explained in 10 Minutes
11:41
NeetCode
Переглядів 829 тис.
A Philosophy of Software Design | John Ousterhout | Talks at Google
1:01:40
Talks at Google
Переглядів 461 тис.
Glow Stick Secret 😱 #shorts
00:37
Mr DegrEE
Переглядів 100 млн
Артем Пивоваров х Klavdia Petrivna - Барабан
03:16
Artem Pivovarov
Переглядів 7 млн
Google system design interview: Design Spotify (with ex-Google EM)
42:13
IGotAnOffer: Engineering
Переглядів 945 тис.
10 Design Patterns Explained in 10 Minutes
11:04
Fireship
Переглядів 2,1 млн
System Design: TINDER as a microservice architecture
36:41
Gaurav Sen
Переглядів 1,2 млн
8 Design Patterns EVERY Developer Should Know
9:47
NeetCode
Переглядів 970 тис.
How I Mastered System Design Interviews
10:22
Ashish Pratap Singh
Переглядів 46 тис.
Most Tech Interview Prep is GARBAGE. (From a Principal Engineer at Amazon)
12:57
Programming Is NOT Enough | Add these 7 skills…
13:19
Travis Media
Переглядів 408 тис.
What are Distributed CACHES and how do they manage DATA CONSISTENCY?
13:29
What is an API and how do you design it? 🗒️✅
15:26
Gaurav Sen
Переглядів 703 тис.
Glow Stick Secret 😱 #shorts
00:37
Mr DegrEE
Переглядів 100 млн