Shameless plug: I have a small YouTube series about developing a very similar distributed key-value database in Go. The sources for the database itself are at https://github.com/YuriyNasretdinov/distribkv . The database uses static sharding using powers of 2 and also requires downtime to increase the number of shards.