Opinions on where and how to host a game's database?

I have two projects in the pipeline that will require the use of an online database. So far, I’ve considered trying to learn Amazon’s AWS and setup a (NoSQL) DynamoDB, for instance, or opt-in for a simple web hosting like what is offered by one.com and host a PHP/MySQL setup there.

Both projects would really only need to read and write basic information on their respective databases. My main concern is the availability of the databases. For instance, if either of the two games were to become popular and the databases would be subject to constant read and write requests at a growing scale, then what sort of database and hosting solution should I go for? Are there some key limitations that I should take into consideration?

I would greatly appreciate any advice that you guys may have concerning hosting, managing and scaling online databases in your games.

using digitalocean droplet here with coronium core (see marketplace) and couldnt be happier.

scalability is easy, supports mongodb and mysql, and i get to write server side scripts in lua.  :smiley:

Coronium core is develephant’s plugin/service, right? I have to admit, I’ve looked at it several times in the past and it seems great. I am just not feeling too confident about the service for the time being as I am under the impression that no one has heard from the developer via any channel in months, and so building a game around a service with an uncertain future is a gambit.

its a valid point

i hope dev will show up soon, cause he’s normally quite active.

If you have DynamoDB working (I’d love to see that code) I think using Amazon would be a safe bet.  Lots of pro companies use their services.

Note: This is the problem with being Indies.  We have to wear so many hats and be experts at so many things.  Wouldn’t it be nice to just have a department to work this out for you? :slight_smile:

If it helps at all, I have some code for reading/writing AWS S3 Buckets that works and I’m sure there is some overlap with regards to signing in.   So, if you decide to go the AWS route ping me and I’ll put the code in your hands after I give it a quick test.

I’m still at the starting line with DynamoDB and it would indeed be nice to just drop these kind of problems to another department to work out. :smiley:

So far, I’ve only been looking into different ways of implementing DynamoDB into my projects. To no one’s surprise, I found that develephant had actually already written a Corona module for DynamoDB (https://github.com/develephant/dynamodb-coronasdk).

At this stage, I’m just looking to learn, so any advice or alternative approaches, like AWS S3, are welcome. 

 

I’m LAMP stack primarily, so somewhat biased, but for performance and scalability during high loads I’d recommend the admittedly expensive cloud database service by Rackspace.

https://www.rackspace.com/cloud/databases

In a nutshell, you get a dedicated server optimised for running a single MySQL instance (so tuned for high network load and fast read/write basically), and it comes pre-configured with as many replications as you ask for (think of a MySQL replication as working the same as a RAID set-up for disk drives - you’re writing to multiple copies and if any one goes down, it can be recreated from the others).

With Rackspace Cloud you set up whatever servers you want, however you want them. You could for example just have the one web server and host a single server side endpoint on that, and a local database. Or you could have say, 5 web servers hosting the same endpoint, all connecting to the same cloud database server (my above paragraph) and sit them all behind a load balancer that decides which server to pass the request through to based on all of their current loads. If your game takes off, simply duplicate those servers more.

For a proper, totally redundant set-up like that, you’d be looking at spending thousands, if not tens of thousands in USD/GDP per month, but you can start off small and expand to that over time, if the need arises.

We currently host about 80 websites of varying popularity, with about the same number of databases, on 2 relatively small cloud servers and pay about £180 p/m. We then host about another 30 very, very high traffic websites on a slightly bigger cloud server for I think about another £150 p/m. Combined traffic probably reaches about 1tb of monthly bandwidth, and the costs include nightly backups of all 3 servers to cloud storage (again for redundancy) where they sit for 30 days so we’re probably using about 1.5tb cloud storage space there too. Rackspace aren’t cheap, but we’re getting quite a lot there for £330 p/m and performance for us is fine, even without load balancers or dedicated database servers. Very nice to have the option of scaling up and adding those in.

Oh, and in case it matters, I believe the Amazon S3 network sits on a backbone leased from, and managed by, Rackspace. Or at least that’s what a Rackspace tech once told me. So both are on par in terms of infrastructural quality but Rackspace are presumably the bigger network.

Thank you for your input @richard11. If I decide to go the LAMP route, I’ll be sure to give Rackspace a proper look.

I use a digital ocean droplet, with mySql and PHP for my back end work.  Works great so far!

If only I knew PHP :worried:

I’ll add Digital Ocean Droplet on my list. Thanks!

using digitalocean droplet here with coronium core (see marketplace) and couldnt be happier.

scalability is easy, supports mongodb and mysql, and i get to write server side scripts in lua.  :smiley:

Coronium core is develephant’s plugin/service, right? I have to admit, I’ve looked at it several times in the past and it seems great. I am just not feeling too confident about the service for the time being as I am under the impression that no one has heard from the developer via any channel in months, and so building a game around a service with an uncertain future is a gambit.

its a valid point

i hope dev will show up soon, cause he’s normally quite active.

If you have DynamoDB working (I’d love to see that code) I think using Amazon would be a safe bet.  Lots of pro companies use their services.

Note: This is the problem with being Indies.  We have to wear so many hats and be experts at so many things.  Wouldn’t it be nice to just have a department to work this out for you? :slight_smile:

If it helps at all, I have some code for reading/writing AWS S3 Buckets that works and I’m sure there is some overlap with regards to signing in.   So, if you decide to go the AWS route ping me and I’ll put the code in your hands after I give it a quick test.

I’m still at the starting line with DynamoDB and it would indeed be nice to just drop these kind of problems to another department to work out. :smiley:

So far, I’ve only been looking into different ways of implementing DynamoDB into my projects. To no one’s surprise, I found that develephant had actually already written a Corona module for DynamoDB (https://github.com/develephant/dynamodb-coronasdk).

At this stage, I’m just looking to learn, so any advice or alternative approaches, like AWS S3, are welcome. 

 

I’m LAMP stack primarily, so somewhat biased, but for performance and scalability during high loads I’d recommend the admittedly expensive cloud database service by Rackspace.

https://www.rackspace.com/cloud/databases

In a nutshell, you get a dedicated server optimised for running a single MySQL instance (so tuned for high network load and fast read/write basically), and it comes pre-configured with as many replications as you ask for (think of a MySQL replication as working the same as a RAID set-up for disk drives - you’re writing to multiple copies and if any one goes down, it can be recreated from the others).

With Rackspace Cloud you set up whatever servers you want, however you want them. You could for example just have the one web server and host a single server side endpoint on that, and a local database. Or you could have say, 5 web servers hosting the same endpoint, all connecting to the same cloud database server (my above paragraph) and sit them all behind a load balancer that decides which server to pass the request through to based on all of their current loads. If your game takes off, simply duplicate those servers more.

For a proper, totally redundant set-up like that, you’d be looking at spending thousands, if not tens of thousands in USD/GDP per month, but you can start off small and expand to that over time, if the need arises.

We currently host about 80 websites of varying popularity, with about the same number of databases, on 2 relatively small cloud servers and pay about £180 p/m. We then host about another 30 very, very high traffic websites on a slightly bigger cloud server for I think about another £150 p/m. Combined traffic probably reaches about 1tb of monthly bandwidth, and the costs include nightly backups of all 3 servers to cloud storage (again for redundancy) where they sit for 30 days so we’re probably using about 1.5tb cloud storage space there too. Rackspace aren’t cheap, but we’re getting quite a lot there for £330 p/m and performance for us is fine, even without load balancers or dedicated database servers. Very nice to have the option of scaling up and adding those in.

Oh, and in case it matters, I believe the Amazon S3 network sits on a backbone leased from, and managed by, Rackspace. Or at least that’s what a Rackspace tech once told me. So both are on par in terms of infrastructural quality but Rackspace are presumably the bigger network.

Thank you for your input @richard11. If I decide to go the LAMP route, I’ll be sure to give Rackspace a proper look.