This article is now 4 years old! It is highly likely that this information is out of date and the author will have completely forgotten about it. Please take care when following any guidance to ensure you have up-to-date recommendations.
When I started my blog back in May 2007 (12 years ago!) I was running Wordpress, then switched to DotNetNuke, then BlogEngine, then finally back to Wordpress - which I’ve used since 2010. Today I’ve cut over to a new architecture based on Hugo and hosted on AWS using a combination of Route53, Cloudfront and S3.
Why the change? If it ain’t broke…
You may well ask why I’ve made the move, or you may not…I’m going to tell you anyway…
Security - “Installing Wordpress is like installing a RAT (Remote Access Tool) on your server”. There are literally no moving parts in the new setup, which means I don’t have to worry about patching an OS, webserver, PHP, Wordpress and plugins every 30 seconds. Sure, I need to lock down S3, but that’s pretty simple, and once it’s done I shouldn’t have to worry about it again.
Time - OS updates, Wordpress updates, Plugin updates…who has time for that?
Cost - running a web server isn’t really that expensive in the scheme of things, but compared to Route53, Cloudfront and s3 - it is! A reduction from $15/month to $3/month soon adds up over time. More to fund the lab?
An architecture for a modern blog
Hugo - Hugo is a static website generator based on Go, it’s a very quick and very extensible framework for building websites. It allows me to write blog posts in Markdown and generate my entire site in less than half a second!
Route53 - I’ve migrated my DNS from Cloudflare to Route53, the DNS capabilities are similar, but it made sense to bring it under the AWS umbrella. I’ve not migrated my domain registration to AWS yet, but it makes sense to do so.
Cloudfront - I previously used Cloudflare as a Content Delivery Network (CDN) to cache my site, reducing the load on my web server, bandwidth and increasing the performance of the site. Again this was migrated to AWS to bring it all under one roof, and to simplify some of the operations (like invalidating the cache when I update the site) using the AWS CLI.
S3 - Since Hugo outputs static files - HTML, images and CSS/JS, they can be hosted directly from an S3 bucket. Not only is this lightning fast, literally costs me pennies. S3 is locked down to only allow Cloudfront to access it, so it’s pretty secure too.
VMware Clarity - a thing of beauty!
If you’ve visited here before, or use VMware products, the chances are you’ll be familiar with the look and feel of a VMware Clarity site - the Clarity Design System is a bunch of “UX guidelines, HTML/CSS framework, and Angular components working together to craft exceptional experiences”. I’ve made no secret that I’m a fan, I even tried to crowbar it into a Wordpress theme, with limited success (mainly due to my basic Wordpress skills and the limitations of Wordpress templating!)
I am working feverishly on getting my Clarity-based Hugo template to a point where I can publish it - it’s getting there, but I need to do a bit of tidying. If you’re interested, ping me on twitter and I’ll let you know when it’s ready to go! I will be putting it up on my Github repo.
A new workflow
It has to be said that writing in Hugo and Markdown is a bit different to writing in Wordpress, and it’s going to take a bit of getting used to (oh dear God, I’ve got to teach Simon how to do this…) but I think that the benefits outweigh the learning curve. Publishing posts is another change, I’ll be commiting new content to a private Github repository and using VMware Codestream to clone the repo, build with Hugo and then sync with S3 before invalidating the Cloudfront cache to push everything live!
Grudgingly, I have to give a shout out to Cody De Arkland for being an inspiration/irritation to do this. I tweeted a while ago that whenever I have (what I think) is a great new idea, I do some digging and find Cody’s size 13 hoof-prints all over it already. This is true, which is irritating, but it’s also awesome to have a colleague and friend that I can bounce this stuff off of, and he’s always ready to help…so cheers you great soppy lump.