Pictures this: You’re sitting in class one day and you’ve just had the next great idea. It’s so obvious you think, leading you to perform a quick Google search to see if someone else has beat you to it. After getting through page two of related Google results, you are satisfied that your bright idea isn’t out there. Suddenly oblivious to anything but your newfound path to the promise land, you spend the rest of class thinking about how this is going to make you millions of dollars and you completely miss the professor’s announcement that there will be a quiz next class.
Class finally ends and, as your classmates congregate in groups to find out who will let them copy the notes from the three classes they slept through last week, you hastily head out the door. You make the quick decision to skip your next class because, well, why bother listening to another boring lecture about Chaucer or quantum mechanics when you’re suddenly just a few days away from your first funding round?
As you’re hurrying back to your dorm, you call your girlfriend and tell her you can’t make dinner tonight. You then text your former roommate to ask him for the name of that computer science genius he’s always talking about. Ten minutes later you’ve got your co-founder and a bag of Taco Bell for your first full night of development. Neglecting all possible responsibilities and obligations, you and your new best friend spend the next two weeks translating your idea into code.
Fast forward two weeks: you are incredibly sick of Taco Bell and Red Bull, your grades are down ten points across the board, your girlfriend now has the prefix “ex” in front of her former title, and your parents are starting to wonder if you’re still alive. On the bright side, you and you and your co-founder have just wrote the final line of code on what is sure to be the greatest product ever released. There’s only one problem: your amazing product is localhosted, and the only two people who can use it are the two developers. You know you need web hosting to get it on the web, but there are hundreds (literally) of options, and you have no idea where to turn.
Is this starting to sound a little bit familiar? Let’s take some time to learn a little bit about the different deployment options available to you.
When it comes to deploying a product that utilizes databases and needs to be scalable (remember that you’re anticipating millions of users, and quickly), the top options are almost always considered to be Heroku and Amazon Web Services (AWS). However, AWS and Heroku offer somewhat different services to their customers.
Heroku offers Platform as a Service (PaaS), while AWS makes use of Infrastructure as a Service (IaaS). The difference is that while AWS give you the components you need to build things on top of it, Heroku provides an environment that allows users to push code and basic configuration and get their application up and running quickly. The trade-off is that with Heroku you sacrifice power and flexibility in exchange for efficiency and time.
Why spend the day configuring the OS and installing software for AWS when you could simply type “git push” on Heroku, email the now live link to your mom, and then spend the afternoon watching your analytics charts? Well, if you need to store temporary files, run custom binaries, or compile from a source, Heroku won’t make this easy. If you don’t know what any of this is, you probably don’t need to do it. An additional consideration is whether you foresee the need for vertical scaling. Vertical scaling is essentially replacing all of your hardware with better harder, while horizontal scaling involves adding hardware to work in accordance with your existing setup. If you think that vertical scaling will be in your near future, you should go with AWS. However, as is the case for most startups, the horizontal scaling that Heroku makes available through the use of increased web and worker dynos as your demands increase (all you have to do is drag a slider) should be more than enough for your needs.
Perhaps the most important thing for your new company is money, since you probably don’t have very much of it (not yet, at least). Heroku charges $0.05 per dyno hour (about $36/month), while AWS receives $0.09 per hour for an AWS small instance (about $65/month). Each heroku dyno runs a single user-specified command and is allocated 512 MB of memory. This is roughly comparable to the capabilities of an AWS small instance. Perhaps the best thing about Heroku is that they provide each account holder with 720 free dyno hours and 5 free megabytes of shared database space each month, meaning that hosting your new product with relatively little traffic on Heroku probably won’t cost you a dime at first.
If you’re trying to get your product on the web as easily, quickly, and cost-effectively as possible, it probably makes sense to go with Heroku. If your idea is as good as you think it is and you’re in need of vertical scaling down the road, you can always make the switch to AWS. And, by that time, you shouldn’t have trouble paying your hosting bills.