Is your plan to stick with a hashing algorithm for tenant sharding, or allow for more fine grain control to shift large tenants between and shards?
Hot shard management is a job in of itself and adds lot of operational complexity.
Hot shard management is a job in of itself and adds lot of operational complexity.
I think the first step is to add as much monitoring as possible to catch the problem early. There is also the dry-run mode [1] that you can try before sharding at all to make sure your traffic would be evenly split given a choice of sharding key.
[1] https://pgdog.dev/blog/sharding-a-real-rails-app#dry-run-mod...