Skip to content

docs(plan): Cloud Run web tier to serve 1000 VU without a CDN - #7

Merged
poly-glot merged 1 commit into
mainfrom
docs/cloudrun-web-tier-plan
Jun 7, 2026
Merged

docs(plan): Cloud Run web tier to serve 1000 VU without a CDN#7
poly-glot merged 1 commit into
mainfrom
docs/cloudrun-web-tier-plan

Conversation

@poly-glot

Copy link
Copy Markdown
Owner

Adds the implementation plan for moving the stateless Deno/Fresh SSR tier to Cloud Run so the site serves 1000 VU as comfortably as 100 VU today, without a CDN.

Summary

  • Problem: measured ceiling is ~150 req/s at SLA; at 1000 VU p95 degrades to ~8s / ~1.6% errors. The binding constraint is web/SSR CPU on the 4-OCPU OKE cluster, not dmozdb (which sat at ~100× headroom).
  • Approach: move SSR to Cloud Run (autoscales past the 4-OCPU cap); keep the single dmozdb in OKE behind a ghostunnel mTLS sidecar (Deno.connectTls from Cloud Run → OCI NLB → ghostunnel → loopback dmozdb). No wire-format change, no gen-client-ts.
  • Backend needs no scaling: the bench sweep puts dmozdb at ~25% utilization at 1000 VU (@1500m). MVCC / read-replicas / big-core boxes stay irrelevant.
  • Tradeoff: no CDN → all page bytes egress from GCP (~$0.09–0.12/GB), budgeted explicitly; a CDN is the obvious follow-up.

Docs-only change. Plan lives under docs/superpowers/plans/, same as the zigstore extraction plan.

Move the stateless Deno/Fresh SSR tier to Cloud Run (autoscales past the
4-OCPU OKE cap) while the single dmozdb stays in OKE behind a ghostunnel
mTLS sidecar — no backend protocol change. The in-cluster bench sweep
puts the backend at ~25% utilization at 1000 VU, so no backend scaling
is needed; the binding constraint was web/SSR CPU, not dmozdb.
@poly-glot
poly-glot merged commit 6de9212 into main Jun 7, 2026
2 checks passed
@poly-glot
poly-glot deleted the docs/cloudrun-web-tier-plan branch June 7, 2026 09:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant