I'm working on an online card game. We use a simple client-server architecture. Each game involves the player being matched with another user (or the computer AI) and then the game runs until someone wins or concedes, usually 5-10 minutes. Currently we run a single game server.
I'd like to know how I can scale the system to accommodate more players in the future. My initial thought was to have a front edge server to perform load balancing, matchmaking and security functions, which sends player updates to the appropriate server and evenly distributes the players across the servers. As we run additional servers, they will register with the front edge server. Is there commercial or open source software that already does something like this? Currently, the servers are i/o bound with a large number of players but I'm concerned that in the future, it will be network traffic on the front edge server that will be the bottleneck. Is there a way to hand-off the network traffic to a server once the players are matched? What other architectures should I consider?
Many thanks in advance. I realize that there isn't a lot of data here but would appreciate any pointers and ideas.