System Design: Fundamentals- Introduction
Designing systems like Youtube, Facebook, and Google need a strong grasp of System Design fundamentals but first, we need to know what system Design is.
If you are searching for a system Design definition, here are some screenshots that may help you
there is another one
But I am here to tell you what is system Design in a more simplified form. Below Diagram of a simple system will definitely help
So System Design is basically a combination of two things. One is System i.e Assembly of various components of the system and Design i.e how effectively the assembly of the system can be done.
We will learn system fundaments in a series of blog posts, which will help us understand the fundamentals that will help us build complex systems like Facebook, Youtube, DropBox, and so on.
Here is a small checklist that we are going to have a brief look in the series
- Client-server Model
- Network Protocols
- Storage
- Latency And Throughput
- Availability
- Caching
- Proxies
- Load balancers
- hashing
- Relational Databases
- Key-value Stores
- Specialized Storage Paradigms
- Replication And Sharding
- Leader Election
- Peer-To-Peer Networks
- Polling And Streaming
- Configuration
- Rate Limiting
- Logging And Monitoring
- Publish/Subscribe Pattern
- MapReduce
- Security And HTTPS
- API Design
These fundaments knowledge will give a strong foundation to tackle a system design interview question
Note: A System Design question like Design Uber or Like Design Youtube is simple to hear but the answer to this is always subjective and our fundaments knowledge learned in the series will help us to take the right decision while designing the system and defend the approach you provided to the interviewer
So let’s learn about our first fundamental concept Client-server Model
And if you are interested to learn end to end System Design, check out the amazing course by iNeuron