Asked about The classic fundamentals

How would you scale a read-heavy service?

An answer that works

Cache first, since it is the cheapest win, with an expiry chosen from how stale the data may acceptably be. Then read replicas, accepting replication lag. Sharding only when writes are the limit, since it makes cross-shard queries expensive and the shard key is hard to change later.

Reading an answer is not being able to give one. The section that teaches this is The classic fundamentals, 6 hours of Distributed systems.

Learn this properly