In my spare time for the past few years, I have been working on both the front-end and back-end for a space-based online game. This game is initially designed for the PC, and is hopefully able to host thousands of players in a massively playable universe.
Along with the development of the game, I have been building the networking solution almost entirely from scratch. The architectural design of the networking solution is based on a fairly traditional master-server > sub-server model. I recently was able to run some fairly decent-scale tests on this model and was pleased to see that both my expectations and goals were met. Which leads me to my current fear.
The basic idea behind the current solution is that the master server acts as a router. It knows about all of the currently active sub-servers, including their load (cpu, memory, bandwidth etc) and what the sub server is assigned to handle. The master server has literally no other purpose.
Each sub server is designed to handle one (or more) solar systems. The idea being: as a player, you connect to the master server and tell it which solar system you want to go to. The master server looks to see if there is a sub server already assigned to this solar system and sends you there, otherwise it finds the sub server with the least load and assigns that sub server to the solar system before sending you there.
The part that I am worried about is that this is pretty much as much as I can get out of this model. Once you have been sent to a solar system, you (and everyone else in that solar system) are on that sub server until you leave that solar system. Although I am happy with my testing so far, and that it looks to be able to handle around 300 fairly active peers, fairly comfortable on a well-fitted server, I am worried if I ever end up in the situation where this isn't enough.
I discussed this recently with a few acquaintances of mine. The discussion lead to a cloud-based network maybe being a better solution than single server machines acting as sub servers. Atmittedly, cloud commputing is fairly unknown territory for me. With that being said I've spent some time looking into this and I am fairly confident with the basics, but I have the following questions:
I assume that if I were to re-design the networking solution to work within a cloud-based network, I would no longer need the master-server > sub-server model, since I could build a single application that would handle all solar systems and peers, and that the cloud would scale based on the number of solar systems and peers?
Any and all advice is welcome!