This question is basically eight questions crammed into one.
Start by clarifying the workload characteristics (read/write ratio, data size, access patterns) and then systematically compare each trade-off against the given SLOs (20k QPS, P99 <200ms, 99.99% availability). For each choice, provide a concrete scenario, justify it, and explicitly discuss implications for latency, availability, cost, operability, and failure modes.
Pro tip: Anchor every trade-off to the SLOs and emphasize that 99.99% availability (52 minutes downtime/year) demands redundancy and graceful degradation at every layer. Show maturity by acknowledging that the 'right' answer depends on context and that hybrid approaches are often best.
Ask about read/write ratio, data volume, consistency needs, and geographic distribution. State assumptions like 20k QPS mostly reads, data size in TBs, and global user base.
Compare monolith (simpler ops, lower latency, but scaling and fault isolation challenges) vs microservices (independent scaling, fault isolation, but network overhead and operational complexity). Choose based on team size and domain complexity.
For each data type, choose relational (strong consistency, complex queries), document (flexible schema, horizontal scaling), or wide-column (high write throughput, tunable consistency). Discuss strong vs eventual consistency and their impact on latency and availability.
Decide between synchronous RPC (REST/gRPC) for low-latency, strongly consistent calls and event-driven messaging for decoupling and resilience. Choose caching strategies (client, CDN, application, database) based on data volatility and access patterns.
Choose partitioning strategy (hash, range, geo) to distribute load and enable scalability. Select load balancing approach (L4 vs L7, global vs local) to meet latency and availability goals, considering health checks and failover.
AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.