100DaysOfSystemDesign
System Design is all about building reliable, scalable and maintainable systems.
π
Major Resources - Books
- Youtube Playlists
- Github Repos
- Courses
- Web Application and Software Architecture 101 (accessible using Github student dev pack)
β³
Progress Day 1
Day 2
- Web Architecture - (module 3)
- client-server
- types of clients
- REST API
- HTTP PUSH, PULL
Day 3
- HTTP PULL - Polling with ajax - (module 3)
- Persistent Connection Approaches(HTTP PUSH)
- HTTP Polling
- HTTP Long polling
- web socket
- server send events
- Streaming over HTTP
Day 4
- Scalability
- what is scalability
- horizontal vs vertical
- scaling for global audience
- vertical and horizontal scaling
- isolation of services
- CDN
- Edge cache
- Geo-DNS
Day 5
- Scalability- module 4
- application latency vs n/w latency
- Primary bottlenecks for scalability - databases, application architecture, caching, load balancers etc
- Performance vs scalability
Day 6
- Throughput vs Latency
- Understanding Latency vs Througput
- Measuring Latency: average, p90, p99 etc
Day 7
- Availability vs Consistency
Day 8
- Eventual consistency vs strong consistency
- ACID vs BASE in Databases
- Further read on CAP theorem -
Day 9
- High Availability- module 5
- fault tolerance, redundancy, replication, HA clustering
Day 10
Day 11
Day 12
Day 13
Day 14
- Databases - module 7
- relational vs non relational, polyglot persistence, types of dbs
Day 15
- Database scaling using Replication
- master-slave, master-master architecture
- replication lag
- synchronous vs async replication
- replica vs snapshot
Day 16
- Database Sharding
- vertical vs horizontal sharding
- logical vs physical shards
- sharding strategies - dynamic, algorithmic
- advantages and pitfalls
Day 17
- Caching
- client caching, web server caching, cdn caching etc
- cache updating strategies
Day 18
- Introduction to Architecting systems for scale
- Caching - Application vs database caching, in-memory caches, CDNs, Cache invalidation