Work archive

From the early days as an IT Technician to my first web developer role, going self-employed for the first time, managing a team of developers and going back and forth to office work before ultimately realising I'm "unemployable" and returning to running my own business as a WordPress freelancer. The entire history of my work roles and all the pros and cons of working for myself can be found in here.

Cloudways’ Cloudflare Enterprise integration is a crock of shit

We have a few clients with larger e-commerce (WordPress + WooCommerce) stores hosted on UK servers via Cloudways. Generally speaking, the service is fine and the cost is decent for what we get. Support isn’t always quick or knowledgeable but we rarely need it, so it’s not a massive issue. However, I’ve had two different clients on two different Cloudways products both of whom have had problems with their integrated “Cloudflare Enterprise” solution recently, so I feel obliged to moan about it (old school blogging style).

Client A was a brand new e-commerce build: large site, highly bespoke build with some complex third party integrations, but optimised AF👌 (Fantastic project and at some point I’ll write about it.) Hosted on a Vultr box via Cloudways Flexible.

Client B is an inherited WooCommerce site with Elementor, Mailchimp, multiple third party plugins; usual run of the mill ‘built by a plugin jockey’ kinda site. Hosted on Cloudways Autonomous, which is designed to grow and shrink based on the needs of your site at the time.

Client A

Within an hour of Client A’s website going live, they were hit by every scraper on the planet wanting a piece of it. We rapidly rolled out additional optimisations, cached things that weren’t already cached, implemented an atomic mutex on product filters (I hadn’t even heard of an atomic mutex prior to this) so that if multiple people loaded the same combination of filters it would pull from transients instead of rebuilding the list each time, and blocked a few repeat IPs. While that helped bring the CPU load down a smidgen, it was ultimately fruitless as the scrapers just rolled through a another batch of IPs and changed crawl behaviour to bypass blockers, overwhelming the site and bringing it down.

We spoke to Cloudways support and they eventually got back to us and suggested enabling their Cloudflare Enterprise integration at ~$5 per month per site, which would definitely solve all of the problems we were having. We managed to coordinate the client’s tech guy, the client and us to do the DNS switcheroo to route through Cloudflare Enterprise and… it made sod all difference.

I was really surprised by how limited the toolset was once the Enterprise service was enabled. When you think about how much you get in Cloudflare’s free package, it seemed utterly bizarre that we were paying for a shitter package?! We had no firewall rules, no bot detection, no country targeting, no ASIN blocking, just a basic rate throttle and a yes/no for under attack. No surprise that it didn’t make any difference to the situation, tbh.

The only way we could keep the site online at this point was by enabling ‘Under Attack’ mode, but that presented UX challenges to genuine customers and completely prevented some of our third party integrations from working: it wasn’t a sustainable solution.

We called an emergency meeting, coordinated another DNS switcheroo, turned off “Enterprise” and routed through Cloudflare properly. This opened up all the usual tools and I was able to completely resolve the problem with a handful of custom rules triggering managed challenges to questionable traffic. Problem solved, ongoing cost: $0.

Client B

Client B’s problems were similar. Scrapers and bots targeting computationally ‘expensive’ WooCommerce pages and driving CPU usage and bandwidth costs through the roof. Except, their site didn’t go down, because autonomous just allowed the server to scale to meet the “needs” of these bots.

Cloudways Autonomous has Cloudflare Enterprise enabled as standard, it’s part of the offering. No additional $5 charge, but paying over the odds (~$90pm) for space and bandwidth compared to a fixed server (~$60pm), so costing in the long run anyway (even without the overage fees). As per the fixed server integration, it has the same problem with lack of tooling though: no custom rules, no bot management, basically just an on/off switch for under attack.

I flagged the ever increasing costs to the client who raised it with Cloudways, and Cloudways’ answer? To change to a different, slightly more expensive Autonomous package. No management of the bots and scrapers, just throwing more money at it. 🤬 Considering their integration page talks about ‘real results’, ‘enterprise grade protection’, ‘everything you need’, etc this response (and the corresponding feature set) is an absolute joke.

It took some back and forth persuasion, but after the client’s hosting fees skyrocketed to over $800 for the month with no end in sight (a reminder: this should be $90 per month for the base package) they agreed to switch to a fixed cost server routed through Cloudflare free. I finally managed to execute that migration yesterday and everything was confirmed as propagated and working this morning. In the space of 6 hours, Cloudflare free has mitigated nearly 100,000 requests that would have otherwise hit the server:

Screenshot of the security analytics from the client's cloudflare account showing 99.3k requests mitigated by cloudflare

…and all for nothing, nada, zilch. This is going to be pleasant relief next month, as the total bill for Autonomous over August topped $1100 yesterday.

Enterprise schmenterprise. In future, I’ll be recommending clients stick to Cloudflare’s free package, and Cloudways can suck my proverbial.

Day in the life of an autistic CEO

Alright, simmer down, I know I’m not really a “CEO” because I don’t have a board of directors or a c-suite or anything like that, but “day in the life of an autistic freelance web developer turned LTD company managing director” as a title was just ridiculous. Work with me here guys. I’m writing this… read full entry »

WordCamp, Italy, and inspiration

I travelled to Turin, Italy for WordCamp Europe 2024 with Gaz last month. This was the first time we’d spent any meaningful amount of time together since our separation – not counting hourly taekwon-do lessons – and so I thought was going to be interesting. Turns out it was fairly uneventful, insomuch that it was… read full entry »

Reflecting on change

Just over a year ago today I blogged that a change is as good as a rest as I confirmed that I’d be taking on a part time role with a local agency in addition to running my own business. My logic felt sound: supplementing my own income while I expanded Ultimately Better so that… read full entry »

The highs and lows of my first ‘proper’ hire

I made my first “proper” hire at Ultimately Better last month. Well, proper in the sense that I wasn’t just offering a salaried position to a long-standing freelancer; proper in the sense that I had to write a job spec, advertise, interview and make Big Important Decisions. I find the whole process of hiring someone… read full entry »

An Imposter and the Mountains

I’m currently sat in business class on a flight heading to Athens where I’ll be attending WordCamp Europe in a couple of days. We’re directly above the Swiss Alps and while I eat my complimentary breakfast and sip my fancy coffee I’m struck by the raw beauty of the landscape below; seemingly perfect undisturbed snow… read full entry »

A change is as good as a rest

I have successfully rendered myself a liar this week. After calling myself “basically unemployable” back in 2018, I started a new part-time position with Source Design this week. Super stressed Jem who couldn’t possibly contemplate a 9-5 way back in 2018 is now super chilled out handling a senior dev position for one firm, managing… read full entry »

A look back at 2020

I know it’s customary to write up ‘year in review’ style posts at the end of the actual year in question, but I think I’m only just getting over 2020 enough to write about it. How do you put into perspective a year that has simultaneously seen the lows of a loss of a parent,… read full entry »

Tales from Limbo: Part 4

It doesn’t feel right to title the next post in this ‘series’ as Tales from Lockdown, but it doesn’t exactly feel like normality is restored, so Tales from Limbo it is. In the last post from waaaay back in May (er, how did we get to October?) I was a little bit worried that more… read full entry »

Tales from Lockdown: Part 3

After my last lockdown post the Easter holidays drew to a close and we settled back into the homeschool routine. However, the kids seemed to be finding it more difficult to concentrate, and I was more shouty as a consequence. It didn’t feel like we were getting much done, and although I don’t normally do… read full entry »