Ask HN: Heroku or AWS or?

15 points by bryang ↗ HN
I'm currently in the development phase of my new venture and looking to compare services. My site revolves around text tables and a very limited amount of images (none uploaded by users). I do NOT expect to have 50k users within 6 months of launch, but there is a possibility it may happen. Within a couple years however, I do hope to be in that 100k+ range.

So, what do you fine folks recommend?

Looking forward to hear your thoughts, thanks!!!

15 comments

[ 4.0 ms ] story [ 52.3 ms ] thread
Start out with Heroku, so you don't have to waste time configuring and managing servers. You can learn all that stuff once you start to scale. Then move to something like Linode or Digital Ocean or cloud66.com
Is it really that involved to manage your own server? Especially if you are starting out and its just one or two servers. There's so many good guides out there that I would say might be worthwhile to spend that time now.
It does take time due to the security risks to be managed. But its not that much time and can be mostly automated. If the OP is new to server management then it might be a bit uphill.
I am new to server management but I've got some much better dev guys on my side too. This is my mostly for my own research and seeing what the community thinks!

This is all super helpful as this is my first major undertaking.

Have you done any Django installations? I have a VPS with Ubuntu 12.04 and looking at how best to go about this? Currently looking at Chef.
I run a Django app on AWS Ubuntu machines managed by Chef. I have my own chef server, but you could also do hosted Chef to avoid the extra infrastructure.

Basically chef bootstraps the node from EC2, since you can only give it an initial keypair. Chef server will SSH into your box and install user accounts, the firewall, the webserver, tweak some settings (like mounting EBS volumes, restricting SSH, etc), install virtualenv and python. We use fabric to deploy, and that's when the code installs Django and whatnot in the virtualenv, as well as put the code on the machine.

Can't tell you if Chef is the best option. It's what I've been learning but it does have some rough edges. Finding the "right" cookbook is hard, because Opscode's listing isn't always the best. If you have concerns about using any particular setup to keep your environment homogenous (e.g. all init, upstart, runit, or supervisor) you'll have to put in quite a bit of work.

I'd recommend using Ansible instead. I've found it to be much simpler than Chef and Puppet, especially if you only have 1 server to manage.
There is, more so than Linode for example. EC2 isn't a hosting provider. The instances can just disappear and everything on that instance is gone. If you are going to host a site there and do it right, then you need to fire up multiple instances and wire them together. There are tools to help with this. For persistent data storage, there is EBS. There are also tools available to running your application across multiple servers. These tools also create more complexity and failure points. For example, I believe EBS has been the cause of sites going dark in past AWS outages. Then you have AWS challenges such as crap IO on the smaller instances and more cost / complexity for getting around that. Dealing with all this gets expensive for the "just starting out" stage. It's probably okay for the "middle" stage when you are getting a lot of growth and have the cash to spend.

If you are just starting out, it's best to go with a more conventional provider.

I'm not a guru with AWS or systems admin in general, but these are the sorts of issues I have run into in the past.

Yes, but on the other hand: if you pay for your mistakes now, things aren't that bad because you haven't got many users yet. If you're in the need of scaling things up you still have to figure out how AWS works. Who would you rather offend by downtime: 10 users while you're starting out, or 10,000 paying users a little down the road?

I highly recommend getting started with AWS now. They have a free tier (1 year) which you can use. Heck, you could play around with it, just using it for the company blog.

AWS is great in terms of autoscaling. True, the I/O isn't great, at least for the free tier (all the more reason to start now, while server load isn't that big yet). I wrote a blog post on starting out with AWS last year, check it out if you like.

Once you want to scale and go big, you might want to use AWS, until that moment it's a matter of how much you want to tweak the server.

SUper powers and full customization --- > LINODE Deploy + Deal with it acttitude to the server guys ----> Heroku

I would start on the free Heroku stack and if it grows then move it to a good webhost, then to a VPS, then to AWS (or your own boxes).
I think it depend on how much you want to tweak the server and which framework you use.

For me, I use Zend Framework and AWS. So far so good and AWS release my loading effort in maintaining the whole system.

In my monthly bill, the most expensive AWS service was EC2 and RDS.

FYI: AWS Free Usage Tier charge me less then $1 every month during my development phase.

Three words... Google App Engine.
Personally, I love Heroku. It's amazing for scaling your application. Don't jump in the deep end with AWS, scale your site easily with Heroku.
Hey,

So I understand there can be hassle on how setup your own VPS Server on services like amazon, etc... but sticking to Heroku still isn't that cheep either.

If you have your Heroku app "production Ready" you might still be costing you 200 bucks a month.

Also Heroku isnt as stable and performant as for example amazon server. I migrated my app out of heroku to Amazon and got a 5X increase in performance while spending the same money I did on heroku, not to mention you have more controller over your servers where you can play around and increase performace even more.

And don't worry about setting up your own servers in amazon, Now youcan use OpsWork for deploying your apps, and its like having heroku on Amazon servers plus Root access to them.

cheers