We’re a tiny startup currently hosted on DO(20€/plan) with mupx - which works pretty good so far.
As soon as we have a few more users this solution will reach the edges and we’re forced to use some more scalable hosting solution.
So after some research in the forum the solutions we have is:
- Deploy on an own(more powerful) Server
- Use Modulus or even Galaxy together with compose.io
The advantages on an own server would be, that we have full control over the service and it’s most likely cheaper.
The drawbacks would be, that we will struggle with scaling and need to setup everything on our own.
So to avoid the problems we would face with the first solution, the second seems perfect - someone managing our stuff and no need to setup nginx ssl and co.
The problem here is, that we use kind of awkward services in our app:
- We’re running a jenkins server in background which unregulary builds apks which then can be downloaded via meteor the meteor application.
- We’re currently using imagemagick/graphicsmagick wkhtmltopdf and Fs.fileStorage()
- We use a self hosted mongodb.
There is probably no service which allows us running non node applications in one of the containers, so we’re probably forced to use an external server like DO for jenkins stuff and an api to communicate.
When for example hosting on Galaxy - can I access the server via ssh and install stuff like this?
We allow image uploads and do some image manipulation. Do we have to use GridFs or s3 or can we still use FileStorage? I couldn’t find any info on available space on Galaxy containers.
For now we only store “text”-data in our mongoDb, so a cheap https://www.compose.io/ instance should be enough, but when forced to use GridFs this could be different - so it’s probably better to just use s3. Btw. why is everyone recommending compose over mongolab?
Based on your extra services, it really sounds like you should keep hosting things yourself. Keep in mind that you’ll likely have to deal with one of your main drawbacks against hosting yourself (struggle with scaling) if hosting with Modulus/Galaxy/etc anyways (most of the scaling issues I’ve seen with Meteor apps have come down to code - thank you Kadira!). A few quick answers:
- Modulus and Galaxy will not give you SSH access.
- Store your files in the cloud, or look into using something http://filepicker.com or https://uploadcare.com (Meteor packages exist for both). This will make it much easier to scale your app as needed, without having to worry about how to keep your filesystem in-synch across servers / VMs / containers.
- Recommending compose.io over MongoLab - for the same reason everyone recommends DigitalOcean over Linode; there is no reason :-). Seriously though compose.io has an awesome reputation for stability, and ease of use. The good news is that it looks like IBM plans to keep running compose.io as it has been run in the past.
@hwillson thx for your answer.
Just to satisfy my curiosity - is it really not possible to use tools like imagemagick? It seems like a pretty basic function to resize images or do stuff like this.
I can’t believe people are paying 500€/month and more for services which can’t handle this basic functionality.
Just imagine an avatar functionality - you don’t want to let the user decide about image sizes.
No problem - actually, I seem to recall imagemagick support with Galaxy coming up somewhere; I think it was on the Meteor Club Podcast episode with Sean Young from Classcraft. I believe MDG helped him get it all setup and running properly. I’m not sure how that translates down to others, but my guess is that work is now available to all on their platform.
Thx for this podcast site war really interesting.
On my research i found https://github.com/meteorhacks/cluster from @arunoda, if i’m right.
It seems to be the perfect solution for all our problems, but i couldn’t find anything about autoscaling besides that issue:
When for example deploying at DigitalOcean or AWS i can simply add an new entry to the mongodb to create a new node/load-balancer. Is there any api or sth like that which allows me to to automatically start/stop instances and add them to the cluster when the overall cpu usage is more/less then x%?
Yes, Cluster is definitely a great option - there are other options you can consider using as well (or alongside), like nginx. Check out this awesome scaling post for a step by step breakdown of scaling a meteor app on Digital Ocean using nginx: First Experiences Scaling A Meteor App
I can’t think of a self-hosted auto-scaling option off the top of my head, but it shouldn’t be too hard to script something. You could leverage something like Digital Ocean’s API alongside a process that monitors server health, and add/remove droplets as needed within your defined cluster. Food for thought anyways.