One of the things I find interesting in some of these hosting
solutions, such as Ben’s, Engine Y., Rails Machine, and so on, is
what appears to be how niche and/or limiting they could be. I have
nothing against these solutions, and I know personally that the Engine
Yard guys are doing great stuff (I’ve been watching their
contributions, talked to them for quite a while at RailsConf this
year, and so on). However, what happens when your application doesn’t
fit the mold or grows out of it?
Personally I wouldn’t want someone else writing my deployment recipe,
and me not knowing precisely how my app is deployed. I also find that
all too often you really don’t just have a simple Rails app that
doesn’t use anything outside the Rails space, or for that matter,
outside the Rails space provided by the host (e.g. native gems that
you likely can’t or don’t want to freeze into your codebase, and that
you would at minimum have to request be installed by the hosting
provider, or dynamically set attributes as part of your deployment).
I’ve written pretty involved Capistrano deployment setups (e.g.
deploying multiple applications that make up a single overall web
app/service, to multiple clusters of machines, with production systems
as well as multiple staging systems, different hardware levels and
services, yada yada.), and it’s really just not that hard (praise goes
to the Capistrano folks). Further, many of these solutions would make
it more work to do your own staging systems, where you can’t use
essentially the same deployment recipe just to different set of
hosts/IP’s, thus almost requiring you to buy multiple slices/systems
from a vendor in order to have a staging system that was essentially a
mirror of production.
One could argue that for a real small simple app, why bother with some
of the work, and just leverage these, but real small single machine
deployment type stuff is likely not wanting to spend hundreds of
dollars a month on hosting either (in the case of say an Engine Y.
Now, some of the other services some of the folks provide are great.
Engine Y. (I don’t mean to focus on them, they’re just one of the
more well known ones (IMHO), and one I’ve looked at fairly closely),
has some quite excellent infrastructure, and that kind of stuff is
costly to do until you get to a certain scale. So, if you are after
good redundancy, yet a smaller setup, that kind of facility can be
Thus, my point of contention is really more about the deployment
aspect, and relinquishing one’s deployment to the hosting provider. I
understand that in some cases obviously you need your recipe to match
up with the providers infrastructure. But it seems to be a major
advertising point from many such companies, how they have automatic
deployment, or do the recipes for you, etc. I’d just be cautious.
And, as a counter-point to some of my comments, I just finished up
work on a project of quite large scale (by Rails app standards at
least), where I was not happy with some of the choices forced on us,
and ours was a completely home grown solution. We had 60+ production
servers, our own home-grown storage system, hardware firewalls and
load balancers, multiple Rails apps working together to create a
single web app/service, and we did essentially everything ourselves
(we used some contractor help to setup some of the hardware and get
some of the initial networking configuration done). I personally did
all the deployment/Capistrano stuff, the bulk of the configuration on
the F5 load balancers, wrote the app level of the storage system (the
Rails part), and so on, covering a pretty wide range of work. And
while our scale demanded some of this, we spent a ton of time to do
it, and much of it was not our core competency, so it cost us a lot of
time. I had recommended against this, and wanted to contract out or
use other solutions for much of the data center portion, but
management wanted us to learn it. Learning it was great, and quite an
opportunity, but it didn’t work with our schedule, so I think was not
the right way to go.
Anyway, consider this a big rambling stream of conciousness comment to
say, think about all the aspects when choosing your solution. There
are SO many facets involved, but think about the tradeoffs, where
you’ll really save time or money, and how to best leverage any
services you are buying. I know lots of folks happy on a slew of
different solutions spanning the entire spectrum from home grown to
complete hand-holding solutions. Oh, and make sure you can have fun
On 9/2/07, Ben M. [email protected] wrote:
are isolated in their own Xen slice. And, when you’re ready to scale
well as a beta version of our new product.