Meteor's downsides

2015-10-11

Meteor is a really cool framework for making websites. It runs on node.js and by default it uses mongo db (you can change that). It's a "fullstack" framework meaning it handles both the server (backend) and the client (browser).

You can install it and have their samples up in minutes. They have publishing utilities to help you get it up live on the internet either through their hosted service or through other means.

It's got some really nice features. Code is easily shared across backend and browser. You can access data on both sides with nearly the same code. It's got live updating of data and code. It's really awesome!

Except ... AFAIK it's EXPENSIVE to use. Another way of putting that is it's not for hobbies, only for serious stuff. Let me explain

First off Meteor is relatively heavy. It uses Websockets to send data to/from the backend and browser. That's awesome and makes for a live updated site but it also means your server is keeping a connection open to every person visiting your site, even if they are doing nothing. If your site needs live updating (say chat?) then that's great. But if your site does not need to be so live then it means a single meteor server can handle far far less people than a traditional non−websocket based server.

That heaviness means you need a beefy server to use meteor even for a small simple project. Beefy = $$$. So for example I tried running a super simple hobby server in meteor. It has almost no traffic, there are no user accounts. Just a single database, a list of games. It's got less than 50 entries so far, each entry is probably less than 400 characters of data each. And yet it crashed with out of memory errors every few weeks. It was a 512meg ram server. I upgraded to 1gig and the crashes went away but 512meg is $5 a month, 1gig is $10 a month. So it went from costing $60 a year to $120.

But it gets worse. Because of the way meteor works by default it's not indexable by search engines. The reason is there's nothing on the pages it serves. It just serves code and templates and then downloads the data later over websockets. So, a search engine basically sees a blank page.

Their solution to that is for you to run an entire browser (PhantomJS) on your server. You use that browser to visit the pages you want the search engine to see. It visits the page, opens a websocket to get the data, it then captures the HTML content of the page, caches it and serves that to search engines.

That works but the problem is browsers are large pieces of software that use lots of memory. In order to have enough memory to run PhantomJS you either need to upgrade to a 2gig machine or run a second machine. Either way your costs just doubled. You're now at $240 a year. If you're making a serious project, your funded, etc, $240 a year is nothing. But, if you're trying to make a hobby site $240 a year is a lot of money.

Compare that to a shitty LAMP stack. I hate PHP as much as the next guy but compare the price. You can setup a shitty LAMP stack for $60 a year. You can run multiple projects across multiple domains all on the same computer. So $60 for all projects combine vs $240 PER PROJECT!.

I want to use meteor because it makes getting shit done so much easier. But I can't justify $240 a year per project. If all the projects I run were written in meteor I'd be spending thousands of dollars per year to keep them going.

I don't want to use a LAMP stack. I can write node stuff from scratch but that's kind of missing the point as well. A fullstack framework that's well designed and easy to use makes developing so much fun but if the cost is prohibitive it's not really a solution I can use.

Maybe someone knows of some other solutions?

Comments
My Love / Hate Relationship with Stack Overflow
Too Many Dependencies