Deploying (and failing) on Christmas Day and the move to SaaS
I had a spare few minutes on Christmas day, I decided to check-off one item from my 'to-do' list, it had been there for a while; push out a backend software update for this blog. I have written before about why I decided to use Ghost self-hosted and not the Software-as-a-Service(SaaS) approach. In simple terms, it was to allow for greater control, and a playground for testing new features and functions.
To help with updating Ghost, the Ghost developers released a few months back the Ghost CLI, a tool for providing a standardised install & upgrade process. You can update Ghost via the command line using the following command:
$ ghost update
I have used this command many times, never having an issue. But on Christmas day it decided to fail and cause Cloudflare to return the following error:
This suggests that Cloudflare was not able to obtain the content from the server. I had no time to sort out this error and I had never experienced it when performing an update, I decided to rollback the update:
$ ghost update --rollback
Which failed and still returned the Cloudflare error. Desperate to get back to the festivities I decided to restore a backup via Digital Ocean; always make a backup prior to perform any updates (this backup took 3 minutes). After this, I decided that I needed to lose some control.
Software as a service (SaaS) is transforming software delivery. It has been defined as “software that is owned, delivered and managed remotely by one or more providers. The provider delivers software based on one set of common code and data definitions that is consumed in a one-to-many model by all contracted customers at any time on a pay-for-use basis or as a subscription based on use metrics.”
Troy Hunt gave a really compelling case to the reasons as to why he chose Ghost and provided a comparison to Ghost Pro. Ghost; Ghost Pro is a managed platform that removes the need to manage any severs, install updates or patch any software. Hosting your own website is like when you’re on the underground - constantly getting attacked by nasty airborne viruses like a cold, you need to be careful and ensure you manage the systems, they also cost a lot of money in the long run.
See the cool infographic below, it puts it all into perspective:
Even though you end up losing control of the server (surely a good thing) you are still able to inject custom header and footer code - including custom response headers. You can still have sub-domains and all the other bells and whistles you want/need for a site. The cost to life balance makes it worth it.
Here is me hoping that I no longer ever worry about pushing out updates ever again.