Skip to content

SrGrace/System-Design-and-Scalability

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

System-Design-and-Scalability

Handling the Questions

  • Communicate
  • Go broad first
  • Use the whiteboard
  • Acknowledge the concerns
  • Be careful about assumptions
  • State the assumptions explicitly
  • Estimate when necessary
  • Drive

Design: Step-By-Step

  • Step 1: Scope the Problem
  • Step 2: Make Reasonable Assumptions
  • Step 3: Draw the Major Components
  • Step 4: Identify the Key Issues
  • Step 5: Redesign for the Key Issues

Algorithms that Scale: Step-By-Step

  • Step 1: Ask Questions
  • Step 2: Make Believe
  • Step 3: Get Real
  • Step 4: Solve Problems

Key Concepts

  • Horizontal vs. Vertical Scaling
  • Load Balancer
  • Database Denormalization and NoSQL
  • Database Partitioning (Sharding)
    • Vertical Partitioning
    • Key-Based (or Hash-Based) Partitioning
    • Directory-Based Partitioning
  • Caching
  • Asynchronous Processing & Queues
  • Networking Metrics
    • Bandwidth
    • Throughput
    • Latency
  • MapReduce

Considerations

  • Failures
  • Availability and Reliability
  • Read-heavy vs. Write-heavy
  • Security

There is no "perfect" system