TLDR 🔥
System Design serves as the blueprint for creating a software system. It involves defining the architecture, components, and interfaces necessary to meet specific requirements. This topic is highly relevant in the software development industry and is frequently discussed in technical interviews. Acquiring system design skills can indeed lead to a 10x salary increase. 🚀
Certainly! System design is indeed a very complex subject that goes beyond mastering a coding language . It includes understanding system architectures, design patterns, performance optimization, and other intricate topics. Learning system design from specialists or coding bootcamps can be expensive, often costing around $1000.
To help you on your journey to becoming a system design hero, in this article I have curated a list of free and valuable resources .
1. System Design Roadmap
Contains visually designed and easy to udestand roadmaps attached with useful links to master system design and other programming resources for free
kamranahmedse / developer-roadmap
Interactive roadmaps, guides and other educational content to help developers grow in their careers.
Community driven roadmaps, articles and resources for developers
Roadmaps are now interactive, you can click the nodes to read more about the topics.
Here is the list of available roadmaps with more being actively worked upon.
Have a look at the get started page that might help you pick up a path.
- Frontend Roadmap / Frontend Beginner Roadmap
- Backend Roadmap / Backend Beginner Roadmap
- DevOps Roadmap / DevOps Beginner Roadmap
- Full Stack Roadmap
- Git and GitHub
- API Design Roadmap
- Computer Science Roadmap
- Data Structures and Algorithms Roadmap
- AI and Data Scientist Roadmap
- AI Engineer Roadmap
- AWS Roadmap
- Linux Roadmap
- Terraform Roadmap
- Data Analyst Roadmap
- MLOps Roadmap
- Product Manager Roadmap
- Engineering Manager Roadmap
- QA Roadmap
- Python Roadmap
- Software Architect Roadmap
- Game Developer Roadmap / Server Side Game Developer
- Software Design and Architecture Roadmap
- JavaScript Roadmap
- TypeScript Roadmap
- C++ Roadmap
- React Roadmap
- React…
2. System Design primer
Considered for bible for system design this github repository contains a-z free resources to master system design
donnemartin / system-design-primer
Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.
English ∙ 日本語 ∙ 简体中文 ∙ 繁體中文 | العَرَبِيَّة ∙ বাংলা ∙ Português do Brasil ∙ Deutsch ∙ ελληνικά ∙ עברית ∙ Italiano ∙ 한국어 ∙ فارسی ∙ Polski ∙ русский язык ∙ Español ∙ ภาษาไทย ∙ Türkçe ∙ tiếng Việt ∙ Français | Add Translation
Help translate this guide!
The System Design Primer
Motivation
Learn how to design large-scale systems.
Prep for the system design interview.
Learn how to design large-scale systems
Learning how to design scalable systems will help you become a better engineer.
System design is a broad topic. There is a vast amount of resources scattered throughout the web on system design principles.
This repo is an organized collection of resources to help you learn how to build systems at scale.
Learn from the open source community
This is a continually updated, open source project.
Contributions are welcome!
Prep for the system design interview
In addition…
3. awesome-system-design-resources
This repository contains System Design Key Concepts , building blocks , architechtural patterns , interview problems , distributed sytems papers , books and many more
ashishps1 / awesome-system-design-resources
Learn System Design concepts and prepare for interviews using free resources.
This repository contains free resources to learn System Design concepts and prepare for interviews.
Join my free AlgoMaster Newsletter and get a FREE System Design Interview Handbook in your inbox.
📌 System Design Key Concepts
- Scalability
- Availability
- CAP Theorem
- ACID Transactions
- Consistent Hashing
- Rate Limiting
- SPOF
- Fault Tolerance
- Consensus Algorithms
- Gossip Protocol
- Service Discovery
- API Design
- Disaster Recovery
- Distributed Tracing
🛠️ System Design Building Blocks
- Content Delivery Network (CDN)
- Proxy vs Reverse Proxy
- Domain Name System (DNS)
- Caching
- Caching Strategies
- Distributed Caching
- Load Balancing
- Databases Types
- SQL vs NoSQL
- Database Indexes
- Consistency Patterns
- HeartBeats
- Circuit Breaker
- Idempotency
- Database Scaling
- Data Replication
- Data Redundancy
- Database Sharding
- Database Architectures
- Failover
- Bloom Filters
- Message Queues
- WebSockets
- Checksums
- API Gateway
- Microservices Guidelines
- Distributed Locking
⚖️ System Design Tradeoffs
4. System-Design
This repository contains artchitechtural ptterns of most pospular apps and tech startups
codersguild / System-Design
It's just fascinating. How is modern software designed? 🤔 Some design-level considerations for scalability, maintainability eventual consistency, availability & reliability. 👨💻 Interview Prep. 👨💻
System Design Bytes for Enthusiasts
I complied and collected some of the articles as a part of doing CS654A course at IIT Kanpur for a fantastic course on Advanced Software Architecture taught by Prof.Dr.T.V.Prabbhakar.
Modified from Zach system design repository. Added more links and topics to cover on both PS/DS & System Design Interviews. We will keep updating this posting from time to time. Some more awesome resource
SYSTEM DESIGN IS NOT JUST FOR INTERVIEWS, IT CAN BE HOW YOU MANAGE YOUR LIFE. GIVE IT A THOUGHT
Disclaimer/Acknowledgements
I didn't write the articles
myself. I love expanding my understanding of system design
complexities and thus read many books, research papers, and articles that enhance my knowledge. I take the opportunity to thank everyone who found this repository useful. I would like to thank all the authors and developers who wrote the articles aggregated in this repository.
More Content Comming
…5 . system-design-interview
The only repository you must checkout 7 days before your system design interview
checkcheckzz / system-design-interview
System design interview for IT companies
How to prepare system design questions for an IT company
System design is a very broad topic. Even a software engineer with many years of working experience at a top IT company may not be an expert on system design. If you want to become an expert, you need to read many books, articles, and solve real large scale system design problems.
This repository only teaches you how to handle the system design interview with a systematic approach in a short time. You can dive into each topic if you have time. Of course, welcome to add your thoughts!
- System Design Interview Tips
- Basic Knowledge about System Design
- Company Engineering Blogs
- Products and Systems
- Hot Questions and Reference
- Good Books
- Object Oriented Design
Clarify the constraints and identify the user cases
Spend a few minutes questioning the interviewer and agreeing on the…
6. Grokking-System-Design
This repository will help you master system design from basis to advanced level
Jeevan-kumar-Raj / Grokking-System-Design
Systems design is the process of defining the architecture, modules, interfaces, and data for a system to satisfy specified requirements. Systems design could be seen as the application of systems theory to product development.
Source: educative
Interview Process
- Scope the problem
- Don’t make assumptions.
- Ask clarifying questions to understand the constraints and use cases.
- Steps
- Requirements clarifications
- System interface definition
- Sketch up an abstract design
- Building blocks of the system
- Relationships between them
- Steps
- Back-of-the-envelope estimation
- Defining data model
- High-level design
- Identify and address the bottlenecks
- Use the fundamental principles of scalable system design
- Steps
- Detailed design
- Identifying and resolving bottlenecks
Distributed System Design Basics
- Key Characterics
- Load balancing
- Caching
- Sharding
- Indexes
- Proxies
- Queues
- Redundancy
- SQL vs. NoSQL
- CAP Theorem
- Consistent Hashing
- Client Server Communication
System Designs
- Short URL Service
- Pastebin
- Dropbox
- Youtube
- Twitter Search
- Web Crawler
- Facebook Newsfeed
- Yelp
- Uber Backend
- Ticketmaster
System Design Interviews: A step by step guide
SYSTEM DESIGN PREPARATION
- How to prepare for and answer system design questions
Objective
Learning about and implementing large-scale distributed system is not easy. I do not want…
7.low-level Design
This repository mainly focuses on low level system design
prasadgujar / low-level-design-primer
Dedicated Resources for the Low-Level System Design. Learn how to design and implement large-scale systems. Prep for the system design interview.
low-level-design-primer
Motivation
Learn low level design of system at scale prepare for the low level design (LLD) / Machine Coding round interviews.
Learn to design low level system
Learning low level design of scalable systems will help you become better engineer.
This repo is an organized collection of resources to help you learn low level design of systesm's.
Resources
Contributing
Feel free to submit pull requests to help:
- Add new questions
- Improve new questions
- add new solutions
- Fix errors
- Improve sections
- Add new sections
Under development
Interested in adding a section or helping complete one in-progress? Contribute!
- how to guide and study material along with various resources.
- add more questions and improve exisiting questions.
- add solutions for the problems along with their detailed explaination (maybe video)
Credits
Credits and sources are provided throughout this repo.
Special…
8. machine-learning-systems-design
A book on machine learning system design
chiphuyen / machine-learning-systems-design
A booklet on machine learning systems design with exercises. NOT the repo for the book "Designing Machine Learning Systems"
Machine Learning Systems Design
Read this booklet here.
This booklet was my initial attempt to write about machine learning systems design back in 2019. My understanding of the topic has gone through significant iterations since then. My book Designing Machine Learning Systems (O'Reilly, June 2022) is much more comprehensive and up-to-date. The new book's repo contains the full table of contents, chapter summaries, and random thoughts on MLOps tooling.
This booklet covers four main steps of designing a machine learning system:
- Project setup
- Data pipeline
- Modeling: selecting, training, and debugging
- Serving: testing, deploying, and maintaining
It comes with links to practical resources that explain each aspect in more details. It also suggests case studies written by machine learning engineers at major tech companies who have deployed machine learning systems to solve real-world problems.
At the end, the booklet contains 27 open-ended machine learning systems design questions that might come…
9. System Design 101
Start learning system design as a beginner
ByteByteGoHq / system-design-101
Explain complex systems using visuals and simple terms. Help you prepare for system design interviews.
【 👨🏻💻 YouTube | 📮 Newsletter 】
System Design 101
Explain complex systems using visuals and simple terms.
Whether you're preparing for a System Design Interview or you simply want to understand how systems work beneath the surface, we hope this repository will help you achieve that.
Table of Contents
-
Communication protocols
- REST API vs. GraphQL
- How does gRPC work?
- What is a webhook?
- How to improve API performance?
- HTTP 1.0 -> HTTP 1.1 -> HTTP 2.0 -> HTTP 3.0 (QUIC)
- SOAP vs REST vs GraphQL vs RPC
- Code First vs. API First
- HTTP status codes
- What does API gateway do?
- How do we design effective and safe APIs?
- TCP/IP encapsulation
- Why is Nginx called a “reverse” proxy?
- What are the common load-balancing algorithms?
- URL, URI, URN - Do you know the differences?
- CI/CD
- Architecture patterns
10.system-design-resources
Become interview ready with this repository contains topics like video processing , Cluster and Workflow Management,Service Mesh and many more
InterviewReady / system-design-resources
These are the best resources for System Design on the Internet
System Design Resources
These are the best resources for System Design on the Internet.
Table of Contents
- Video Processing
- Cluster and Workflow Management
- Intra-Service Messaging
- Message Queue Antipattern
- Service Mesh
- Practical System Design
- Distributed File System
- Time Series Databases
- Rate Limiting
- In Memory Database - Redis
- Network Protocols
- Chess Engine Design
- Subscription Management System
- Google Docs
- API Design
- NoSQL Database Internals
- NoSQL Database Algorithms
- Database Replication
- Containers and Docker
- Capacity Estimation
- Publisher Subscriber
- Event Driven Architectures
- Software Architectures
- Microservices
- Distributed Transactions consistency Patterns
- Load Balancing
- Alerts and Anomaly Detection
- Distributed Logging
- Metrics and Text Search Engine
- Single Point of Failure
- Location Based Services
- Batch Processing
- Real Time Stream Processing
- Caching
- Distributed Consensus
- Authorization
- Content Delivery Network
- Testing Distributed Systems
- System Design Resources
Video Processing
- Transcoding Videos at Scale
- Facebook Video Broadcasting
- Netflix Video Encoding at Scale
- Netflix Shot based encoding
Top comments (0)