Update 3: I recently left HEY and migrated this site to ghost.org
As I’m a bit of a geek at heart and because I’m a major fan of open source I really wanted to host this website on an open source PaaS using as much open source software so I decided to use my favourite blogging software WordPress and host it on OpenShift Online. While I was putting this blog together I realised just how far things have come when it comes to setting up your own website, but before I dive into the evolution of hosting that has gotten us to PaaS let me show you exactly why I think PaaS is so magic by taking you through the three simple steps it took to set up a WordPress blog on the domain www.themiddlewareman.org.
Step 1. Register the domain (I use Gandi). This took just a couple of minutes including paying by credit card.
Step 2. Setup an OpenShift “app”. I used a wordpress quickstart which only required the following steps and took a couple of minutes in total:
- Create an account at http://openshift.redhat.com/ and install the client tools (run ‘rhc setup’ first)
- Create a php-5.3 application (you can call your application whatever you want)
rhc app create wordpress php-5 mysql-5 --from-code=https://github.com/openshift/wordpress-example
- That’s it, you can now checkout your application at:
- You’ll be prompted to set an admin password and name your WordPress site the first time you visit this page.
Step 3. All that was left was to register an alias in OpenShift for www.themiddlewareman.org and update my dns settings (I use DNS Made Easy) to point to my new application url. Again this took only a few minutes to do and as I’m using a really great DNS provider my changes propagated super fast!
Funnily enough tweaking the theme and configuring plugins took WAY more time than installation, but again the simple steps above just illustrate how easy it is to set up a website with a PaaS — and of course with OpenShift I still have ssh access to the site and everything is in a git repository that I control and I can even do my own backups of my site if I don’t trust the WordPress backup plugin I’m running which backs up this site to my Dropbox account once a week.
So this prompted me to think back to just how far we’ve come in the last 20 or so years that the internet as we know it has been around. Here are the different phases that we’ve been through so far.
- Internet Connection — yep, you got an internet connection (ranging from a dial-up to a T3 line) and a static IP and you hosted your own site on your own hardware. This was pretty expensive and totally manual because you paid for Internet, Hardware and you looked after everything from hardware, software, networking and everything in between.
- Servers at the ISP — either collocated or access to the ISP’s own servers. At this point you needed less networking smarts and your connection got both faster and cheaper but you still needed expensive hardware and it was all still very expensive.
- Geocities arrived on the scene — It’s really worth mentioning these guys because what they did was setup some of those big expensive servers and paid for the internet connection but they carved it up into little chunks (1MB seemed huge at the time) and allowed you to host very simple websites for free, they even generated the HTML for you so you didn’t have to hand craft it yourself. This then spawned a whole hosting industry where you could get a very small slice of a bigger machine with varying levels of privilege from what was usually FTP and flat HTML files to SSH and the ability to run CGIscripts.
- Virtualization and the arrival of the Virtual Private Server (VPS) — With the increasing usage of virtualization by hosting providers and as Linux started to infiltrate the hosting market it became possible to have your own virtual server that you had root access to and complete control of. At this point people were really still building traditional applications and managing their servers by hand or with elaborate management tooling but the. Most of my own personal website and projects are now hosted on a VPS that I’ve had for the last few years from Linode (arguably they are an IaaS provider too) but with the evolution of PaaS it’s starting to make more sense for me to move all these sites onto a PaaS.
- Infrastructure as a Service (IaaS) — The revolution of IaaS was not that you could get a vm really quickly though that is part of it, for me the really significant change was that you started to architect your applications differently, this is where application nodes started to become stateless, we started to move away from clustering to share application state and move to using things like databases more for state (initially, because that’s what we knew) and ultimately to using data grids for application state. As applications get adapted or new ones written for this new approach they will become more resilient and scalable with the main idea being that you can kill any server in your infrastructure and service will continue as normal automatically. With this approach you still do care about things like the operating system and how to scale and all the magic that goes along with it. There are some steps being taken to ease this pain already in the IaaS world such as Amazon’s CloudFormation or the open source equivalent for OpenStack called Heatwhich look promising.
- Platform as a Service (PaaS) — this is really an evolution of IaaS where instead of me (the application developer) maintaining the underlying infrastructure and taking care of the operating system, failures and scaling etc. I now let the PaaS do that so that I can focus on my code and my application alone. The steps to setup this blog are a pretty good example of how PaaS works.
- Software as a Service (SaaS) — basically hosted applications such as SalesForce.com or services provided by Google such as Google Mail. I could have even gone with the SaaS approach by using a service like WPEngine to host this site and they would have taken care of all the hassle or running it and keeping it secure (at a cost). SaaS style applications are sort of what I expect most application developers to develop going forward and the smart ones will start building their apps on a PaaS — like the Cloud9 IDE which is entirely run on the OpenShift PaaS.
You may have more thoughts and ideas on these phases (comments welcome) but for me as a lazy developer who still likes to have control I think it’s fantastic that I can now have an application up and running with a few key presses or clicks and what’s even more amazing is that it’s completely repeatable and doesn’t depend on a huge IT department to run, anyone can host their own OpenShift instance using either the Origin community version or the fully supported and tested Enterprise version or just use the Online version if you are like me and don’t want to think about managing servers anymore.