[ Case study ]
Rival-community attacks and scrapers repeatedly knocked the platform offline mid-tournament; the origin autoscaled to absorb floods and the bill followed, while real players during finals saw nothing but error pages.
CLIENT a gaming community and tournament platform — FOCUS Attack surface at the edge
Representative examplesEvery case study in this library is an illustrative composite of the kind of engagement we deliver — written to show our method and standards, not to name clients.
Competitive gaming tournaments, ladders, and forums for a multi-title community run on this platform, maintained by long-serving volunteers on a modest VPS fleet and a community-funded budget. Finals nights draw the year's sharpest traffic — thousands of players checking brackets simultaneously — and rival communities target the platform with floods and scrapers. Downtime becomes forum drama within minutes, so reliability is part of the community's standing. There is no operations team; whoever is awake when something breaks is the on-call engineer.
Rival-community attacks and scrapers repeatedly knocked the platform offline mid-tournament; the origin autoscaled to absorb floods and the bill followed, while real players during finals saw nothing but error pages.
We proposed moving the attack surface off the VPS fleet: Cloudflare proxies everything with managed DDoS rules, API rate limiting derived from recorded finals traffic, and bot defenses tuned so legitimate sharp traffic passes untouched. Leaderboards, brackets, and static assets cache aggressively with event-scoped keys; real-time lobby state stays uncached but small. Because the platform is community-run with rotating volunteers, every piece of the defense had to be explainable — attack-day runbooks written for whoever is awake, describing what Cloudflare shows, which dashboard to open, and when to escalate.
Just as important is what we ruled out, and why:
Cloudflare proxies everything with managed DDoS rules, rate limiting on the API, and bot defenses tuned so player traffic passes and floods don't reach the VPS fleet.
Leaderboards, brackets, and static assets cache aggressively with event-scoped keys; real-time state stays uncached but cheap.
Attack-day runbooks — what Cloudflare shows, which dashboard to open, when to escalate — make the defense operable by whoever is awake.
Delivered by the systems pod — engineer over 6 weeks, with working increments reviewed with the client every week.
Obstacle
The first API rate limits, set from estimated finals traffic, caught two legitimate tournament integrations mid-event and briefly broke live bracket updates during a real match.
Handled: We re-derived limits from recorded finals traffic, issued integration tokens that bypass the shared limit, and wrote the derivation into the runbook so future limits come from data.
Obstacle
Volunteer turnover meant the runbooks couldn't assume continuity — the defense as designed assumed knowledge that existed in exactly one person's head and nowhere else.
Handled: Every runbook was written by the server volunteer while a second volunteer shadowed and asked the questions a newcomer would; the pair role-tested each runbook before sign-off.
The headline: three targeted attack windows during tournaments absorbed at the edge with players unaffected — Flooded origin → protected finals, read from Attack + traffic logs. A second check: origin scaling spend after attack absorption moved off-origin at −$310/mo.
Finals night is about the games again. Moderators spend attack windows posting updates instead of reassuring angry threads, and the volunteer who runs the servers sleeps through most incidents because the runbook covers the first ten minutes without them. The community noticed the platform simply staying up, which defused the drama that used to follow every outage. Scaling spend stopped being the treasurer's monthly surprise, and the volunteers who built the platform can step back without feeling they're abandoning it.
The result was read from Attack + traffic logs against the pre-engagement baseline over the stated window, with a guardrail check on origin scaling spend after attack absorption moved off-origin. Where platform-reported numbers and business outcomes differ, this record says which layer it is quoting.
What we would do differently
We would set API rate limits from recorded finals traffic, not estimated — the first limits caught two legitimate integrations, and tuning from real logs would have avoided the brief outage their fix caused.
[ Related service ]
[ Related builds ]
Shared host per-site preview deploysAll five brands live on Vercel with preview-deploy reviews and tested rollbacks
Two years adrift maintained baselineSite current on a monthly cadence with verified restorable backups before recital season
[ Next step ]
Next case study