Weekly Update 6: It's about time!
I apologise for the delay in my weekly update, it’s been a crazy week and I’ve lost track of all time. This week I’ve began a new task: building the next evolution of my blog. My blog right now receives between 89,000 to 121,000 hits per month, according to Google Analytics about 25% of that traffic is unique per month. My analytics have been able to show about 7500 hits per month are just bots. These numbers are not including malicious traffic, the total malicious attack attempts would put traffic at about 500,000 per month.
With this in mind, my blog can be really slow when I post new content, it’ll start becoming increasingly sluggish because of WordPress and my website has a lot of resources. In order to sustain this traffic, my blog is load balanced across three machines, with one beefy database server. A short description for this is, when you access my blog or my wife’s blog, you’re hitting a load balanced server in Canada, and your traffic is sent to the lowest overhead server. I’m using haproxy to help with keeping full SSL, Cloudflare for the CDN (which I’m planning on changing from shortly), Varnish for extra caching, and a small Python bot to keep all the varnish caches warm.
Suffice it to say, this blog receives a lot of attention, and it’s becoming a maintainability issue. So, I’ve begun a quest — make a new blogging platform that’ll let me easily sustain this traffic from the nodes, and automatically publish assets over the CDN. OK, I know, it’s not a good idea to reinvent the wheel, but hear me out on this. I’ve been outgrowing WordPress, I need more flexibility, control, and speed from the platform, so I’m using the maintainability as an excuse for most parts to motivate myself to get this project done I’ve started a few days ago. So far, I’ve got the administrative interface, all the Resource concepts pinned (Sponsored Posts, Newsletters, Posts, Pages, Users, Subscribers) which is great, and I’ve began working on the new frontend interface.
I want the default interface for my generic blogging platform to be clean, well laid out, and use TailwindCSS because I’m a fan of the functional aspect of it. For this, I’ve decided a clean white, gray, and orange (sponsored posts) interface would be good with post accent highlights. I’ve taken lots of inspiration from other bloggers with their own platforms and themes. This is something I’ve dreamed about for a while, and I’m glad to be starting on it.
I’ve also decided to switch from Cloudflare to going direct to my load balancer with BunnyCDN as the content-delivery network. In order to take some load off my servers, upon posting I’ll push my content into a storage zone on BunnyCDN and reference the CDN link for all image, css, and javascript assets. Then my web server is only serving HTML to the browser, which makes the load intensity drop significantly. Most of my traffic originates from North America, so being hosted in Canada is perfect, my cluster has three locations – Ottawa, Toronto and Montreal. These are on the Eastern side of Canada, but have the best connectivity for most of the world, except China. In order to provide good enough latency to China, I’ll be setting up a warm cache on a server in Europe (likely Germany) for better latency, and modify the DNS to check latency (Route53) and redirect accordingly.
Well, that’s about all for this weeks update. My weekly update 7 will be out as normal! Have a good day!