I remember in the mid-90’s reading Scott Adam’s “Men who use computers are the new sex symbols of the 90’s” and laughing out loud. This has largely come to reality as computers become an integral part to all of our lives. But one particular phrase stands out in my mind:
“Soon anyone who’s not on the World Wide Web will qualify for a government subsidy for the home-pageless.”
So what’s a geek to do? Gone are the days when you can be considered cool merely by driving a nice car. We need to run a hot website to be taken seriously, but a website costs money… or maybe not! As it turns out, if you don’t mind getting a little geeky, here is a review of some of the best free hosting deals. (OK, little fib, one of these costs about $0.25 per month after the first year, so not technically free)
- Pros: Speedy hosting, easy management via Git, host your own domain name, very trendy
- Cons: Static HTML only
In order to start using Github pages, you should sign up for a Github account and then read the docs. You can be active in as little as 15 minutes.
Amazon’s AWS service is free for the first year and then normal fee after that. The S3 service is a file-hosting service with a twist. You create a bucket and upload any static HTML content, including web-pages, images, videos and more. The cost for hosting starts under $0.10 per gigabyte per month. They also have enhanced their simple file-storage service to allow hosting complete websites. Unless you offer self-hosted video or file downloads, it’s hard to imagine a website accumulating a full gigabyte of content, so your second year storage cost could very likely be about $1.20.
Like Github, your site is limited to static content, so you’d have to use Stackmob or a similar service in order to add support for a database backed app. But one benefit S3 has over Github is that you can host your content in a geographic region near you. If you are in Europe, you can host your site on the EU (Ireland) end-point which should speed up access for users in Europe. There are end-points in North and South America, Australia, Asia and Europe.
Two things to consider, in addition to the cost for hosting the website, you must also pay for HTTP requests and bandwidth, once they exceed a generous allotment. The pricing is, once again, ridiculously cheap, so even a very busy website will probably only incur an additional $0.25 per month. Secondly, uploading files is not done with Git or FTP, it’s done via an API. However, there are numerous free FTP-like tools for managing content in S3 buckets. Cyberduck is free for Windows and Mac, for example.
- Pros: Speedy hosting, multiple geographic regions, host your own domain
- Cons: Static HTML only, almost, but not quite free after the first year
Check out the documentation for the S3 website endpoints to get started. Creating an account is slightly more involved than Github because you must enter payment information, but you should be ready to go in under 1 hour.
In a bid to show the world that they too are strong in the cloud, RedHat last year announced their PaaS hosting solution called Openshift. There are other PaaSs out there but Redhat takes the cake as one of the most versatile. You can deploy a website based on Java, PHP, Ruby, Python or Node.js and it includes storage and either a relational or non-relational database.
Like most PaaS solutions, you create your web app locally and then install a command-line tool from the vendor to deploy and manage your app. Be careful to follow the instructions when creating your app. The PaaS model requires you to carefully include the required modules in order to make deployment smooth.
The one downside to Openshift is that it is still labeled as a “developer preview”. That means that it is not released as a fully supported commercial product. Actually, the website labeling is a bit ambiguous in this sense because they also advertise a non-free plan starting at $42 /month. To me, this indicates that they don’t have a product strategy for this yet, and that leaves me feeling a little uncertain about it’s future.
But while it’s around, the fact that it supports so many options, including PHP, make it a great choice for your dynamic website.
- Pros: PHP support, many languages, Relational and non-relational database support
- Cons: limited storage, big price jump from free to non-free plans, uncertain vendor support
Google App Engine
One of the first PaaS solutions around and still one of the best, Google App Engine is a solid choice to launch your next app idea. You can deploy Java, Python or Go based web apps and enjoy a variety of free and low-cost add-ons.
If you want a mostly-static website with some dynamic content, strongly consider the webapp2 framework. It is light-weight and easy to learn. With just a few lines of Python code, you can deploy an app that can serve a website, provide database backed storage, send emails and make HTTP requests. If you want to go enterprise, it is rare to find a Spring compatible hosting service for cheap, let alone free, but here it is.
One thing that App Engine can do better than any other free service is send emails. If your app needs to send emails, I would strongly consider App Engine. As if that is not enough, your app can actually receive e-mails as well. You can also send and receive instant messages using the XMPP protocol. If your users likely have a Google account, you can authenticate them and consume other Google APIs with ease.
If your website gets incredibly busy you have the option to scale up the performance of your website and pay a small fee. For example, a single massive burst to your site may cost you $0.50 – $1.00. A constantly busy site will cost you more. You have complete control of the billing and can set quotas and alerts. Unlike the other PaaS services, pricing ramps up gradually as your traffic increases.
If your website is not very busy then there is a down-side: Your website may pause for a couple seconds the first time someone accessess a page after it has been idle for some time. In the grand scheme, this is a very minor point, but it is present. Also, signing up for App Engine requires you to authenticate your identity by receiving a text message. Once confirmed, you can deploy a website in about 30 minutes.
- Pros: three languages, database support, excellent email sending, Google integration
- Cons: Performance can be poor on idle websites, signup requires a text message
I love Heroku because it supports powerful apps with no modification. You can write a Django or Rails app and publish it to Heroku with a simple command. Your app developed for Heroku can also be deployed to a standard hosting provider with no changes. It supports Ruby on Rails, Python, Java, Scala, Clojure and Node.js. There is limited support for PHP if you’re deploying a Facebook app, and of all the PaaS solutions, it is the easiest to use for your first Facebook app.
Like Openshift, the price of the service makes a sudden leap from free to $35 /month and unlike the other tools mentioned, there are a host of for-cost add-ons to the service, so if you’re not careful, you can quickly incur a large bill.
Available add-ons give you free access to Redis, MongoDB, PostgreSQL and a more. One thing to note is that your app cannot easily send emails without using a service. However options from Sendgrid and Mailchimp do give you this functionality and allow you a very generous allowance before charging.
While Google’s App Engine has a more linear price curve as your app grows in popularity, I have to give creds to Heroku for making pricing simple and clear. Also, they have some of the best documentation.
I do wish that they were more generous with their free plan, but I can’t fault them for their limits, however there is one complaint I have: First page-load times for mostly idle apps can be horrendous at times. If your site rarely gets traffic then the first page-load can take upwards of 10 seconds. If you’re using the free plan as a means to test an app, this is not a problem. Otherwise, you need to evaluate the performance and see how it affects you.
- Pros: Great documentation, Ruby on Rails support + many languages, several database options, add-ons
- Cons: limited storage, big price jump after the free plan, poor performance of mostly idle apps
If you want to deploy a Ruby on Rails app, this is the service to use. Sign up takes a moment and you can deploy an app following their tutorial in 30 minutes.
Which to choose?
- If you want a static website that showcases your open source involvement, use Github pages.
- If you need a static website with geographic diversity and you don’t mind paying a very low amount, or if you need to host large amounts of data (like Videos or file downloads) use Amazon’s S3 service
- If you want to host with PHP or you want a very generous PaaS solution and can tollerate unclear vendor support, use Openshift
- If you want Ruby on Rails support use Heroku
- If you are OK with Python support and/or you need excellent e-mail sending capability use App Engine
- If you just don’t know what you want then use App Engine and see if it meets your needs. If it doesn’t, by then you’ll know what you do want and can pick the right tool.