As a beginner I wanted to learn how to design large scale distributed systems.
Prepare for the System Design interview.
As you might know that we need to have good understanding of various Computer Science Fundamentals involving Distributed Systems, Computer Network, Operating System along with good problem solving skills (Data Structures and Algorithms) for acing the interviews at top product based companies.
Let's first learn Basic Concepts for designing higly scalable data intensive applications.
-
Caching
- brief explanation - gitbooks
- educative post
- medium article
-
Data Partitioning
- brief explanation - gitbooks
- educative post
- ScienceDirect post
-
Sharding
- medium article
- Understanding Database Sharding - digital ocean
-
Load Balancing
- brief explanation - gitbooks
- educative post
- medium article
-
Indexes
- brief explanation - gitbooks
-
Proxies
- brief explanation - gitbooks
-
Queues
- brief explanation - gitbooks
-
Redundancy and Replication
- brief explanation - gitbooks
- educative post
- medium post
-
SQL vs NoSQL
- brief explanation - gitbooks
-
CAP Theorem
-
Consistent Hashing
-
Designing Tiny URL
- Educative io post
- Geek for Geeks post
- Medium - Tiny URL and Instagram design
- Leetcode discussion
- Detailed blog by nlogn
-
Designing Instagram
-
Designing Twitter
-
Designing Dropbox
-
Designing YouTube or Netflix
-
Designing a Parking lot
-
Designing Whatsapp - Chat Messaging System
-
Designing Facebook Messenger
- High Scalability
- The complete guide to System Design in 2022 by Educative.io
- Medium - system design concepts
- How Web Works
- Hired In Tech - System Design for Tech Interviews
- 101 Design Patterns & Tips for Developers
- Introduction to Distributed System Design - Google Code University
- Hackernoon - Anatomy of a System Design Interview
- How NOT to design Netflix in your 45-minute System Design Interview?
- What Powers Instagram: Hundreds of Instances, Dozens of Technologies
- How to Develop Chat System Design like Facebook Messenger | Whatsapp
- 8 Steps to acing your next system design interview
- best practices for building something like a news feed
Understanding Google File System Architecture (GFS)
- GFS original paper
- MIT lecture - YouTube
- IIT Patna lecture - YouTube
- Detailed explantion by ScienceDirect
- MapReduce Simplified Data Processing on Large Clusters
Understanding Google Search engine
Understanding DynamoDB Architecture
- Dynamo: Amazonβs Highly Available Key-value Store
- Best Practices for Designing and Architecting with DynamoDB
- Gaurav Sen playlist - must do playlist
- Grokking the System Design Interview
- Udit Agarwal low level designs, design patterns, system design videos - suggested by Googler :)
- Tech Dummies playlist
- Tushar Roy playlist
- System Design Interview channel
- Reditt Scaling
- Amazon System Design Preparation (SIP)
- Success in tech playlist - Coding and System Design Interview Questions
- Think Software channel playlist - Systems Design Interview Questions
- Scalability lecture by David Mellan Harvard
- Code Karle YouTube playlists and their website blogs
- Design Patterns in Object Oriented Programming playlist - Christopher Okhravi
- Design Patterns by Sudo Code - Googler's suggestion
- Facebook and memcached - Tech Talk
- "Caching at Netflix: The Hidden Microservice" by Scott Mansfield
- Why Google Stores Billions of Lines of Code in a Single Repository
- Scaling Instagram Infrastructure
- Google Production Environment
- Microservices at Netflix Scale: Principles, Tradeoffs & Lessons Learned
- Four Distributed Systems Architectural Patterns by Tim Berglund
- Seattle Conference on Scalability: YouTube Scalability
- Operations at Twitter: Scaling Beyond 100 Million Users
- Scaling Redis at Twitter