System Design for Beginners Course

  Рет қаралды 1,090,274

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

Пікірлер: 299
@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 :)
@Sandeep-zd6dq
@Sandeep-zd6dq Жыл бұрын
Now I will start my system design journey with this course.
@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 2 ай бұрын
kejru to pakda gaya bhai
@marvelousadesina4673
@marvelousadesina4673 Жыл бұрын
Big thanks to everyone at FCC for their efforts in making these videos
@aldrinseanpereira140
@aldrinseanpereira140 Жыл бұрын
Gaurav hats off to your wonderful course!
@mrsbootsworkouts
@mrsbootsworkouts 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.
@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 11 ай бұрын
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 2 ай бұрын
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
@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 10 ай бұрын
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.
@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 🙂
@utsavnangalia7580
@utsavnangalia7580 Жыл бұрын
Great Tutorial, videos like these really make a difference. Thank you for the efforts Gaurav and the team at FCC.
@IsxaaqAcademy
@IsxaaqAcademy Жыл бұрын
I typed it on the search box, and you have uploaded it 5 hrs ago, Delightful!
@amankumarjha8155
@amankumarjha8155 Жыл бұрын
The knowledge and versatility of Gaurav is just amazing, I m stunn
@rustam-z
@rustam-z Жыл бұрын
Nice short introduction to system design! Nice job Gaurav!
@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 Жыл бұрын
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 2 ай бұрын
​@@horacinisGaurav Senpai😅
@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 11 ай бұрын
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 10 ай бұрын
​@@khyatichaudhary4083thank you for replying 😊 So do you have the idea about the sufficient ones ??
@fabio.1
@fabio.1 5 ай бұрын
👀
@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!
@johnroca338
@johnroca338 Жыл бұрын
Wowow! Super informative! Better than I had in my school!
@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?
@TheJohndward01
@TheJohndward01 Жыл бұрын
This is an amazing tutorial, thank you FCC!
@Tommypants
@Tommypants Жыл бұрын
This is exactly what I need. Thank you!!!
@akumarsingh85
@akumarsingh85 Жыл бұрын
Wow just what I was looking for this year!!
@founder8372
@founder8372 Жыл бұрын
Excellent course, thank you! I really wish though that the audio quality was better
@mikedelta658
@mikedelta658 Жыл бұрын
Thank you, the one and only Gaurav Sen!!! From Ethiopia
@gkcs
@gkcs Жыл бұрын
Thank you!
@Tridib_Tinkel
@Tridib_Tinkel Жыл бұрын
Most precious gift for the web developers!
@egbolives123
@egbolives123 Жыл бұрын
This was a very educative course! highly recommended
@prashlovessamosa
@prashlovessamosa Жыл бұрын
Already learnt form this legend
@PrantikNoor
@PrantikNoor Жыл бұрын
Thanks for this course. It will help to design my project better.
@minhlhq62
@minhlhq62 Жыл бұрын
Thank you so much! Very great content!
@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..." 😂🤣
@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
@shloksuman8164
@shloksuman8164 Жыл бұрын
Pretty well summed up by him , helpful for beginners like me
@CodeSnap01
@CodeSnap01 Жыл бұрын
gaurav is an inspiration to many
@priyan8004
@priyan8004 11 ай бұрын
Who knew the power of free knowledge ! Thanks man for all the effort.
@nikkis8102
@nikkis8102 10 ай бұрын
Hands down the best system design course ever. Thanks so much!!!!
@lemonjuice6177
@lemonjuice6177 4 ай бұрын
Bro this is nuts
@ivanfoofoo
@ivanfoofoo 4 ай бұрын
What's nuts? xD
@lewismuriungi4564
@lewismuriungi4564 6 ай бұрын
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
@cemunlu9552
@cemunlu9552 Жыл бұрын
i have exam about information systems and this contains the subject thankss!!!
@Srishti9015
@Srishti9015 7 ай бұрын
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
@artyomnomnom
@artyomnomnom Жыл бұрын
It would be great having subtitles for such important topic
@askholia
@askholia 8 ай бұрын
A fantastic resource for any newer software engineers.
@jamialhasan9203
@jamialhasan9203 2 ай бұрын
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 Ай бұрын
I agree to this
@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.
@JackSparrow-tv3mo
@JackSparrow-tv3mo Жыл бұрын
Love u , searching this topics from long time.
@kush501
@kush501 Жыл бұрын
Thanks you sir!!!
@BestURLShortenerBioPageQRCode
@BestURLShortenerBioPageQRCode 9 ай бұрын
Really really awesome video. Thank you for this tutorial! This is exactly what I have been looking for.👍👍👍
@theobaldigberaese4572
@theobaldigberaese4572 Жыл бұрын
Great work ✅
@i_am_dumb1070
@i_am_dumb1070 Жыл бұрын
I am thinking of making a basic video sharing and streaming platform for personal projection and this really helped me a lot thankyou
@jhonsen9842
@jhonsen9842 Жыл бұрын
He is Gaurav. The God Of System Design.
@techwithbube
@techwithbube Жыл бұрын
Awesome content. I really enjoyed this
@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 ?
@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.
@zohebahmed6733
@zohebahmed6733 Жыл бұрын
Nothing much to say, Just happy to see Gaurav Sen :3
@jelonidas7772
@jelonidas7772 Жыл бұрын
I've been waiting for that! thx FCC!
@sathvikvutukuri9179
@sathvikvutukuri9179 Жыл бұрын
Oscar award for Best system designer.
@sherwinmontanez5481
@sherwinmontanez5481 4 ай бұрын
Kudos to this man!😊😊😊 I learn a lot in your system design course. It's a good video to watch in 2024
@achiver
@achiver Жыл бұрын
Really I wait for that course so long
@aammssaamm
@aammssaamm Жыл бұрын
Try reading books. 😂
@borisv8766
@borisv8766 24 күн бұрын
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).
@NoNTr1v1aL
@NoNTr1v1aL Жыл бұрын
Nice Microservices reference! 😂
@umehmoses8118
@umehmoses8118 10 ай бұрын
This is wonderful. Much love from Nigeria
@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.
@user-vv7po3zq4x
@user-vv7po3zq4x 6 ай бұрын
Liked it. Very informative in an easy-to-understand way!
@grotsunfull
@grotsunfull Жыл бұрын
nice job!
@sinikp3015
@sinikp3015 Жыл бұрын
Thank you Gaurav . Excellent content ❤
@illuminatidaylight8566
@illuminatidaylight8566 10 ай бұрын
Is this really helpful?? I want to become a software Engineer so should I watch this ??
@thymos6575
@thymos6575 6 ай бұрын
@@illuminatidaylight8566 yes why not
@mahendranath2504
@mahendranath2504 Жыл бұрын
Thank you so much ❤😂🎉👏🙏🏻🤔🤝👌👍
@harsh9558
@harsh9558 6 ай бұрын
Awesome video! Really enjoyed through the video
@dehu3010
@dehu3010 Жыл бұрын
Could you guys consider making a course for Solidworks?
@visheshgupta4990
@visheshgupta4990 6 ай бұрын
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 🔥🔥
@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.
@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.
@joseantoniojose7933
@joseantoniojose7933 Жыл бұрын
Thanks a helpful and intersting video of all these systems topics... Very good...
@lets_learn_some_tech5542
@lets_learn_some_tech5542 Жыл бұрын
What software is used to draw those use case ? : it's LucidChart
@rishiraj2548
@rishiraj2548 Жыл бұрын
Great thanks
@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 7 ай бұрын
It's lucid chart
@MrKrishnanandaKHegde
@MrKrishnanandaKHegde 7 ай бұрын
@@sriharshan9788 oh okay..
@shubhamsingh-gb5zh
@shubhamsingh-gb5zh Жыл бұрын
Very good explanation
@Lost1nTranslation
@Lost1nTranslation Жыл бұрын
Thank you!
@megamaxdevelopment9890
@megamaxdevelopment9890 Жыл бұрын
Great video !
@chrisrockscode1202
@chrisrockscode1202 3 ай бұрын
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
@6_nikki_9
@6_nikki_9 Жыл бұрын
Very interesting.
@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
@sohamvishwas6795
@sohamvishwas6795 Жыл бұрын
Thank you :)
@yashukumar4713
@yashukumar4713 11 ай бұрын
Prerequisites for understanding the concepts is some sort of APIs Knowledgs, Networking Protocol, Database System. Just need basic concepsts.
@jatinnandwani6678
@jatinnandwani6678 Жыл бұрын
Thanks so much
@pavanrayudu3031
@pavanrayudu3031 8 ай бұрын
great tutorial for beginners
@SatyaUpendra
@SatyaUpendra 9 ай бұрын
Good to see @gkcs here
@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.
@mllenessmarie
@mllenessmarie 10 ай бұрын
Holy cow, is that Galactus? Great easter egg, guys!
@polarbear986
@polarbear986 6 ай бұрын
The tutor is amazing
@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
@antonioprofinfo
@antonioprofinfo Жыл бұрын
Thanks!!!
@ArikGrinstein
@ArikGrinstein Жыл бұрын
What tool I you used for drawing?
@focusTOP5
@focusTOP5 3 ай бұрын
THE OG OF SYSTEM DESIGN
@shiwamsinha7076
@shiwamsinha7076 10 ай бұрын
very fruitful video
@almostrandomnickname
@almostrandomnickname 8 ай бұрын
good overview!
@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.
@aceintheblackhole
@aceintheblackhole 10 ай бұрын
i like the idea of Brad Pitt posting on LinkedIn :D great course, thank you ;)
@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: kzfaq.info/get/bejne/aZZ8is2Zv-DLZWQ.html
@aammssaamm
@aammssaamm Жыл бұрын
You need a google search course. 😂
@adithyagowda4642
@adithyagowda4642 Жыл бұрын
@@aammssaamm hahaha
@Sunpath_
@Sunpath_ Жыл бұрын
What diagramming tool are you using?
@sriharshan9788
@sriharshan9788 7 ай бұрын
It's lucid chart
@akhzarnazir
@akhzarnazir Ай бұрын
Thanks Gaurav, Salam from Lahore, Pakistan
The Secret Science of Perfect Spacing
9:40
Chainlift
Рет қаралды 318 М.
IT Essentials for Programmers - The Must SKill to Learn
45:21
В ДЕТСТВЕ СТРОИШЬ ДОМ ПОД СТОЛОМ
00:17
SIDELNIKOVVV
Рет қаралды 2,5 МЛН
UFC 302 : Махачев VS Порье
02:54
Setanta Sports UFC
Рет қаралды 1,3 МЛН
A Philosophy of Software Design | John Ousterhout | Talks at Google
1:01:40
Google system design interview: Design Spotify (with ex-Google EM)
42:13
IGotAnOffer: Engineering
Рет қаралды 982 М.
APIs for Beginners - How to use an API (Full Course / Tutorial)
2:19:33
freeCodeCamp.org
Рет қаралды 4,3 МЛН
How I would learn Leetcode if I could start over
18:03
NeetCodeIO
Рет қаралды 172 М.
What does larger scale software development look like?
24:15
Web Dev Cody
Рет қаралды 1,2 МЛН
20 System Design Concepts Explained in 10 Minutes
11:41
NeetCode
Рет қаралды 868 М.
Everything You NEED to Know About WEB APP Architecture
10:27
ForrestKnight
Рет қаралды 465 М.
Most Tech Interview Prep is GARBAGE. (From a Principal Engineer at Amazon)
12:57
10 Design Patterns Explained in 10 Minutes
11:04
Fireship
Рет қаралды 2,1 МЛН