The web hosting industry has been around as long as'¦ well, the web. It's a billion dollar industry that serves millions of customers each year. Major companies like Yahoo! and Google have entire data centres of equipment dedicated just to their front-facing websites. But the majority of sites on the internet are simple and small, and hosted alongside hundreds of other sites on a single server. This form of web hosting is known as shared web hosting.
Cloud computing, especially Infrastructure as a Service (IaaS) and Platform as a Service (PaaS), have a lot in common with shared web hosting.
As illustrated, just as several different websites of various sizes can be hosted on a single web server, several virtual machines of various sizes can be hosted on the same cloud compute node.
When a user hosts a website using a shared hosting provider, they aren't aware which web server their site is really hosted on. They aren't aware if the server is having hardware issues or is running out of disk space. These responsibilities belong to the service provider. The exact same is true with public IaaS and PaaS services.
The two services are so similar to each other that their systems set up for design, architecture, operations, support, billing, and marketing overlap in some form or another. And while a lot can be written about this overlap, for this article I'd like to focus on the end-user experience.
Early in the web hosting days, users were expected to upload their website through a basic FTP connection on the command line. This was acceptable for more savvy end-users, but as web hosting became more popular, the industry needed an easier way for users to launch their site. In addition, 'hosting a website' become much more complex than just 'uploading some html files'. Users had to create domains, subdomains, DNS records, and mail accounts.
To solve the growing requirements of hosting a website, as well as making it simple for an average user to do all of these things, new end-user tools were created. These tools took the form of 'control panels'.
I'll skip the history of the evolution of web hosting control panels; let's just say that cPanel is currently the most widely used web hosting control panel. Web hosting providers purchase a cPanel license that their customers can then use to manage their websites for free.
Nowadays, most people don't host a simple, static website made up of individual HTML files. Websites are usually hosted on a content management platform like WordPress or Drupal. The problem, though, is that these platforms require database management systems, such as MySQL. While control panels like cPanel enable end-users to create databases, upload their web application, and modify the configuration file to connect their application to the database, this is a multi-step process and can be quite complex for most people.
To help with this issue, a one-click installer was created. This type of tool enables a user to choose a web application from a list, enter some basic information such as a username and password, and click 'Create'. The installer takes care of the rest.
Web Hosting in the Cloud
Infrastructure as a Service enables users to deploy core computing infrastructure that can then be used as the basis for any type of service: whether it's a web application or a Hadoop cluster.
Platform as a Service enables users to use managed tools and platforms to build applications. For example, someone could develop a new content management system by using an existing managed database and PHP environment, instead of building those services from scratch as with IaaS.
But what about the people who simply want a WordPress-based website or a photo management application to share family photos? Is there any place for them in the cloud?
At the SaaS level, there's Flickr for sharing photos, WPEngine for WordPress, and Acquia for Drupal. But what if a user wants to host the application in the cloud, but still manage it themselves? Where's the one-click installer for the cloud?
The cloud solution
The web hosting industry has invested a lot of time in developing simple end-user tools. Cloud platforms can learn a lot from this and ultimately save years of development time rather than reinvent the wheel. At the same time, rather than just copying existing work, these new generations of tools should be enhanced to leverage new technologies and paradigms that cloud computing brings.
Take sandstorm.io for example. It's ultimately a one-click installer like Fantastico and Softaculous. However, it adds some useful features such as installing applications in an LXC container. This wouldn't work well in a traditional web hosting environment without a lot of modifications to the core infrastructure, but in a cloud environment, it's a natural fit.
Sandstorm might not be the first tool to do this, and it certainly won't be the last. Unfortunately it might take another few years for these types of services to be integrated more closely into the cloud. In my opinion, this is because there's currently a huge amount of time, momentum, and money being spent on the infrastructure and platform layers, as well as the orchestration tools to glue everything together. It probably won't be until enough developers get enough phone calls from non-tech-savvy family members asking how they can create a website for their new small business before the focus turns to empowering the average user in the cloud.