The Story of Toronto Booze Hound or Website Building and Scaling Tips…
Toronto Booze Hound has grown by tremendous leaps and bounds. I thought I would tell the little story of how that growth was handled on a technical level.
How it all began
I started Toronto Booze Hound on a whim. I was hosting with a little site called Hosting24 and they offered me a free domain name. Originally I had switched my domains to them when I switched hosting so I didn’t actually need a domain.
I thought, ‘Why not?’ and decided to start a new project. I loved craft beer and local booze so I decided to write about them. I talked a bit with my partner and we came up with a name:
I set up a wordpress blog on the server, pointed the domain to it, set up a simple template and wrote the first post.
It seems this idea was a good one
The set up at first seemed to work fine. I got a few readers, mostly friends and family and the site worked like a champ.
My partner Shawna got interested at this point and started writing for the blog as well.
Which is when traffic started to grow.
Shawna and I decided to make this more of a professional project at this time and began doing so. We had a logo professionally designed, had business cards made, tweaked the template so it was our own and branded all our social media profiles.
Traffic continued to grow.
Which ended up taking down our site.
You see, Hosting 24 is a shared hosting platform. That means that our website was on the same server as hundreds and maybe even thousands of other websites. This gives our website only a small amount of resources and when we exceed those resources our site gets taken down.
That sucks.
Hard.
Cache all the things
The first step I took in trying to get the site back up was to set up a caching plugin with wordpress. Generally wordpress uses PHP to automatically create each blog post when you read it. Caching pre renders this php and serves people an html page. This significantly reduces the load on the server.
We tried several different caching plugins but ended up with wp-supercache.
Doing this helped a huge amount but when I checked my server resource limits I noticed we were still quite high and any traffic spikes would take us down completely.
Thus we switched our hosting.
On to the Digital Ocean
Digital Ocean is an unmanaged VPS hosting service. In layman’s terms it means they give you an empty virtual server and leave you to it.
In general all the services you might be used to with shared hosting such as Cpanel or FTP are not installed by default.
This meant a HUGE learning curve for me.
I had to learn how to SSH into a server and what to install and use to set up my site.
I then recreated Toronto Booze Hound on the VPS as a duplicate of the live one, so that when I switched the domain over to it no one would notice the difference.
You see, a VPS means we have a dedicated private server just for our site. This significantly sped up the site and made it so our resource usage was absolutely minimal.
There were a lot of steps that went into making it work such as figuring out Apache and the like, but I wont go into too much detail. The learning is the fun bit.
CDN
The next step was figuring out how to make the site load faster. I wasn’t happy with the speeds I was getting even with the VPS and caching.
A CDN is a content distribution network. The most famous one is probably Amazon Cloudfront. What it does is take your static content such as .css files and puts them on the cloud so that people can access it via Amazon’s super fast servers around the world.
I did NOT use Amazon.
I decided on Cloudflare as our CDN. This is for a few reasons. The first is that it is slightly cheaper (free in fact) and the second is that it offers robust security. Meaning it protects the site from nefarious people trying to do mean things.
A great explanation of this can be found on the Cloudflare site.
The other thing Cloudflare offers is SSL support.
SSL is what you see when a websites domain starts with httpS instead of just http. This is a layer of security that basically makes it so people can’t see what you are doing on any kind of shared wireless.
Google has said that it gives a slight ranking boost for people who use SSL AND that they would like to give a warning message to people when they visit a site that does NOT have SSL.
While there is very little reason for a blog to have SSL (it’s usually for payment information) I wanted it to future proof the site.
Setting up Cloudflare was easy and it gave me all of these wonderful options.
Amazon!
While I did say we decided not to use Amazon for our CDN needs we do use it for something else: storage.
Digital Ocean is an amazing service and offers great speeds but it doesn’t really give you much storage space. A basic plan only offers 30 gigs of storage. For a blog that is updated as often as ours with high res images, that isn’t going to fly. Eventually we would hit that limit.
With this in mind we set up an Amazon S3 account. This service gives us simple storage that lets us have ALL of our images hosted on Amazon servers. They only charge us for how much we use so we can scale infinitely.
The best part is that this service is super cheap. The first 5 gigs are free and it’s only $0.03/gig up until the first terabyte. From the looks of it, the prices will probably go down and not up in the future.
A simple Wordpress plugin made it so any media we upload via the regular media tool is auto uploaded to Amazon and then deleted off our server, meaning we will never run out of space on our server.
Amazon does an insane amount of backups so I am not worried about losing the images.
Backup dude, it’s important
I can be a bit paranoid at times. I’m always afraid that something horrible is going to happen and I’ll lose all the hard work we’ve put into this blog. This is why I have set up simple back ups.
We use Updraft Plus for out backups. We have it set up to backup our database and plugins once a week to our Google apps Drive account. If both Google and Digital Ocean somehow fail I would be very impressed.
Did I say Google?
Originally we had a simple email set up when we were on our shared hosting account. We had been using this for a while and needed to keep it after the switch.
The emails were simple: name@torontoboozehound.com
We didn’t want a simple forwarding system (eg. emailing the above would go to a personal gmail account) I wanted that domain to be in the email itself.
In steps Google Apps.
Google Apps allows you to use your domain name on almost any Google service. It costs $5 per user per month which is very reasonable. Being able to use Gmail for your domain is worth it on it’s own. It adds a certain level of professionalism you can’t get otherwise.
This also gives you access to Google drive which has double the standard amount of space.
In the end
It was quite a learning experience to build and scale Toronto Booze Hound. I can’t wait to see what other challenges get thrown at me as I continue to build out the site. Thank you for joining me on this journey!
Maybe next time I’ll discuss the marketing side. Building out SEO, creating content guidelines, branding all of the things, etc.