Short answer is that we cannot advance a number.
The concept of the shard is the "malleable" part of the meshing architecture, and we will only be able to tell the number of shards required once all the component pieces are in place and we plan to get there iteratively.
With the first drop of Persistent Streaming (not meshing), we want to start by mimicking the current behavior that you see online by having one shard per server instance and one replicant (called the hybrid). The only difference is that all entities in those shards will still be persistent. This allows us to deal with the worst-case scenario by having a really large number of persistent shards and very large replicants to test the mechanics of creating/seeding, simulation with active players, and spin down for recycling or destruction. We want shard creation and destruction in this first phase to be optimal, fast, and cost-neutral.
This approach has several advantages, as we can get to test shard persistence earlier and, more importantly, can measure active metrics across many shards.
For example (non-exhaustive!):
- How many entities remain in a persistent shard over time (shard growth rate)
- Size of the global graph (global growth rate)
- How many players a single shard database can handle (player usage)
- Effect of several gameplay mechanics on entity updates to the shard database (gameplay effects)
- Performance profile of the write queues, mean query times of shard db clusters (shard database metrics)
- Performance profile of the write queues, mean query times of global db cluster (global database metrics)
- Efficiency of database sharding (another sharding level!) of the graph
While we do have proper estimates and internal measurements for these, nothing replaces real players generating representative load on the system.
As we get the other components of meshing into play, mainly the static mesh, we plan to gradually reduce the number of shards, grouping players into bigger and bigger shards until we feel comfortable with the performance of replicants, DGSs, and the entity graph. Of course, the static mesh will suffer from congregation problems and we will only be able to resume going to much larger shards once the dynamic mesh is in place.
Ultimately, with the dynamic mesh, we aim to support very large shards.