Estimating it: reason from user behaviour, not from a guess. For each core action, ask how many people consume what one person produces.
How each ratio drives design:
Very read-heavy (100:1+): justifies caching as the primary lever, read replicas, denormalisation, and precomputation - do expensive work once on write so reads are trivial, such as fan-out-on-write for timelines. Accept slower, more expensive writes; they are rare.
Balanced (near 1:1): caching helps far less because entries are invalidated almost as fast as they are populated. Focus on efficient direct storage access and partitioning.
Write-heavy (inverted): caching is nearly useless. Go to LSM-tree stores, batching, partitioning, and pre-aggregation. Read replicas do not help, since each replica absorbs every write anyway.
The sentence to say: "With a 200:1 read ratio, I will happily make writes 10x more expensive to make reads 10x cheaper - that is a 20x net win."