System Design is all about building reliable, scalable and maintainable systems.
- Books
- Youtube Playlists
- Github Repos
- Courses
- Web Application and Software Architecture 101 (accessible using Github student dev pack)
- Web Architecture - (module 3)
- client-server
- types of clients
- REST API
- HTTP PUSH, PULL
- 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
- Scalability
- what is scalability
- horizontal vs vertical
- scaling for global audience
- vertical and horizontal scaling
- isolation of services
- CDN
- Edge cache
- Geo-DNS
- Scalability- module 4
- application latency vs n/w latency
- Primary bottlenecks for scalability - databases, application architecture, caching, load balancers etc
- Performance vs scalability
- Throughput vs Latency
- Understanding Latency vs Througput
- Measuring Latency: average, p90, p99 etc
- Availability vs Consistency
- Eventual consistency vs strong consistency
- ACID vs BASE in Databases
- Further read on CAP theorem -
- High Availability- module 5
- fault tolerance, redundancy, replication, HA clustering
- Databases - module 7
- relational vs non relational, polyglot persistence, types of dbs
- Database scaling using Replication
- master-slave, master-master architecture
- replication lag
- synchronous vs async replication
- replica vs snapshot
- Database Sharding
- vertical vs horizontal sharding
- logical vs physical shards
- sharding strategies - dynamic, algorithmic
- advantages and pitfalls
- Caching
- client caching, web server caching, cdn caching etc
- cache updating strategies
- Introduction to Architecting systems for scale
- Caching - Application vs database caching, in-memory caches, CDNs, Cache invalidation