Separate everything, server and database => really good idea!PaoloMon wrote: ↑27 March 2020, 20:11I suggest to sync only the information related to payments: maybe it's only if the user is premium or not but it's never as simple as thatGabelfleisch wrote: ↑26 March 2020, 00:00Good point.PaoloMon wrote: ↑25 March 2020, 16:37 I second the suggestion of cloning the site.
Separate everything, server and database. The new server starts empty. Players have to register there again.
Create a parent site reporting the number of players inside each server and its capacity. People will decide where to go to play and load balance themselves.
It won't be a problem for people that want to play with friends: all of them will login into the same server.
Maybe it's a problem for players that want to play with anybody online because two smaller servers are worse than a big one. At least they can play instead of reloading the page and hope to get in.
still some questions will remain on the sync across servers: management of account credentials and friends lists, rankings and reputation, etc. what to start from scratch for the user, what needs import at first/each entry into a server, what/when to synchronise databases...
Friends lists, rankings, etc, everything is per server. This is far from ideal but the system will keep running. Furthermore the effect could be that old users stick on the original server and new users go to the new one. It should be enough to ease the load on the server.
Another suggestion: create servers and name them per geographical areas. The original server could be Global. Then create Americas, Europe, Asia etc (you know who your players are). People playing with friends should gravitate on the server for their area even if everybody can register to any server. Social engineering, no coding.
Anyway, you're doing a good job. It's not easy to scale a service under this pressure especially if some component turns out to be hard to scale. Thanks again.
I suggest to sync only the information related to payments => I would say even without payment info, so it could be a free game only server
The less state we store the easier to distribute the website. How about:
1. Don't store or compute scores, some players just want to have fun with out knowing their rankings - especially new players like me. For matching players we could use random algorithm, or just let player to select their level before joining a table (easy/middle/hard table)
2. Don't store game history, don't know how many players will actually check them.
3. Don't even ask for login, people can just play anonymously (or put whatever username they like every time)
Without those states adding more machine should be much easier!
Thanks for all your hard working!