2015-03-24



Topics:

Drupal Planet

DevOps

Cloud Hosting

Looking for Drupal as a service?

There are many Web hosting companies claiming their ability to host Drupal sites in the enterprise space. However, most of the time, these providers simply provide the hardware or a virtual machine (VM/VPS) with an operating system (OS) capable of hosting Drupal if you build the application stack, configure it and manage it all yourself. They may even claim that they can set all of this up for you, but they'll charge extra for the labour. They don't have a comprehensive platform as a service where instances can be automatically deployed as needed.

What do I mean by a "platform"?

I'm considering a somewhat complex requirement: a solution that includes a fully-managed Drupal application stack with several environments where it is trivial to move code, databases and files between them.

While it seems like it would be difficult to find such Drupal-as-a-service (DAAS) offerings, there are now several available. While these options may seem expensive relative to generic Web-site hosting, they'll save you immensely on labour costs, as you won't have to pay to do any of the following yourself:

Installation of the application stack on each environment (Dev, Staging and Prod, see below.)

Managing all OS software updates and security patches.

Managing the configuration between environments (a.k.a. Configuration Management)

Self-hosting and managing a deployment tool such as Aegir or creating and managing your own deployment scripts.

Developing, maintaining and documenting processes for your development workflow.

The environments in question are Dev (or Development, the integration server where code from all developers is combined and tested), Staging (or QA, where quality assurance testing is done with the content and configuration from Production/Live and the code from Dev) and Prod (Production/Live, your user-facing site). Typically, these three (3) server environments are set up for you, and the Drupal hosting provider provides a simple-to-use command-line (CLI) and/or Web interface to deploy code to Dev, to Staging and finally to Prod while allowing you to easily move site data (content and configuration) from Prod to Staging to Dev. Your developers then work in their own sandboxes on their laptops pushing code up through the environments, and pulling site data from them.

This allows you to significantly reduce or eliminate the resources you'll need for system administration and DevOps. You can focus your project resources on application development, which is to get your content management system up and running as quickly as possible, while leaving infrastructure issues to the experts. Even if these items are outsourced, they add additional costs to your project.

However, you may have specific requirements which preclude you from going with such a managed solution. You may have a need to keep the environments behind your corporate firewall (say to communicate securely with other internal back-end systems such as CRMs, authentication servers or other data stores) or your country/jurisdiction has strict privacy legislation preventing you from physically locating user data in regions where electronic communication is not guaranteed to be kept private. For example, in Canada, personal information can only be used for purposes that users have consented to (see PIPEDA). As a good number of the described hosting services rely on data centres in the United States, the PATRIOT Act there (which gives the US government full access to any electronic communication) could make it difficult to enforce such privacy protections.

Features that would typically be supported on any Drupal-as-a-service platform include the following:

Drush access to all environments

One (multi-core) or more Solr instances for use as the search index back-end in each environment

Support for HTTPS (SSL/TLS)

Git as the version control system

User-friendly (point-and-click) deployments from the Web UI

User-friendly (point-and-click) updates to Drupal core

MySQL or one if its variants (MariaDB, Percona, etc.) for database use

Redis, Memcached or similar as a more efficient back-end cache replacement

A caching proxy such as Varnish

Automated backups

Management of team-member permissions via the project dashboard

Automatic software updates to the server environment

Dev, Staging, and Production sites or full-stack environments for each Git branch

Automatic heavy-traffic scaling

SSH access to the server environments or a scriptable command-line interface (CLI) to the platform

Short turn-around times for technical support issues

Open source: the ability to run the entire platform on one's own infrastructure

Multi-site: support for multiple Drupal sites running on the same code base

Comparing each provider's features with your specific use case will help you decide which service is best for you.

At the time of this writing, the following Drupal hosting companies are available to provide services as described above. They're listed in no particular order.

Platform.sh

Omega8.cc

AberdeenCloud

Xplain Hosting

Pantheon

Acquia Cloud

freistilbox

I haven't had a chance to try all of these yet as I have clients on only some of them. It would be great if someone who's evaluated all of them were to publish a comparison.

This article, Drupal-specific hosting: Choose a provider from those offering comprehensive platforms, appeared first on the Colan Schwartz Consulting Services blog.

Show more