Accepted answer
Shard when a single instance's vertical scaling ceiling is visibly approaching, not preemptively. Sharding adds real operational complexity, cross-shard queries, rebalancing, migrations times N, that's expensive to carry before you actually need it.