- Introduction
- What is System Design?
- How to Approach System Design?
- Performance vs Scalability
- Latency vs Throughput
- Availability vs Consistency
- CAP Theorem
- CP - Consistency and Partition Tolerance
- AP - Availability and Partition Tolerance
- CAP Theorem
- Consistency Patterns
- Weak Consistency
- Eventual Consistency
- Strong Consistency
- Availability Patterns
- Fail-over
- Active-Passive
- Active-Active
- Replication
- Master-slave Replication
- Master-master Replication
- Availability in Numbers
- 99.9% availability - three 9s
- 99.99% availability - four 9s
- Availability in parallel vs in sequence
- In Sequence
- In Parallel
- Fail-over
- Background Jobs
- Event Driven
- Schedule-Driven
- Returning Results
- Domain Name System
- Content Delivery Networks
- Push CDNs
- Pull CDNs
- Load Balancer
- Layer-4 Load Balancing
- Layer 7 Load Balancing
- Algorithms
- Horizontal Scaling
- Reverse Proxy
- Load Balancer vs Reverse Proxy
- Application Layer
- Microservices
- Service Discovery
- Databases
- RDBMS
- Master-Slave Replication
- Master-Master Replication
- Federation
- Sharding
- Denormalization
- SQL Tuning
- Tighten up the schema
- Use good indices
- Avoid expensive joins
- Partition tables
- Tune the query cache
- NoSQL
- Key-Value Store
- Document Store
- Wide Column Store
- Graph Database
- SQL or NoSQL
- RDBMS
- Caching
- Client caching
- CDN caching
- Web server caching
- Database caching
- Application caching
- Caching at the database query level
- Caching at the object level
- When to update the cache
- Cache-aside
- Write-through
- Write-behind (write-back)
- Refresh-ahead
- Client caching
- Asynchronism
- Message queues
- Task queues
- Back pressure
- Idempotent Operations
- Communication
- Hypertext transfer protocol (HTTP)
- Transmission control protocol (TCP)
- User datagram protocol (UDP)
- Remote procedure call (RPC)
- RPC and REST calls comparison
- Representational state transfer (REST)
- Performance Antipatterns
- Busy Database
- Busy Frontend
- Chatty I/O
- Extraneous Fetching
- Improper Instantiation
- Monolithic Persistence
- No Caching
- Noisy Neighbor
- Retry Storm
- Synchronous I/O
- Cloud Design Patterns
- Data Management
- Cache-Aside
- CQRS
- Event Sourcing
- Index Table
- Materialized View
- Sharding
- Static Content Hosting
- Valet Key
- Design and Implementation
- Ambassador
- Anti-Corruption Layer
- Backends for Frontend
- CQRS
- Compute Resource Consolidation
- External Configuration Store
- Gateway Aggregation
- Gateway Offloading
- Gateway Routing
- Leader Election
- Pipes and Filters
- Sidecar
- Static Content Hosting
- Strangler Fig
- Messaging
- Asynchronous Request Reply
- Claim Check
- Choreography
- Competing Consumers
- Pipes and Filters
- Priority Queue
- Publisher/Subscriber
- Queue-Based Load Leveling
- Scheduling Agent Supervisor
- Seuquential Convoy
- Reliability
- Availability
- Deployment Stamps
- Geodes
- Health Endpoint Monitoring
- Queue-Based Load Leveling
- Throttling
- High Availability
- Deployment Stamps
- Geodes
- Health Endpoint Monitoring
- Bulkhead
- Circuit Breaker
- Resiliency
- Bulkhead
- Circuit Breaker
- Compensating Transaction
- Health Endpoint Monitoring
- Leader Election
- Queue-Based Load Leveling
- Retry
- Scheduler Agent Supervisor
- Security
- Federated Identity
- Gatekeeper
- Valet Key
- Availability
- Data Management
- Monitoring
- Health Monitoring
- Availability Monitoring
- Performance Monitoring
- Security Monitoring
- Usage Monitoring
- Instrumentation
- Visualization and Alerts
Last active
January 12, 2023 15:35
-
-
Save kamranahmedse/96a951effcdfa0d9f94bf24667a81695 to your computer and use it in GitHub Desktop.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment