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 :)
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!!
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!
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
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
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.
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.
"The next step is to convert these requirements into classes and objects. This is where things usually go wrong." exactly what brought me to this video
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.
Please, do something about architectures like layered, event-driven, etc. To a newbie like me it’s really complicated to build highly responsive projects.
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).
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.
You talked a little fast, but wow, you sure a happy happy person dispensing your knowledge and I for one grateful. I'm taking an AWS Machine Learning course and getting to seee some nuts and bolts was absolutely great. That was a lot of work and you know it like the back of your hand. You you don't have a company yet? I have OPENAI ChatGPT, and you remind of the guy the Sam Altman, knows everything about how it works. really good job. Thank you.
Wonderful, I am just a passionate newbie who jumped in the field of programming a while ago I learned the languages and the tools now, I had to make my final project which is going to be a full stack project, but I was really confused that how you can create a well-functioning Application and thanks to Gaurav Son that I got to see the clear path of creating an application .... ( :
If a course starts with "hellou ewerywone!" I at least know that he put in the effort and worked damn hard to make it! Cheers! (For the trolls, this is not racist but actually respecting and valuing the creator and effort! I have been to India.) Thanks Gaurav, great intro! 🤘🏻😎
This course introduces system design concepts for building large-scale distributed systems, covering design patterns, data modeling, and implementation considerations. It includes a case study on designing a live streaming video app. Highlights: 00:00 This course provides a detailed introduction to system design for beginners, focusing on engineering design patterns for building large-scale distributed systems and converting business requirements into technical solutions. -Large scale distributed systems involve handling high data volumes and user traffic, requiring servers distributed globally for performance and fault tolerance. -Design patterns are essential practices used by engineers to solve common problems efficiently, like distributing content to millions of users through a publisher-subscriber model. -Engineers convert business requirements into technical solutions by defining data structures, endpoints for data manipulation, and ensuring system reliability, scalability, and maintainability. 09:06 Designing a system requires considering extensibility, testing, and scalability. Testing the design before coding is crucial for system reliability and user satisfaction. -Importance of testing system design before coding for reliability and scalability. -Considerations for live streaming system design, including requirements like video processing, user interactions, and scalability. -Challenges in system design, such as failure scenarios, feature requests, and balancing front-end UI design with backend system design. 17:07 The video discusses designing backend APIs for real-time querying, including getting video frames and posting comments, and the database structure needed to support these functionalities. -Designing backend APIs for real-time querying and returning video frames based on device type and offset. -Implementing APIs for posting comments and manipulating data in the server. -Discussing the database structure for storing comments, users, and videos to support the defined APIs. 25:16 The video discusses the difference between stateful and stateless protocols, highlighting how stateless protocols like HTTP benefit by simplifying client code and making the network more efficient. It also explains the importance of choosing appropriate network protocols and database solutions based on system requirements. -Stateless protocols like HTTP simplify client code and make the network more efficient by avoiding duplicate requests, benefiting system performance. -Choosing the right network protocols, such as TCP for reliability or UDP for real-time efficiency, is crucial for effective video transmission and system design. -Selecting suitable database solutions, like NoSQL for scalability in handling complex data structures, plays a vital role in meeting system requirements and optimizing performance. 33:19 Highly reliable network and efficient camera are crucial for live video streaming. Different resolutions and formats are needed to cater to various devices and user preferences. -Importance of network reliability and protocol for live video streaming. RTMP protocol ensures data integrity during video transmission. -Significance of transforming raw video footage into different resolutions and formats to meet user device requirements. Considerations for resolution preferences and customer feedback. -Utilizing the map reduce design pattern to process and convert raw video data efficiently. Exploring the use of different servers and compression techniques in the conversion process. 41:25 System design for large-scale distributed systems involves considerations like performance, cost, and engineering effort. Utilizing CDN solutions and well-tested tools from cloud providers can optimize system performance and cost-effectiveness. -Importance of utilizing CDN solutions and cloud provider tools for optimizing system performance and cost-effectiveness in large-scale distributed systems. -Challenges and considerations in system design, including authentication for content delivery through CDNs and the trade-offs between cost and performance. -The significance of low-level design in system architecture, focusing on interactions between system components, network calls, and data handling. 49:30 Low-level design requirements like concurrency, latency, and throughput impact code writing. Use case diagrams help identify user needs. Fulfilling user requirements leads to happy customers, crucial for engineers. -Understanding low-level design requirements such as concurrency, latency, and throughput is essential for writing efficient code. -Utilizing use case diagrams to identify and fulfill user needs is crucial for ensuring customer satisfaction and success as an engineer. -Translating user requirements into classes and objects is a key step in the design process, ensuring clear APIs and efficient implementation. 57:38 Understanding the difference between 'play' and 'get video frame' APIs is crucial for designing efficient video playback systems. Consider user behavior and business use cases when merging similar APIs to streamline maintenance and improve user experience. -Differentiating between user actions like 'play' and 'get video frame' is essential for optimizing video playback functionality and enhancing user engagement. -Considering the business use cases and user behavior helps in merging APIs effectively to reduce maintenance overhead and improve overall user experience. -Designing class diagrams for video-related systems involves defining states, behaviors, and operations for entities like videos, users, and video consumption services. 1:06:10 Understanding the sequence diagram is crucial for defining the sequence of actions in a system. Authentication plays a key role in interactions between users and video services, impacting network calls and efficiency. -Importance of sequence diagram in defining actions and interactions within a system for clarity and structure. -Significance of authentication in user-video service interactions, affecting network calls and operational efficiency. 1:13:45 The video discusses defining states and behaviors of objects, emphasizing the importance of handling timestamps accurately in class diagrams and code for video-related applications. -Importance of accurately handling timestamps in class diagrams and code for video applications. Emphasizing fixing discrepancies in both places for better documentation and functionality. -Addressing the need to handle exceptions and avoid magic constants like 'plus 10' for frame time, suggesting using constants for flexibility and easy maintenance. -Discussing the variability in frame times based on video content quality and suggesting defining frame time as an object property for each frame rather than a class property. 1:21:50 The video discusses creating a database, defining classes, and manipulating data through APIs to simplify code and enable reuse in system design. It emphasizes abstracting data into objects for different use cases. -Creating a database and defining classes are crucial steps in system design to support data manipulation and API exposure for code simplification and reuse. -Abstracting data into objects with distinct state and behavior facilitates efficient data manipulation and code simplification for various use cases in system design. -The video suggests exploring free resources on design patterns and system basics before considering advanced paid sections to enhance system design knowledge. Generated by sider.ai
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.
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 🔥🔥
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
Ii dont think the course is made for Beginners. Ive been working as a mobile app developer for 4 years now but I dont know all these protocols you are talking about as well as db architectures. I think we need more explanation on what are the options to choose from and why you ve chosen a particular solution Overall thank you for the course and your precious time.
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?
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
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
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.
Free code camp can do better. This one particular example was relatively clear at times but the underlying principles of system design and considerations of how to approach a problem rather than solve this problem in particular weren't really approached
isn't bad design to define a videoframe api depending on client state? "give next 10 seconds" is not a stateless REST API. It can increase scalability complexity.
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
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
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.
Please Bring a full course of blender in individual section of sculpting ,modling_textcturing....., Video editing, 2D... We are waiting for that a lot....
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 🙏
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.
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?
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.
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 :)
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.
Context?
@@rachitshukla7111 koi context nhi h bas likhna h
@@ankitrawat06 😂😂😂😂😂😂😂
Thanks bro😌🙏
kejru to pakda gaya bhai
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!!
Exactly my thoughts.
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!
I want to get placed as a software Engineer so for this should i learn system design ??
Is this video good for a starter ?
@@magicmedia7950 well said
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
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
i believe you mean "schemas" , not "schemaless"?
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.
What about graph db
AWWW you sweet summer child. :)
- former accenture HOD.
Prerequisites for understanding the concepts is some sort of APIs Knowledgs, Networking Protocol, Database System. Just need basic concepsts.
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.
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!
Now I will start my system design journey with this course.
"The next step is to convert these requirements into classes and objects. This is where things usually go wrong." exactly what brought me to this video
Big thanks to everyone at FCC for their efforts in making these videos
Yup Gourav Sen, the OG of system design, no surprises there!!
Gaurav Sen***
@@horacinisGaurav Senpai😅
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.
I agree to this
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 🙂
Requirements (most important first) , then think of the object for feature, endpoints,outage proofing, extensibility (easy to change) , test
Gaurav hats off to your wonderful course!
Please, do something about architectures like layered, event-driven, etc. To a newbie like me it’s really complicated to build highly responsive projects.
I have a video on event driven architectures on my channel.
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).
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.
You talked a little fast, but wow, you sure a happy happy person dispensing your knowledge and I for one grateful. I'm taking an AWS Machine Learning course and getting to seee some nuts and bolts was absolutely great. That was a lot of work and you know it like the back of your hand. You you don't have a company yet? I have OPENAI ChatGPT, and you remind of the guy the Sam Altman, knows everything about how it works. really good job. Thank you.
I typed it on the search box, and you have uploaded it 5 hrs ago, Delightful!
Wonderful, I am just a passionate newbie who jumped in the field of programming a while ago I learned the languages and the tools now, I had to make my final project which is going to be a full stack project, but I was really confused that how you can create a well-functioning Application and thanks to Gaurav Son that I got to see the clear path of creating an application .... ( :
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. 👏👍
I want to get placed as a software Engineer so do I have to learn system design ?
Should I watch this course ?
@@illuminatidaylight8566This course is not sufficient. Yes,you need to study.
@@khyatichaudhary4083thank you for replying 😊
So do you have the idea about the sufficient ones ??
👀
"You want your features to be extensible. For this, you have to take out your engineering crystal ball, and gaze deeply into it..." 😂🤣
If a course starts with "hellou ewerywone!" I at least know that he put in the effort and worked damn hard to make it! Cheers!
(For the trolls, this is not racist but actually respecting and valuing the creator and effort! I have been to India.)
Thanks Gaurav, great intro! 🤘🏻😎
Thank you, the one and only Gaurav Sen!!!
From Ethiopia
Thank you!
Nice short introduction to system design! Nice job Gaurav!
This course is decent!
I learned this course in my degree, and it cost 3500 USD.
Huges thanks to Gaurav Sen and freeCodeCamp.
This course introduces system design concepts for building large-scale distributed systems, covering design patterns, data modeling, and implementation considerations. It includes a case study on designing a live streaming video app.
Highlights:
00:00 This course provides a detailed introduction to system design for beginners, focusing on engineering design patterns for building large-scale distributed systems and converting business requirements into technical solutions.
-Large scale distributed systems involve handling high data volumes and user traffic, requiring servers distributed globally for performance and fault tolerance.
-Design patterns are essential practices used by engineers to solve common problems efficiently, like distributing content to millions of users through a publisher-subscriber model.
-Engineers convert business requirements into technical solutions by defining data structures, endpoints for data manipulation, and ensuring system reliability, scalability, and maintainability.
09:06 Designing a system requires considering extensibility, testing, and scalability. Testing the design before coding is crucial for system reliability and user satisfaction.
-Importance of testing system design before coding for reliability and scalability.
-Considerations for live streaming system design, including requirements like video processing, user interactions, and scalability.
-Challenges in system design, such as failure scenarios, feature requests, and balancing front-end UI design with backend system design.
17:07 The video discusses designing backend APIs for real-time querying, including getting video frames and posting comments, and the database structure needed to support these functionalities.
-Designing backend APIs for real-time querying and returning video frames based on device type and offset.
-Implementing APIs for posting comments and manipulating data in the server.
-Discussing the database structure for storing comments, users, and videos to support the defined APIs.
25:16 The video discusses the difference between stateful and stateless protocols, highlighting how stateless protocols like HTTP benefit by simplifying client code and making the network more efficient. It also explains the importance of choosing appropriate network protocols and database solutions based on system requirements.
-Stateless protocols like HTTP simplify client code and make the network more efficient by avoiding duplicate requests, benefiting system performance.
-Choosing the right network protocols, such as TCP for reliability or UDP for real-time efficiency, is crucial for effective video transmission and system design.
-Selecting suitable database solutions, like NoSQL for scalability in handling complex data structures, plays a vital role in meeting system requirements and optimizing performance.
33:19 Highly reliable network and efficient camera are crucial for live video streaming. Different resolutions and formats are needed to cater to various devices and user preferences.
-Importance of network reliability and protocol for live video streaming. RTMP protocol ensures data integrity during video transmission.
-Significance of transforming raw video footage into different resolutions and formats to meet user device requirements. Considerations for resolution preferences and customer feedback.
-Utilizing the map reduce design pattern to process and convert raw video data efficiently. Exploring the use of different servers and compression techniques in the conversion process.
41:25 System design for large-scale distributed systems involves considerations like performance, cost, and engineering effort. Utilizing CDN solutions and well-tested tools from cloud providers can optimize system performance and cost-effectiveness.
-Importance of utilizing CDN solutions and cloud provider tools for optimizing system performance and cost-effectiveness in large-scale distributed systems.
-Challenges and considerations in system design, including authentication for content delivery through CDNs and the trade-offs between cost and performance.
-The significance of low-level design in system architecture, focusing on interactions between system components, network calls, and data handling.
49:30 Low-level design requirements like concurrency, latency, and throughput impact code writing. Use case diagrams help identify user needs. Fulfilling user requirements leads to happy customers, crucial for engineers.
-Understanding low-level design requirements such as concurrency, latency, and throughput is essential for writing efficient code.
-Utilizing use case diagrams to identify and fulfill user needs is crucial for ensuring customer satisfaction and success as an engineer.
-Translating user requirements into classes and objects is a key step in the design process, ensuring clear APIs and efficient implementation.
57:38 Understanding the difference between 'play' and 'get video frame' APIs is crucial for designing efficient video playback systems. Consider user behavior and business use cases when merging similar APIs to streamline maintenance and improve user experience.
-Differentiating between user actions like 'play' and 'get video frame' is essential for optimizing video playback functionality and enhancing user engagement.
-Considering the business use cases and user behavior helps in merging APIs effectively to reduce maintenance overhead and improve overall user experience.
-Designing class diagrams for video-related systems involves defining states, behaviors, and operations for entities like videos, users, and video consumption services.
1:06:10 Understanding the sequence diagram is crucial for defining the sequence of actions in a system. Authentication plays a key role in interactions between users and video services, impacting network calls and efficiency.
-Importance of sequence diagram in defining actions and interactions within a system for clarity and structure.
-Significance of authentication in user-video service interactions, affecting network calls and operational efficiency.
1:13:45 The video discusses defining states and behaviors of objects, emphasizing the importance of handling timestamps accurately in class diagrams and code for video-related applications.
-Importance of accurately handling timestamps in class diagrams and code for video applications. Emphasizing fixing discrepancies in both places for better documentation and functionality.
-Addressing the need to handle exceptions and avoid magic constants like 'plus 10' for frame time, suggesting using constants for flexibility and easy maintenance.
-Discussing the variability in frame times based on video content quality and suggesting defining frame time as an object property for each frame rather than a class property.
1:21:50 The video discusses creating a database, defining classes, and manipulating data through APIs to simplify code and enable reuse in system design. It emphasizes abstracting data into objects for different use cases.
-Creating a database and defining classes are crucial steps in system design to support data manipulation and API exposure for code simplification and reuse.
-Abstracting data into objects with distinct state and behavior facilitates efficient data manipulation and code simplification for various use cases in system design.
-The video suggests exploring free resources on design patterns and system basics before considering advanced paid sections to enhance system design knowledge.
Generated by sider.ai
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.
Who knew the power of free knowledge ! Thanks man for all the effort.
Most precious gift for the web developers!
Excellent walkthrough! Nitpicking: at 33:37 RTMP must be arrow-connected to the "video" table, not to the "user".
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 🔥🔥
You posted this at the perfect time thank you
For Real!! I didn't notice it was posted 7 hours ago but it is such perfect timing for me
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
The knowledge and versatility of Gaurav is just amazing, I m stunn
Ii dont think the course is made for Beginners. Ive been working as a mobile app developer for 4 years now but I dont know all these protocols you are talking about as well as db architectures. I think we need more explanation on what are the options to choose from and why you ve chosen a particular solution
Overall thank you for the course and your precious time.
Great Tutorial, videos like these really make a difference. Thank you for the efforts Gaurav and the team at FCC.
Just started the video, so far so good, should be the first step when thinking of creating software
thank you for this. System design is on interviews and there are very few resources.
You can also try InterviewReady for system design interviews.
Already learnt form this legend
This channel never fails to provide free knowledge
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?
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
Nice Microservices reference! 😂
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
Awesome content but the audio is not good quality unfortunately... hope the courses will have better audio quality next time!
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.
Wow just what I was looking for this year!!
He is Gaurav. The God Of System Design.
Kudos to this man!😊😊😊 I learn a lot in your system design course. It's a good video to watch in 2024
Thanks for this course. It will help to design my project better.
It would be great having subtitles for such important topic
Really I wait for that course so long
Try reading books. 😂
I think overall the content was great. But I am not sure if example of video processing and serving was well suited for beginners.
Oscar award for Best system designer.
Free code camp can do better. This one particular example was relatively clear at times but the underlying principles of system design and considerations of how to approach a problem rather than solve this problem in particular weren't really approached
As a non native english speaker, the indian accent adds difficulty. But it's in the pain that you soak up knowledge the better.
Hi @gkcs!
Thank you for the amazing content. Your videos have been super helpful in helping me understand system design!
Thank you!
@@gkcs you're welcome!
Do you have any project recommendations that can help with mastering these skills?
i have exam about information systems and this contains the subject thankss!!!
Gaurav? That's a person for interview. Interview is quite different than real system design.
Wowow! Super informative! Better than I had in my school!
What software is used to draw those use case ? : it's LucidChart
Nothing much to say, Just happy to see Gaurav Sen :3
Hands down the best system design course ever. Thanks so much!!!!
Bro this is nuts
What's nuts? xD
Excellent course, thank you! I really wish though that the audio quality was better
isn't bad design to define a videoframe api depending on client state? "give next 10 seconds" is not a stateless REST API. It can increase scalability complexity.
I am thinking of making a basic video sharing and streaming platform for personal projection and this really helped me a lot thankyou
A fantastic resource for any newer software engineers.
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
best gaurav sen system design video ever
Why it will be different coding in Python? Python also supports OOP.
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
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.
Love u , searching this topics from long time.
gaurav is an inspiration to many
Pretty well summed up by him , helpful for beginners like me
This is an amazing tutorial, thank you FCC!
great for viewing from ux designer point of view
This was a very educative course! highly recommended
i like the idea of Brad Pitt posting on LinkedIn :D
great course, thank you ;)
Please make a complete course on type script from beginner to advance with a few projects :)
Here is a TypeScript course we published a few months ago: ua-cam.com/video/30LWjhZzg50/v-deo.html
You need a google search course. 😂
@@aammssaamm hahaha
Fantastic course! Thank you. Curious what your setup is for the drawing stuff part - are you using an iPad + pencil? with what software?
Microsoft Whiteboard. He mentioned in a reply to one of the older comments.
5:46 got me good
Yes!
Holy cow, is that Galactus? Great easter egg, guys!
This is wonderful. Much love from Nigeria
Please Bring a full course of blender in individual section of sculpting ,modling_textcturing....., Video editing, 2D...
We are waiting for that a lot....
Blender guru
@@harshsharma03 bro any other
Great work ✅
Thanks Gaurav,
Salam from Lahore, Pakistan
Does anyone know about the software he was using for drawing UML diagrams?
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 🙏
when designing a system should you focus on lower level protocols? I still dont understand how transport layer protocols are used in the code
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.
What diagramming tool are you using?
It's lucid chart
Just starting to watch this video, the audio quality seems really off. maybe it's just me?
seems Interesting how he breaks videos into frames rather than using wrapper video service!
Thank you so much ❤😂🎉👏🙏🏻🤔🤝👌👍
fantastic do you have a course with AWS node?
Hi sir this is for beginners or intermediate and advanced level persons. What are the prerequisites?
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?
It's Microsoft Whiteboard.
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.