Meteor | Modulus.io | Best Settings


#1

I am looking into taking a small scale site into production.
I have done some research and came to a fork between Modulus.io and Digital Ocean.

I have a few questions remaining that may assist with setting up Modulus.io.

  1. What are the best options to select in terms of pricing for Modulus.io ?
  2. Is a Servo absolutely necessary ? I noticed it gives the option to remove a Servo which brings the cost down significantly.
  3. Finally What are recommended workflows for building , maintaining, and deploying a production app to modulus ?

I’d like to hear your experience and thoughts.


#2

It’ll likely depend on your specific app but in general the 386mb one will likely yield the most value. Since you can only use 1 core, I don’t think the CPU usage would increase with the larger instances. You don’t want a 1gb instance that uses 10% CPU when the RAM is at 800mb. Ideally you’ll want to balance it out with several smaller ones. Again depending on your app.

Servos are what they call their virtual machine instance. You’ll need at least one of these to run your app.

My workflow is to setup a production ‘app’ and a staging ‘app’ that are exactly the same except the staging has a different database URL so it’s not using prod data. This is important to catch environment changes (like node versions or database differences). Setup elastic scaling on the production app so that it will scale up when you get more traffic.

When you’re ready to deploy a feature, merge the feature branch into master, tag an arbitrary release number so you can roll back if needed, and then do a modulus deploy to staging and test the app. If all is well, do another deploy but this time to production. Sit back and drink a cup of coffee :smile:

I would also highly recommend Compose.io for mongo hosting. They’re great! It also decouples you from using Modulus’s mongo database in case you want to switch app hosts.

Digital ocean is great if you’re on a budget and like devops. I tend to pay the premium for Modulus because I don’t want to waste time screwing around with load balancers, manually scaling, and patching linux boxes on mission critical things. More time building and less time tinkering with chef!


#3

Docker! We DevOps people use Docker nowadays to tinker with until we go mad with scripts and builds and configurations… :slight_smile: (Sorry, couldn’t resist ;))

On topic: What the Skinny Geek said! DO (Digital Ocean) is something you can use if you really are fine with taking a bunch of time to learn the basics of “DevOps” (i.e. server administration, Linux). It’s fun, if you care about it. But if not, then definitely stick with one of the more approachable, “done it for you” options like Modulus. Beyond that there’s nothing I can think of adding to the previous response!
(Except… while you could get away without a “staging” instance/environment it’s rarely a good idea. You could bring that environment up only whenever you need it to test a new release, if you’re on a tight budget, but other than that it’s a critical piece of the puzzle since you really don’t want to push releases to your users that are not very well tested, ideally by more people than just yourself.)


#4

Ah good point! Modulus lets you shut down a ‘modulus app’ (aka staging) so that you’re not charged. This way you can turn it on and test, then shut if off, costing a few cents.

However DO will charge you whether it’s on or off. I have a make file setup so I can run make shutdown_staging and make staging will deploy it and turn it on if it’s off.


[quote="seeekr, post:3, topic:5902"] Docker! We DevOps people use Docker nowadays to tinker with until we go mad with scripts and builds and configurations... (Sorry, couldn't resist ) [/quote]

Hah, very true! I just started playing with Docker and Kupernetes… pretty slick!


#5

However DO will charge you whether it’s on or off.

You can always create a backup image of your DO instance, destroy the instance and when you need it again, you just fire it up. It takes about 30 seconds. You can even integrate it into your workflow through the DO rest api.


#6

Tugboat is a nice little DO “remote control CLI”, available for Mac OS through homebrew, not sure if that one works on other platforms as well.

Yeah, right? Kubernetes is about to hit 1.0 in July, and Docker has been very usable and mostly stable for quite a while now. I like 'em, been playing with them since last year… Next app that hits it big is going to go on a k8s + CoreOS cluster :wink:


#7

Thank you for the reply. I’m going to look into each of these options. I typically use meteor deploy for staging environment.

For the most part. I have one particular client, that insisted on using Meteor’s server to run his website in production to reduce cost. To me this is just not a good idea, and this is why I decided to look into Modulus and Digital Ocean. I do not mind learning Digital Ocean, and I have had a lot of friends talk to me about Docker.

Right now I run a coldfusion based website on a vps. I pay a ton of money for this, and was strongly considering re-writing my site on Meteor, and using one of these hosting options. The things is I like the control I have over my vps , coming from a shared server which was much cheaper.

Is Digital Ocean the equivalent of someone having vps like control over their environment,
and Modulus.io is the equivalent of a standard shared hosting service?

Again thank you greatly for your replies.


#8

Agreed. Just the other day my client was on the meteor server (we use it as remote ‘dev’ server for quick pushes) and the service just stopped responding while I was on a call going through the UI for a design issue. On her end she saw the login/log out buttons going funny and I couldn’t even load the page. Several minutes later it was back up.

If cost is an issue compose has a ‘sandbox’ database that will work for small scale.

Here’s a tutorial on deploying to DO with MUP:

Digital Ocean is a VPS, like Linode. You basically have your own virtual linux box to SSH into and it’s up to you to do the rest. Modulus is more like a VPS that they take care of and provide easy tools to maintain it and get metrics on. You can’t SSH into it and install your own software as needed. This is much like Heroku but geared towards NodeJS. I wouldn’t really call it shared hosing (like hostgator).


#9

Thank you for this information. So if I may ask which one is your personal preference and why ?


#10

Ok I believe after reading these posts , and your response I feel confident with Digital Ocean. Right now as I mentioned above I am running my current website on Hostek , with Lucee and Coldfusion. Coldfusion was my first serverside language and I am not a huge fan. I enjoy working with Meteor, so My first project and experience with Digital Ocean I will do this with my own site to understand the troubles, and benefits I will go through prior to subjecting my clients to this.

Also I really like the setup I have with Hostek, VPS solution. I believe from what you have stated here that there is a lot of control. In my VPS with Hostek, I can get in the system and configure just about anything i’d like, and I think I like this attribute for Digital Ocean. For my own personal website do you believe the $20.00 2GB RAM solution is sufficient for one site ? Also how hard is it to configure NGINX , and all the other components that will need to come along with running a website on DO.

Finally What about Domain Name Hosting is this easy to do with DO


#11

DO has a free DNS hosting service and it is pretty fast and easy to use.


#12

1GB would prob. be more than enough but you can always start with 2GB and downgrade if there is a lot of overhead.

If you’re using MUP, not very hard as it sets it up for you. I think it’s still using Nginx for the load balancing… if not maybe they’re using HAProxy… either way it handles load balancing for you. You basically just add in the host IPs into an array in the config.


#13

Very nice , feeling more confident about DO now. Was thinking about using DO for my own site and Modulus for my client’s, but it seems DO will work for both .


#14

+1 if you’re wondering why the heck isn’t someone from Modulus participating in this thread?


#15

@seeekr I’ve never configured Ngix in my life and have no real desire to learn the in’s-and-out’s of hosting. I really wonder why doesn’t someone who’s figured all this stuff out (Docker scripts/images for DO, backups, staging, security etc.) make it available for others as a service?

Clearly many people are disappointed with Modulus, but some people want to outsource that hosting side of things so they can focus on software, business development, marketing, etc. There is clearly a marketing for such an easy-to-deploy, highly-available Meteor hosting service. Modulus is the only one that’s done it, but I think there is a market for alternatives due to dissatisfaction with Modulus. I’m really surprised no one else has done it yet.


#16

I guess with galaxy around the corner, it is just not a viable business move to start a meteor hosting service until some detail on galaxy, such as features & pricing, gets revealed.

Also, I believe meteor hosting would be way too specific to grow into a profitable business, unless you go the enterprise route.


#17

I believe meteor hosting would be way too specific to grow into a profitable business,

Surprised to hear that. Isn’t Meteor now even more popular than ROR (at least on GitHub).

Where is the overhead? Doesn’t a service like Modulus just provision servers on-demand? They don’t have their own network of servers; they just spin them up on Joylent, AWS or Digital Ocean as-needed right?

I’d like to see someone do for Meteor hosting what WP Engine has done for WordPress hosting.

Regarding Galaxy, we have multiple cloud storage and cloud computing providers, multiple WordPress hosting specialists, multiple Magento ecommerce hosting specialists. Why should Meteor be any different? Besides @arunoda , the one-man Meteor dev group, could probably create Galaxy faster than MDG could. :slight_smile:


#18

It still requires a lot of work and dedication to make such a service, even with all the great tools available.
And you can’t price this thing very highly since it’s not perceived as very high-value. So you have to execute the whole design and implementation very well and scale the tech and business just as well. Otherwise that kind of business probably won’t work, or won’t take off. I’m sure there are Meteor hosting solutions in existence and in use by various companies, but at a smaller scale, tailored to more specific needs, and with (much) higher costs than justifiable for the general market. (EDIT: And thus we don’t really hear about them, they don’t and probably won’t ever become popular and widely-used.)

MDG is on point with choosing Kubernetes for their hosting service. But k8s has only become available within the last year or actually really within the last few months (1 month since 1.0 release), and even now it might not be able to scale beyond 1000 machines, which is still not a whole lot in terms of “how many Meteor apps can this hosting service handle”.

This stuff is doable, and potentially profitable, I’m just saying it’ll take a whole lot of dedication to make something worthwhile.


#19

And you can’t price this thing very highly since it’s not perceived as very high-value.

I pay $99 monthly for WP Engine and I think it’s a very good value.

Anyway I just wish there were some better options. I’ve been a bit frustrated with Modulus. There is definitely a market. I can’t be the only person who doesn’t want to do it myself.

I’ve been accepted into the Galaxy Early Access Program so I’m going to give that a try. Signed an NDA so I can’t say anything about it until they decide to come out of stealth mode.


#20

I’m doing all the hosting stuff for most of my clients, so I could definitely offer managed Meteor hosting. If 10 people sign up for $99/mo I’ll commit some time to build something along these lines:

  • shared environment
  • “unlimited” number of apps (fair use)
  • deploy and update with: git push production master
  • basic monitoring: health checks and alerts
  • includes MongoDB hosting (no compose.io etc necessary; one-stop hosting)
  • fronted by nginx*
  • enough compute/memory/disk for average Meteor apps*

*: this is more of a technical detail, should not matter to users of this hosting service.

Would that suffice as a first step? Anything else that’d be absolutely required for average Meteor hosting needs?

EDIT: Something like this could be up within a month’s worth of work, give or take. Early versions much sooner, too.