I am planning a new service which will allow server owners to deploy servers for free (of very little, depending on how things work out) by using a small VPS for routing and per server Heroku apps. I have an idea for how this could be accomplished, in a way which would allow for users to have the Heroku apps attached to their own Heroku account. I am not going to go into a huge amount of detail here but if you are interested in helping out, please PM me. Skills Needed PHP experience Willing to use MongoDB Some network experience Main tasks of project PocketMine launcher for Heroku Just get PocketMine running (Done!) Bind to port to allow Heroku to change status to up (Done!) Translate incoming HTTP requests to UDP and route them to PocketMine Translate outgoing UDP packets to HTTP and send back to the VPS for routing to client PocketMine patch to replace all file actions with a virtual file system stored in a database VPS Proxy Database mapping server names to Heroku app URLs DNS server to point everything back to the VPS for routing (probably a little Node.js script) Translate UDP packets into HTTP and send them to Heroku dyno Translate HTTP requests from Heroku into UDP to be sent to a client
http://Heroku.com it allows you to deploy web applications in a variety of languages. If you use 1 dyno it is free but there are limitations.
Hahaha, I'm actually working on the exact same project Right now I am using Docker, Shipyard and PHP to get things orchestrated. You can see some libraries I made for this purpose here: https://github.com/cakepowered/ One is a Bootstrap plugin for PocketMine which will configure it before it boots (proof of concept, not to be used for prod) The other is an automatic building script for PocketMine-MP-Soft phars. It downloads the phar, sets a url to download the bootstrap plugin on startup and bundles it all together inside a Docker setup. At the moment I am working on the IaaS side of things, mainly getting provisioning scripts written to automate the deployment of basic infrastructure (shipyard). Using individual VPS instances for each server is too costly to provide for free. Hence, Docker. Also, there's a landing page I scaffolded where you can get a theme of the general design, but then again I'm not a designer and that's just Flat UI Pro Bootstrap. http://cakepowered.gopagoda.io/ I've thought about storing all PM data in a scalable, cloud-like way but I've found that to be way too complicated and too inflexible (will have to modify PM heavily for that, something I'm not up to) for the purposes of game hosting. It would be better to have a static instance, like a traditional game panel, but have the ability to migrate the server to other locations for flexibility. Like DigitalOcean. For the revenue, I was thinking of a full fledged MCPE host, except the free tier servers will be free for life. The free servers will have an ad displayed on the control panel, which hopefully(?) will pay for the server hosting costs. It actually doesn't cost much to host a PM server in a tiny scale: about $0.80 a month on my calculation (on DO with several servers per instance, it's about $1 on GCE. We can reduce the cost by overcommitting resources.) to host a 5-player small server not running 24/7 (shutdown when there are no players). So really, we only need to get 80 cents off every person that uses the free plan server for a month - I'm assuming that this won't be hard to do off ads. The rest we can get from actually selling big plan servers. This way, we can have a sustainable approach to providing free servers without compromising on quality. (well, for tiny scale servers anyway) Sample dashboard made with Flat UI Pro: https://twitter.com/sekjun9878/status/519461416797888513/photo/1 The translation of the packet like you are proposing would be very difficult to do because 1. It would add too much latency and 2. The VPS would become a bottleneck. I look forward to working with you to make our awesome projects come to life I really need some help on the control panel bit. You know where to find me, on IRC.
Keep in mind, HTTP is TCP/IP. It will be difficult to send your data (UDP) bidirectionally and it'll ultimately result in timeouts. Heroku allows socket connections from inside a dynmo to the outside world, so you could create a server application on your vps and connect each heroku instance to said server. A great thing to use here would be Node.js because it can execute tasks asynchronously without a need to program more things.
MongoDB is a document store whereas MySQL is a relational database. You can't compare the two because they're not used for the same purpose. It'll be like comparing a binary packet to a JSON. Whilst it is true that Redis - a key-value store which runs in-memory - is faster than MySQL, will you really use Redis in the place of a MySQL database?
MySQL is most useful for searching purposes, like finding a row with a value within a range, and to order large data without PHP sort().
Mongo is perfect for environments where the data you are dealing with is already in JSON format (Python and JavaScript). I will say Mongo is easier to use because you don't have to learn an entirely new language (SQL) and there are libraries readily available with great documentation.
You can still use it right now by using whatever library to connect to NoSQL DBs. No need for PocketMine support.