Moving from shared hosting to a PaaS

Tweet about this on Twitter0Share on Facebook0Share on Google+1Share on LinkedIn0Share on Reddit0Email this to someone

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?

  • Pingback: » Searching for a shared web host that doesn’t suck (1 of 3) - Steve Perkins

  • Pingback: » Searching for a shared web host that doesn’t suck (2 of 3) - Steve Perkins

  • Pingback: » Searching for a shared web host that doesn’t suck (3 of 3) - Steve Perkins

  • Pingback: » Google-hosted mail for parked domain names, without needing a web host - Steve Perkins

  • http://adasdalla this is a test message

    I much like the precious info you provide you with on your content.I will bookmark your site and examine all over again listed here continually.I am really totally sure I will understand plenty of recent things best listed here! Great luck for the future!

  • Pingback: » Hosting a WordPress site on AppFog, without persistent file storage - Steve Perkins

  • http://lazurski.pl/ Tadeusz Łazurski

    I tried to print this article (Firefox 26 on Windows 7) and got first page OK and then 7 empty pages.

    Just saying :)

    • Steve_Perkins

      Thanks for the heads-up, and the interest in the article!. The printing problem doesn’t show up in Chrome… and these days I mostly use Firefox only for development (i.e. Firebug), or when I have specific need for some other plugin. However, it’s unfortunate that this WordPress theme (“Destro”) would have printing issues under any browser.

      I like the overall look of Destro on the screen, but I *have* been using it for a long time now. I’ve been thinking about switching to a more contemporary minimalist theme, but I haven’t yet found one that I really like. If you or anyone else has any particular recommendations, I’d love to hear them.

      • Steve_Perkins

        I’ve been playing with some WordPress themes this evening. I keep going back and forth between “Splendio” (http://theme.wordpress.com/the…, which has a very nice set of features, and “Suits” (http://theme.wordpress.com/the…, which has a very clean minimalist look. They both seem to print nicely on the major browsers, at any rate.

        • http://lazurski.pl/ Tadeusz Łazurski

          Now it prints :)

          I see you chose Splendio. It’s nice, however not responsive. Suits (from Theme Weaver) on the other hand is very much responsive and very clean. I’d chose Suits :)

          • http://lazurski.pl/ Tadeusz Łazurski

            And now (with Suits) it prints even better, as sidebar goes to the bottom of the print.

          • http://steveperkins.net/ Steve Perkins

            Like I said, I keep going back and forth. I definitely prefer the look of Suits, but I like how Splendio offers a “Featured Posts” slider at the top. More importantly, I HATE how Suits always shows the full text of all posts… even when you indicate that you only want excerpts shown on the main page. I’m sure I could edit the theme to change that code myself, but then it would be overwritten every time a new Suits update comes out. What a hassle.

          • http://lazurski.pl/ Tadeusz Łazurski

            Oh. Too bad you can’t make a pull request to their code :)

            I don’t do much WordPress now, but I would suspect there are plugins for featured content. It would require widget area of course.

          • http://lazurski.pl/ Tadeusz Łazurski

            I see you now have featured content slider in suits. Was there a need to change theme’s code?

          • http://steveperkins.net/ Steve Perkins

            After trying a few different plugins, I settled on “Featured articles Lite”. Strictly speaking, it required no code changes… although I did add an extra line-break on the main page template, because there was no space between the slider and the top-most blog post.

            I’m pretty happy with where things are now, with the sole exception of posts showing up on the main page IN FULL (rather than excerpts only). However, when I tried making code changes to force the main page to use excerpts instead, I found that even the individual article pages themselves were showing excerpts instead of the full text. I’ll just have to re-visit it in the future when I have more time to learn WordPress internals in more detail.

          • http://lazurski.pl/ Tadeusz Łazurski

            You probably could use `is_singular()` WordPress tag to conditionally display full content in singular view and excerpt otherwise. Check out the docs: http://codex.wordpress.org/Function_Reference/is_singular

  • Cleber

    Looks like AppFog doesn’t offer a free plan any longer. Cheapest option is $20/month for 2GB Ram and 200MB of DB storage.

    • http://steveperkins.net/ Steve Perkins

      Yeah. At the time that I wrote this article a bit over a year ago, I had not discovered DigitalOcean selling full virtual machines for $5 a month. Now, I chuckle when I look back on this piece!

      Occasionally people will still email me with specific questions for hosting WordPress on a PaaS. I no longer think that it makes any sense to do so. Third-party PaaS services only make sense for small companies hosting custom application code that is placed under unpredictable load levels. The paid tiers keep getting cheaper and cheaper, but will never be competitive with shared hosts or DigitalOcean for something like a WordPress blog.

      Meanwhile, because the paid tiers keep getting cheaper, the free services keep shrinking or going away altogether. It’s fine to tinker with these companies out of intellectual curiosity, but in 2014 it’s nuts to even think about hosting a blog on one of these services.

  • http://greglgomez.com Greg L Gomez

    How did you solve the persistent storage problem with WordPress on appfog? Did you go the AWS route to host your wp-content/uploads?

    • http://steveperkins.net/ Steve Perkins

      Wow, it feels like a decade ago that I wrote this post. I was surprised when I looked at the timestamp and saw that it was just over a year ago. Things sure do move rapidly in the “cloud” hosting space.

      As of mid-2014, I wouldn’t even CONSIDER what I was doing a year or two ago with AppFog. Two things have changed since then:

      [1] AppFog has basically eliminated their free tier, and paying to host WordPress on a PaaS would absolutely be the wrong tool for the job, and

      [2] DigitalOcean emerged as a serious EC2-alternative for the low end of the market, selling full-blown virtual machines for only five bucks a month.

      I moved my WordPress blog over to DigitalOcean about a year ago, and use that virtual machine to host most of my personal project applications as well. I endorse them wholeheartedly.

      However, to answer your actual question… it was a total hack. I was running WordPress locally, with its entire installation directory stored in source control (i.e. git). When I wanted to create new posts, “upload” new media, or install/upgrade themes and plugins… I would do so on my local machine. Then I would commit all of the filesystem changes to source control, upload to AppFog, and update the remote MySQL database with a local export.

      It was a complete pain, and really more a matter of “seeing if I could do it”.

      • http://greglgomez.com Greg L Gomez

        Think I lost my reply. unless moderation is on, so sorry if this is a duplicate..

        I totally agree with you on a personal front, I have several, low traffic hobby sites hosted there, but I’m looking for a solution to host client sites where I don’t have to worry about caching, updates, security and scaling, along with the neat git deployment workflows you get with platforms like GetPantheon and OpenShift.

        I guess I’m looking for managed WordPress hosting, but with price plans and features dedicated to agencies, not business owners who just want to get up and running. And also, these hosts become prohibitive when aimed at more numerous, low traffic, local business websites..

        So my quest for the perfect cloud hosting solution continues, thanks for the reply! =)