Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
System Design Fundamentals
Rating: 4.2 out of 5(398 ratings)
7,854 students

System Design Fundamentals

Design Fundamentals and Interview Process
Created byKamal Sharma
Last updated 5/2021
English
English [Auto],

What you'll learn

  • Students would learn about System Design fundamentals and strategy of designing a large system.

Course content

2 sections11 lectures59m total length
  • Introduction1:06

    Understand design fundamentals as essential knowledge for system design, including data partitioning and charting data, data redundancy, client load balancing, physical databases, and deployment strategies.

  • Data Partitioning6:59

    Explore data partitioning to distribute data across multiple servers with vertical and horizontal strategies, including hashing, range, round-robin, and geo partitioning.

  • Data Redundancy and Replications2:50

    Explore how data redundancy and replication boost availability and failover, scale throughput, and apply full dump and load, incremental, or logged application methods across replication strategies.

  • Cache & CDN4:04

    Explore caching and content delivery networks to reduce latency by serving data from fast storage, with a focus on top 20 percent of items and distributed caching across multiple servers.

  • Load Balancing4:05

    Balance requests across servers, monitor health, and remove unhealthy nodes to prevent downtime. Compare software and hardware load balancers, and algorithms like round-robin, least connections, least response time, and hashing.

  • SQL vs NOSQL5:40

    Learn how SQL and NoSQL databases compare, including key-value stores, document databases, column families, and graph databases, and choose based on use case, schema flexibility, and agile development.

  • Big Data Solutions4:07

    Discover how big data solutions guide system design using open source platforms and cloud services to accelerate development and enable scalable data processing with Hadoop and MapReduce.

  • Hashing and Consistent Hashing3:59

    Explore hashing and consistent hashing for distributing data across multiple servers. See how a hash function maps keys to a circular space and uses labels and angles to balance load.

  • Application Deployment Stretegy5:15

    Explore the application deployment strategy with blue-green deployment (blue and green production versions and traffic switching for zero downtime) and partial traffic rollouts, addressing data compatibility, cost, and rollback considerations.

Requirements

  • The is no prerequisites for this course to start.

Description

Designing an application without knowing design fundamentals is like you are playing a game without knowing the rules. So You can consider design fundamentals as foundational knowledge for system design. It is as important as data structures for Coding interviews.

One thing is very important that there is nothing like wrong design, It always may be good or bad design. When interviewers ask you about system limitations or design problems then fundamental knowledge can be the key player to answer such questions because all the fundamentals are solutions for some specific problems.

The goal of such a question is to check your problem-solving ability on a complex problem. It is quite understandable that you might not have the experience to design such big applications but proposing the best possible solutions would show your understanding of design fundamentals.

The interviewer wants to see if you consider common distributed system challenges in your design like distributing the data to multiple machines and aggregating them together later and equally distributing the load on multiple servers. It is also quite interesting to see your design approach when user throughput increases.

System design questions are quite open-ended and there is no standard answer for such questions. They want to see that you think about operational scenarios, edge cases, limitations, and assumptions.

Interviewers can decide whatever direction the discussion will go in. With that in mind, even for the same question, you may have a completely different discussion with a different interviewer.

.

Who this course is for:

  • Students who are part of software design or development process would be benefited with the corse.