The Issue At Hand: Efficiently Host Your Application
You’ve got an MVP or your business’s first web portal built, and now you need it hosted so you can start growing your user base and access your data from anywhere. There are many options for hosting, but they fall into a few broader categories. Each category has pros and cons, I’ll walk you through the financial and time based costs of each so you can decide which works best for you. Hint: If you’re not running a crazy performance bound application or running millions of dollars of business through your application, you’ll gain some valuable insight by the time you reach the end of this article which may conflict with most people’s initial reactions when researching server costs.
Would you show up to a kegger with the fine crystal or go to a state dinner in your workout clothing? Each situation has the appropriate tool, read on to find which tools you should use, and why.
Posts on How Efficiency Brings the Best Value:
- Intro to Efficiency Across Your Application’s Life
- How to Efficiently Develop Your Ruby on Rails Applications
- How to Efficiently Architect Your Rails Codebase
- Choose the Right Server to Efficiently Run Your Business
So Many Hosting Options
There are 3 Primary ways to host a web application:
- Rack your own server
- Infrastructure as a Service (IaaS)
- Platform as a Service (PaaS)
Roll Your Own With Your Own Hardware
This can be either a racked server in a datacenter, or a machine in your home or office which is hooked up with dynamic DNS or a static IP address. For this, you’ll be responsible for building and maintaining your hardware and operating software on the machine, as well as any application specific maintenance.
Pros: Extremely inexpensive month to month cost for the processing power Cons: Higher setup cost, very time consuming. You’re responsible for everything. Requires possible travel for outages.
Serices like Digital Ocean, Linode and Amazon’s EC2 all offer you computing infrastructure. You pay for a linux box which they spin up on a virtual machine, which you will then have to configure before deploying your application.
Pros: No hardware maintenance necessary. Excellent value for the performance and hardware you get. Can be entirely managed from ssh. Cons: Requires knowledge of maintaining and configuring linux based operating systems.
The two major players here which I’ve seen used are AWS’s Elastic Beanstalk, and Heroku. Using these services provides the bare minimum of required setup. You can have your application up and running in a matter of seconds between when you sign up and deploy your application.
Pros: Fastest to setup. Approximately zero time spent maintaining the box which runs your code. Cons: Highest Monthly Cost
Which Should You Use?
Many people like to search for alternatives to Heroku because yes, it does carry the highest monthly cost of any of these providers. I myself have gone down that path a few times. However, each time I’ve invested myself in swapping to a different provider it’s inevitable that some snag is encountered. Quality developers will cost you in an hour probably what you’d spend on an entire Heroku bill in a month. In the end, no matter which way you approach it, using a PaaS provider such as Heroku is worth it.
When Should I Transition from Heroku to Something Else?
Unless your business has very unique needs such as using GPUs for transcoding, processing, ridiculously snappy response times or some other edge case for performance, Heroku will be what you want to use for everything from a staging server for your MVP up through being a medium sized business. In terms of cost, I’d say that you may want to research alternatives at the point where the difference between your Heroku bill and getting similarly powered EC2 or Elastic Beanstalk servers is .5-1x the cost of the salary for a dedicated DevOps and deployment employee or contracter. What this means is that if your Heroku bill is under $3000 a month (or you’re getting slaughtered by an unfavorable exchange rate), then it’s not even worth your time to research alternatives, unless of course you have very specific performance needs as mentioned above.
Choose the Right Server to Efficiently Run Your Business
Let your developers be developers; don’t burden them with unnecessary needs such as maintaining servers. If you’re a startup or looking to launch an MVP, why would you waste your own time and money searching for and hiring a compentent, dedicated DevOps person, when you could save all that hassle by simply using a platform which was designed to save you time and continually enhances their offerings. A linux box will always take the same amount of work, but year over year, Heroku makes life better and easier for those of us who want to launch businesses, ship code and not waste time on trivial matters.
If you enjoy having free time and the peace of mind that a professional is on your side, then you’d love to have me work on your project.