Shard Manager: A Generic Shard Management Framework for Geo-distributed Applications