In production systems, why is fault tolerance considered a key advanced concept?
Think about what happens if a system crashes unexpectedly in production.
Fault tolerance means the system can handle errors or failures without stopping, which is essential to keep services available to users.
Which system architecture is best suited to handle increasing user load in a production environment?
Consider how parts of the system can grow independently to handle more users.
Microservices allow scaling individual services based on demand, improving scalability and fault isolation.
What is the main advantage of horizontal scaling in production systems?
Think about spreading work across multiple machines versus improving one machine.
Horizontal scaling adds more servers to distribute load and improve fault tolerance, enhancing availability.
Choosing eventual consistency in a distributed system means:
Consider the balance between data accuracy and system uptime.
Eventual consistency allows temporary differences in data across nodes to keep the system available and responsive.
A production system expects 1 million daily active users, each making 10 requests per hour during 10 peak hours. Each request requires 100ms CPU time on average. Estimate the minimum number of servers needed if each server can handle 100 requests per second.
Calculate total requests during peak, then requests per second, then divide by server capacity.
Total requests = 1,000,000 users * 10 requests/hour * 10 hours = 100 million requests/day. Peak hour requests = 1,000,000 * 10 = 10 million requests/hour. Requests per second = 10,000,000 / 3600 ≈ 2777. Servers needed = 2777 / 100 ≈ 28.