When I started writing this blog in September 2012, it was intended mostly for personal use so I could reflect upon and document my side projects; I was then about three months into my first professional programming gig and my brain was exploding with new ideas. So, I just stood up an EC2 instance and began creating content without a lot of concern about the long-term prospects of the site. After all, I was the sole reader. I’ve recently realized the limitations of the initial site and decided I wanted to revamp the architecture to something more sustainable.
The original site was hosted on the same 8GB EBS volume as the instance’s Linux file system. Once I had a few posts under my belt, I realized that I often add images to my posts. These images take up a lot of disk space. I wanted to stick with the t1.micro instance since I don’t need much computing power behind the blog and it would keep my hosting costs low — about a third the cost of the next instance size up. I ultimately decided to provision a new t1.micro with an additional 20 GB EBS volume for the MySQL database and WordPress install that backs the site. Since there was little content to migrate and lots of file system tweaks I wanted to make, I decided to configure the new instance and volume from scratch.
Since I’ve been using an Elastic IP for my A records, I could easily bring the new node up, configure it, and then cutover to the new site with virtually no downtime. All in all, the configuration of the node, setting up WordPress themes and plugins, and data migration was completed in a few hours on a Sunday evening thanks to this configuration tutorial recommended by WordPress. Once configured and populated with data, I associated the new node with my Elastic IP. Then, presto! The new site was live.
In addition to the new site architecture, I had a few niggling wish list items for the new site. I’ve been running Google Analytics mostly out of curiosity but, now that I am publicizing the site, I thought I should exclude my home IP from analytics reporting.
Also, my original WordPress Twitter widget used its own CSS rather than my theme’s CSS. The inconsistent stying drove me nuts! Since I was reinstalling a handful of plugins anyway, I finally spent some time looking at other Twitter widgets and settled on the Really Simple Twitter Feed widget. Pro tip, installation on this widget is not so simple. You’ll need to apply for a consumer key and secret from Twitter to use it. This annoying level of configuration is because of Twitter API v1.1 which now requires authentication to see publicly accessible tweets (in my case). I will say though, that this widget is by far the most configurable, style-able, and full-featured Twitter widget I have seen.
Whew! I am so glad that the site is in better shape, but that doesn’t mean that my work is done.
- speed up site using image compression/caching — page speed could be improved
- automate EBS snapshotting — automate all the things!
- set automatic site outage alerts — setup sendmail and a cron?
- improve code sample display — I’ve tried embedding gists and had CSS problems.
Update 20140121: Prices above are outdated. AWS dropped EC2 instance and EBS costs. The numbers above applied at the time the post was written. Your mileage may vary.