System Design Topics Overview
1. Introduction to System Design
- What is system design?
- Importance of system design in software engineering.
- Design considerations: scalability, performance, reliability, etc.
2. Scalability
- Vertical vs Horizontal Scaling.
- Load Balancing: Round Robin, Least Connections, IP Hashing.
- Stateless vs Stateful Servers.
- Database Sharding and Replication.
3. Load Balancing
- Concepts of Load Balancing.
- Types: Software-based vs Hardware-based.
- Algorithms: Consistent Hashing, Weighted Round Robin.
- Use of Load Balancers in system design.
4. Caching
- Types of Caching: Application-level, Distributed Caching.
- Cache Replacement Policies: LRU, LFU, FIFO.
- Cache Invalidation Strategies.
- Distributed Cache Systems like Redis and Memcached.
5. Database Design
- Relational vs NoSQL Databases.
- Types of NoSQL: Key-Value Store, Document Store, Column Store, Graph Databases.
- Database Sharding, Replication, Partitioning.
- CAP Theorem: Consistency, Availability, Partition Tolerance.
6. Consistency and Availability
- Strong vs Eventual Consistency.
- Data Replication: Master-Slave, Leaderless Replication.
- Consensus Algorithms: Paxos, Raft.
7. Microservices Architecture
- Monolithic vs Microservices Architecture.
- Communication between Microservices: REST, gRPC.
- Service Discovery, API Gateway, Circuit Breakers.
8. Message Queues and Event-Driven Architecture
- Message Queuing Systems: Kafka, RabbitMQ.
- Pub/Sub Model, Event Sourcing, CQRS.
- Asynchronous Communication between services.
9. Designing High Availability Systems
- Redundancy, Failover Mechanisms.
- Distributed Systems Fault Tolerance.
- Leader Election in Distributed Systems.
10. CDN (Content Delivery Network)
- How CDNs work?
- Use of CDNs for Static and Dynamic Content Delivery.
- Popular CDNs like Cloudflare, Akamai.
11. API Design
- RESTful API Design Principles.
- Rate Limiting, Throttling, Caching in APIs.
- GraphQL vs REST APIs.
12. Security in System Design
- Authentication and Authorization: OAuth, JWT.
- Encryption: Symmetric vs Asymmetric, TLS/SSL.
- Security best practices for distributed systems.
13. Logging and Monitoring
- Logging Levels: Info, Debug, Error, etc.
- Centralized Logging Systems: ELK Stack.
- Monitoring Tools: Prometheus, Grafana.
- Alerts and Incident Management.
14. Distributed Systems
- What are distributed systems?
- Characteristics: Consistency, Availability, Partition Tolerance.
- Distributed System Architectures: Client-Server, Peer-to-Peer.
- Common challenges: Data synchronization, fault tolerance.
15. CAP Theorem
- Detailed explanation of Consistency, Availability, and Partition Tolerance.
- Real-world examples: When to sacrifice Consistency for Availability and vice-versa.
16. Rate Limiting and Throttling
- Why rate limiting is important?
- Algorithms: Token Bucket, Leaky Bucket.
- Implementing rate limiting in APIs.
17. Search Systems
- How search engines work.
- Designing large-scale search systems.
- Text indexing, Inverted Index, Elasticsearch.
18. Data Partitioning and Sharding
- Horizontal vs Vertical Partitioning.
- Database Sharding techniques.
- Partition keys, Consistent Hashing.
19. Data Warehousing and Big Data Systems
- OLTP vs OLAP.
- Data Lakes vs Data Warehouses.
- Big Data technologies: Hadoop, Spark, MapReduce.
20. Real-Time Data Processing
- Stream Processing vs Batch Processing.
- Real-time analytics systems: Apache Storm, Spark Streaming, Kafka Streams.