Moving from shared hosting to a PaaS

Moving from shared hosting to a PaaS

Background

A couple of years ago I migrated all of my hosting providers, and wrote a series of posts (one, two, three, four) about the state of the market at the time.  The market that I’m in consists of:

  1. Hosting a static WordPress blog on the cheap
  2. Having the opportunity to tinker with some light development using Ruby, Python, or Node.js (since I already use Java and Scala all day professionally)
  3. The pipe-dream that one of my ideas might catch fire, and need to scale up dramatically overnight!

Traditional $5-10/month shared web hosts have always been adequate for the first two needs (sadly, #3 has not come into play yet).  A decent $40-80/month VPS is overkill, and I’m not interested in taking on the admin responsibility anyway.  I likewise didn’t seriously consider a PaaS during my last migration.  The leading “cloud” solution at that time was still the Google App Engine, and it just wasn’t compelling (further discussion).

Reconsidering PaaS

However, I reconsidered after last year’s DevNexus conference, put on by the Atlanta Java Users Group.  I went to a presentation by James Ward, where he created a demo Scala application and deployed it to Heroku.  I was extremely impressed by how developer-friendly the cloud providers had become.

The early Google App Engine was limited to Python or Java, with a lot of restrictions, whereas Heroku supported virtually every language I might ever imagine deploying.  Rather than locking you in to odd proprietary data storage, Heroku defaults to familiar PostgreSQL, with an option to use MySQL.  Deploying code is a simple matter of doing a git push.

Heroku allows you to deploy for free an unlimited number of applications, each using very minimal resources.  This is great is for personal development or proof-of-concepts, and then you can easily add more paid resources when you need to scale up an application for public use.  I created an account for myself and started tinkering.

Almost immediately though, Heroku make a policy change to dial back its free offerings.  Previously, each app was provisioned a PostgreSQL database with a max size of 5 MB.  This would probably have been enough for any personal project I might ever deploy.  Now, they have changed the limit from a fixed number of megabytes to a fixed number of 10,000 rows.  It is hard to complain about a free service, and it is still awesome what Heroku offers to lure people in.  However, I could see exceeding that threshold with even a trivial personal project, and even their smallest paid option costs more than a shared host with no fixed limits.

The Scales Finally Tip

So I lost interest again for several months, until a new PaaS provider named AppFog emerged.  Their PaaS is based on the same Cloud Foundry software developed by the company behind the Spring framework, so I had already heard a lot about the platform.  However, the SpringSource-hosted implementation has been in “beta” status forever, and since they won’t announce any pricing specifics I had stopped paying attention.

AppFog already has straightforward pricing specifics today, which are roughly on-par with comparable VPS hosting.  I like that their plans are packaged around understandable specs, such as gigabytes of RAM and database storage, rather than opaque marketing units like “dynos”, “workers”, “gears”, “m1.mediums”, etc.  The array of languages, frameworks, databases and other services supported with templates is really impressive:

AppFog new app setup screen

AppFog new service setup screen

However, I would be dishonest if I didn’t admit that the real draw is the amount of free resources they give you to get started.  The free starter level includes up to 8 databases with 100 MB of storage each, and 2 GB RAM to spread among as many applications as you like.  Needs vary… a Java-based application defaults to 512 MB RAM, a Rails app needs 256 MB, and micro-frameworks like Sinatra or Flask default to only 128 MB.  Pointing your own custom domain name(s) at an application is free.

You might have noticed in the screenshots above that AppFog offers a template for setting up a WordPress app.  That’s exactly what I did.  This “steveperkins.net” site is now hosted on AppFog for free, allowing me to discontinue the shared hosting account for which I was paying about a hundred bucks a year.  There are some quirks and limitations that I’ve had to work around (further discussion to come), but so far so good.  I’m looking forward to developing some personal projects, without the overhead of wresting with environment setup and admin tasks.

What About Email Hosting?

If you migrate your website from a shared web host to a PaaS, what about your email?  It is certainly worth considering that AppFog does not provide email hosting.  Heroku offers add-on integration with several outbound mass-mailer services, but personal email is simply not part of the business model for PaaS providers.

That’s okay with me, because during my previous migration I decided to de-couple my email hosting from my web hosting.  Google hosts the email for my “steveperkins.net” domain, so I no longer have to worry about this hassle when switching web hosts.

This has only grown easier over the past couple of years.  In 2011, domain registrar services and DNS services were typically separate. Most people received DNS service from their web host.  Using an outside email provider requires you to edit your DNS settings.  So in other words, you had to really jump through some hoops if you wanted to use Google email without having a full-service web host in the picture.

That’s not the case anymore.  It’s much more common now for domain registrars to include DNS service within your registration fees.  One prominent example is NameCheap, which recently gained some notoriety at GoDaddy’s expense over the proposed SOPA legislation.  Although not exactly a political move, I switched from GoDaddy to NameCheap at that time and have been very happy ever since.  While I believe in keeping my domain registrar and my hosting providers separate, it seems intuitive to couple domains and DNS records.  Through my NameCheap control panel, I can point my “A” records at AppFog and my “MX” records at Google, and no longer need any other players in the mix at all.

Unfortunately, Google has discontinued free hosting for custom domain names.  I still get my mail hosted for free because I’m “grandfathered in”, but that doesn’t help anyone else who might be reading this.  Still, personal email hosting can be as close to free as paid services get.  Prices range from $50 per year at Google, down to only $2.99 per year at NameCheap.

Conclusion

AppFog is leapfrogging other PaaS providers’ free starter packages, on a scale similar to how Gmail leapfrogged Hotmail and Yahoo when it first appeared.  As easy as it to de-couple your email hosting these days, it is now perfectly viable to migrate CMS-driven sites to a PaaS.  Could traditional “cPanel”-style hosting soon become obsolete?

I’m not completely sure. AppFog’s pricing model seems bizarre to me.  They give away a lot for free, but more RAM starts at $100/month, and then prices climb sharply toward $720/month from there.  So I would imagine they have a massive community of freeloaders, being supported a small percentage of heavy-hitters, with little “middle class” in between.  If so, would that be sustainable?  It could be that we’re in the middle of a bubble, and all of these freebies will go away when reality crashes down.

However, if that ever happens I could easily take an export, and migrate this site to another web host by tomorrow.  So while I haven’t done much with Heroku, and haven’t trusted “beta” providers with no announced pricing, I am comfortable going all-in with AppFog.  This means that AppFog will quickly become the PaaS provider with which I am most familiar and experienced.  As long as that experience is positive, as it has been so far, this means that AppFog would most likely be my choice if I’m called upon someday to recommend a PaaS for commercial-scale use.  Knowing the reality of how large companies work, I suspect that the public cloud is mostly a marketing tool, and the real end-game is selling software for in-house private clouds.  So perhaps they have the more sustainable model in the long run?