Why GoDaddy sucks for Rails hosting
I was working on a project recently, and we were deciding on a hosting solution for a new Rails app. After considerable discussion over several days, and weighing the pluses and minuses of various options, the manager one morning opened a $7/mo account on GoDaddy and told us to "run with it".
Maybe he thought it was a great Christmas present or something, as this all transpired on Christmas Day. I was hoping for a nice quiet relaxing day, and was just checking my email around noon.
Then, WTF? GoDaddy wasn't even on the table as a hosting option. And if it had, would've been clearly recognized as a dead-end. We'd been weighing between a Linode server (Ubuntu) and a Managed VPS from a Rails-knowledgable host, like RailsPlayground.
I was dumb-founded because A. I knew it was simply a bad call, B. it was not even discussed, C. was opposite of where the decision was converging, D. demonstrated the manager had no clue what he was talking about. A series of emails ensued as I explained the issues as diplomatically as I could.
Here's a summary of how the email conversation went:
On Dec 21, 2010, at 11:39 AM, Jonathan wrote:
A. our easiest and best hosting solution is heroku.com, there's no setup -- is cloud based (uses AWS), just a command line command to deploy and update the app, has a suite of preconfigured add-on's http://addons.heroku.com/ . The database is also cloud-based. Basic account is free and pay as you scale. Uses its own Postgres by default, which you can pull/push but cannot access directly except through your rails app (http://docs.heroku.com/database). But it can also connect to Amazon RDS, Mongodb, etc.
B. an alternative is a VPS based hosting service with expertise in Rails (one i use alot is railsplayground.com, with high quality service and support). It requires I do a bit more work to setup, deploy and update but I've done it before so its not too bad. You can then use MySql or Postgres, and access it through phpMyAdmin (or phpPgAdmin), and FileManager for files, etc
C. host our own server (eg rackspace). Generally I'd discourage this unless/until we have someone with the time and expertise to be our sys admin.
I'm starting to think we'd be more comfortable with B. We could start with a shared server then move to VPS. Or just jump into an entry level VPS ($20/month) http://railsplayground.com/plans-products/vps/
On Dec 21, 2010, at 11:59 AM, Developer2 wrote:
I've used railsplayground before, ironically I used it for Python/Django hosting, heh. I think they're a reseller, but I'd agree that they did a good job. However, while I'm not suggesting a physical dedicated machine, wouldn't a Linode make more sense? Having admin level control over a virtualized Ubuntu or Fedora install would leave us a lot more control, especially when it comes to installing whatever version of whatever gem we wanted, and not to mention installing the NLP modules for python. I'd hate to have to have railsplayground and then start again in a month when we're needing more control. I think a Linode with 16/GB of storage, 512MB of RAM, and 200GB/mo of transfer (which we don't need... yet) is only $19.95 a month. I've used them before and loved it. You can spin up new images left and right at will. I'd consider it a slight step down below Amazon in terms of complete control and flexibility, although I know a lot of startups using Linode for their production environment.
On Dec 21, 2010, at 12:36 PM, Jonathan wrote:
Personally I dont enjoy things like deploy and configure apache, mysql, etc (I will, but the pain has to be pretty high to get me to dig in :)
If you're willing to be our sys admin, then I'm game. http://library.linode.com/frameworks/ruby-on-rails-apache/ubuntu-10.04-lucid
Railsplayground does give you a virtual root access so you can install and control whats loaded, just everything you need for rails (and python) are preinstalled for you. Perhaps you were using a shared account?
On Dec 23, 2010, at 5:59 AM,Manager wrote:
Been thinking about true hosting that will support our html/php/js/mysql web needs and our ruby on rails needs. I looked through a number of review sites and came up with OCS Solutions. Take a look and give me your take. It is time that we start to centralize our development and have the ability to build the website on top of the ROR and db.
I am not convinced this will be our final production platform (probably not) but for the next X months, this should do. Once we are further down the path we can talk about virtualizing and the cloud.
OCS : http://www.ocssolutions.com/hosting.php
On Dec 23, 2010, at 9:33 AM, Jonathan wrote:
- the immediate objective should be convenience and agility and support (versus performance, scaling, security, etc)
- I believe our "requirements" have changed since before we met: RoR, Python, direct database access (mySql), commandline access
- heroku is totally cloud-based (built on Amazon AWS), is easy to spin up new "servers", and makes it very easy to deploy Rails apps, but its specifically a Ruby platform, has limited access to the app's database, no local file storage, and limited commandline, so its not our best choice
- a rackspace server or a linode service would offer the most flexibility, but require sys admin attention
- a typical entry level / developer solution is a Shared server account, which has limitations not just on performance but you need to request they install stuff for you as needed.
- an intermediate solution is a VPS (virtual private server) service has the access, storage, and bandwidth we probably need. It's somewhat scalable; and convertible to a dedicated server if needed
- Personally I think we could get by with a Shared account to start ($5-$20/mo) now, or a managed VPS ($30-$100/mo), and then grow into a dedicated server or cloud based multi-server architecture when needed
- OCS Solutions looks like one although I've not seen them before. I've also used hostingrails.com (but they really pissed me off more than once). These companies are a dime a dozen, the key differentiator being quality and support.
- Developer2 and I both (independently) have experience with RailsPlayground.com and I know I've been pleased with their quality, reliability, and support.
On Dec 23, 2010, at 11:06 AM, Manager wrote:
we definitely do NOT want to admin our own system...a total waste of our time. I can't see anything in this project that would ever require us to do that, even in production.
On December 23, 2010 11:16:57 AM, Jonathan wrote:
for the sake of argument, an argument in favor of being admin, if you know exactly what you want to do, or want to experiment a bit, it is more efficient to have direct control than having to work through (or work around) support tickets with the hosting service.
On Dec 23, 2010, at 12:30 PM, Developer2 wrote:
Btw, i draw a distinction between admin in prod and admin in dev. Perhaps that's worth noting. For admin in prod, there's rackaid.com. I have a very good friend who runs a multi million dollar coupon site and he runs on rackspace.com but he admins nothing, it's all handled by the guys at rackaid. But for dev's sake, "admin" can be very useful.
On Dec 23, 2010, at 12:55 PM, Jonathan wrote:
again, I'll often know "what" i need on the server, or at least, what it needs to do, but not how to do it nor want to figure that out.
(no getting around having to do this on my local development box (imac btw) so I end up with some experience but...)
Anything that closes the distance from what I want to having it work is a win for me.
On Dec 23, 2010, at 1:50 PM, Developer2 wrote:
Well I just looked at RailsPlayground VPS. Only thing that sticks out to me is they only offer Ubuntu 8 or CentOS 5.4. These are very old builds and the repositories are probably not as up to date as newer releases, such as Ubuntu Server 10.04. This could in theory make it harder to add stuff by root console, since we'd have to edit repository files. I dunno, I could mess around with an Ubuntu 8 on a VM at home and see what it might be missing if anything. Guess there's no 100% easy answer here. Perhaps there's another quality VPS provider that offers newer releases?
A few more emails follow, including concerns that RailsPlayground VPS doesn't offer Ubuntu 10.10 as a default configuration.
Then, the bomb is dropped...
On Dec 25, 2010, at 8:05 AM, Manager wrote:
We have an account at GoDaddy which has full hosting, mySQL and Ruby support.
Have at it gentlemen. This server should have all we need including Ruby and ROR. Can you try to log in and test the config?
On Dec 25, 2010, at 12:39 PM, Jonathan wrote:
I'm sorry but I'm very skeptical about this choice.
Once I'm able to log in, I'll be better able to assess.
On Dec 25, 2010, at 12:59 PM, Manager wrote:
I looked at a lot of hosting sites. None were perfect. I would like to try this and see. I just signed up for one month so no issue if we change.
Note: this is NOT our production choice. Just a Dev option.
On Dec 25, 2010, at 1:49 PM, Jonathan wrote:
I'm having difficulty figuring out a diplomatic way to discuss.
from what I can tell, this account:
- runs CentOS, 5.3
- is running Ruby 1.8.4, Rails requires 1.8.7 or 1.9.2
- does not provide anything like a virtual root access
- only supports FastCGI for Rails app, this is sub-optimal, we should use the Apache mod_rails (Phusion Passenger)
- does not seem to allow access to Apache httpd.conf file
- no chance of playing with full stack (Rack) architectures, cacheing, reverse proxies, etc
- I tried installing RVM (ruby version manager) and it fails
- I tried installing git (source code repository), having trouble (http://git-scm.com/download)
- feels like a straightjacket
I'm sorry I was not more explicit about my requirements earlier, I had assumed too much.
I would go with linode before godaddy.
On Dec 25, 2010, at 1:59 PM, Manager wrote:
I hear your concerns. I am not sure why you need all of that control.
I don't want to go around on thus forever. Please help me understand why you feel you need such a granular level of control?
Our software should not be tightly coupled to specific versions. That spells disaster down the line.
Explain the "why" to me. Linode is fine but this granularity troubles me. Is there a feature you need that causes such tight coupling?
On Dec 25, 2010, at 2:59 PM, Jonathan wrote:
If we were going with a hosting company that understands Rails apps, then I'd be less concerned, because I'd have confidence they have mostly what we need, and/or have heard already almost any request I'd make. I dont know anyone successfully running Rails apps on Godaddy.
There's no getting around being dependent of software versions. The way to manage it is to have clear control over what versions your using for everything you need, so the environment can be replicated easily; and if when versions change, you can test the new environment before deploying the updates.
Rails requires Ruby 1.8.7 or 1.9.2 (GoDaddy has 1.8.4).
The current version of Rails is 3.03
http://help.godaddy.com/topic/321/article/1406 (last updated Nov 2, 2010)
"Currently, Rails version 1.1.6 is supported in the default directory, while Rails 2.2.2 is considered an alternate "development" environment."
RVM is a tool not just for managing which Ruby version, but also the set of gems used by the app. It helps make sure, for example, the versions on the live site are the same as on my development machine.
There are several ways to serve Rails applications. The best is Apache with mod_rails.
The FastCGI method is old and flakey, and for example, end users can experience delays (or even a Server Not Responding response) if when the process has swapped out and needs to be spun back up on the server.
Since we're going to be using multiple languages (Ruby, Python), running background tasks ("scouts"; sending email alerts), and so on, we need more control of the server.
Rails 3 is build on the Rack stack. I dont really know the details but basically lets you do some processing on incoming requests before they hit the Rails app. New plugins are being developed to handle things like integrating multiple apps (eg a blog or forum or support ticketing app, Saas authentication and billing, page cacheing, etc) into the main app.
Performance optimization is not an immediate problem, but once we have an app we should anticipate the impact of tens of thousands of users or more. There are lots of nice performance analysis, monitoring tools, cacheing tools, which we may want to hook up sooner rather than later (during beta), if just to help decide our requirements when moving to a more "production" environment.
Even if we host our source on a git service, we still want git on our server for installing stuff and deployment.
GoDaddy is like being a passenger on a bus. (little control, gets you there the way they want to take you)
Heroku is like driving in limo. (their expertise ensures you get there efficiently but you cant get under the hood)
railsplayground is like driving your own car. (you drive, fill the tank, but probably take it in for service)
linode (you are both driver and mechanic, full control lets you build a hotrod or a fixerupper)
On Dec 25, 2010, at 3:05 PM, Manager wrote:
All good points.
I will look into linode tomorrow. Feel free to suggest a service tier.