Hello,
I'm a Software Engineering student and over the summer I want to improve my sysadmin knowledge and skills.
I have an idea to build a game server hosting side project like this below but only for 1 game.
https://www.gameserverkings.com/games
I'm thinking of using Digital Ocean but since I'm a rookie I'm a bit stuck.
My plan is for a stack of Vue, Node, Express and MongoDB for the SaaS website/control panel where users can manage their game server.
Then for the SaaS website to communicate with the server that spins up the game servers a Redis job queue or perhaps Redis Pub-Sub.
For the actual game server creation/deployment I'll need it to be instant.
Where I'm a bit confused is when it comes to the instant deployment of the game servers.
I'm thinking of perhaps containerizing it. So I have docker containers that contain the game server setup and deploy scripts depending on the player size they choose. Then I can pass variables into the image, and once a user buys a game server subscription somehow use an SDK hopefully provided by Digital Ocean to spin up a new VM using x image with y params.
I feel the hardest learning curve might be understanding the host's way (Digital Ocean) to programmatically deploy a new VM.
I'm just wondering if anyone can see an obvious flaw with this idea. Or if you have in your view a more simple approach I'd be grateful to hear it.
Also please let me know if I'm completely out of the ballpark. As I say my server management and cloud skills are fairly laughable hence why I want to improve them :)
Hi Angus, nice to meet someone who is also called Angus.
You're plan seems pretty good, I'd avoid doing this though:
"Then for the SaaS website to communicate with the server that spins up the game servers a Redis job queue or perhaps Redis Pub-Sub."
It seems like unnecessary complexity to me. I'm not sure about Digital Ocean, but I do know AWS has APIs to provision Virtual Machines. I'm sure DO does as well.
I'd also avoid containerization, it's expensive and very complicated.
Hi, another Angus!
Thanks for your advice.
I agree I think my initial idea might be a bit overengineered. Docker seemed like a good approach but I hadn't considered the extra costs and since I'm not great with Docker yet I think it could get over-complicated for me fast.
Thanks again :)