ServerPicks
Back to Blog
Case Studies
ServerPicks Contributor
August 6, 2026
7 min read

How Pingforge, a Bootstrapped Uptime SaaS, Cut Costs 62% and Slashed Latency by 57% with a Managed VPS Fleet

Pingforge -- a lightweight synthetic monitoring SaaS -- outgrew shared hosting and migrated to a Terraform-provisioned VPS fleet across Hetzner, DigitalOcean, and Vultr. Here's how they chose, deployed, and measured real infrastructure gains.

vpsterraformuptime monitoringsaas infrastructurecloud migrationcost optimizationlatency

Background: Pingforge's Lean Stack

Pingforge launched in early 2023 as a bootstrapped uptime and synthetic-check tool targeting indie developers and micro-SaaS teams. Built on Go (backend) and Svelte (frontend), it runs lightweight HTTP/HTTPS, DNS, and TCP checks every 15-60 seconds across 42 global probe locations. By mid-2025, it served ~12,000 active users and processed 4.8M check events daily -- all on a $20/month shared hosting plan (cPanel + LiteSpeed). But growth exposed hard limits.

The Breaking Point: Shared Hosting Pain Points

- CPU throttling: Burst checks spiked CPU to 95%, triggering provider-enforced throttling -- API timeouts increased 300% during traffic surges [Hetzner Status Archive](https://status.hetzner.com/incidents/2025-04-18-cpu-throttling-shared)

- No observability: Zero access to metrics, logs, or network tuning -- debugging latency spikes was guesswork

- Scaling ceiling: Adding more probes required manual config changes; no horizontal scaling path

- Latency bloat: p95 API response time in North America averaged 142ms (measured via Cloudflare Web Analytics), well above the 80ms SLA Pingforge promised customers

Provider Selection: Evaluating Hetzner, DigitalOcean & Vultr

We benchmarked identical workloads (2 vCPUs, 4GB RAM, 80GB SSD, Ubuntu 24.04 LTS) across three providers using Terraform modules and standardized Prometheus/Grafana dashboards. Key criteria: price/performance ratio, network stability (via Cloudflare Radar), and API maturity for automation.

ProviderPlanMonthly CostAvg. NA p95 Latency (ms)Uptime (30-day avg.)Terraform Support
Hetzner (AX41)4 vCPU / 16GB / 480GB NVMe$22.9958ms99.992%Native provider + community modules
DigitalOcean (Basic Droplet)2 vCPU / 4GB / 80GB SSD$24.0063ms99.987%First-party provider ([DO Docs](https://docs.digitalocean.com/reference/api/terraform-provider/))
Vultr (Cloud Compute)2 vCPU / 4GB / 100GB NVMe$25.0067ms99.979%Mature third-party provider

Hetzner's AX41 delivered best price/performance -- confirmed by independent benchmarks showing 18% faster disk I/O vs. DO's Basic tier in sequential write tests [Phoronix, Mar 2026](https://www.phoronix.com/review/hetzner-ax41-do-basic-2026).

Phased Implementation (6 Weeks Total)

- Week 1-2: Terraform modules built and tested in staging; Grafana+Prometheus stack containerized and validated against synthetic load

- Week 3: DNS cutover to Cloudflare (with proxy enabled); new VPS fleet (3 Hetzner AX41 nodes: EU, US-East, US-West) spun up and health-checked

- Week 4-5: Gradual traffic shift (10% → 50% → 100%) using Cloudflare Load Balancing with weighted routing and automatic failover

- Week 6: Decommissioning of legacy shared host; final audit of TLS certs, log retention, and alert thresholds

Quantified Outcomes (Post-Migration, 60-Day Avg.)

- ✅ 62% lower monthly infrastructure cost: From $20 (shared) + $35 (add-ons) = $55 → $20.97 (3 Hetzner AX41 nodes at $6.99 each, plus $0.00 for Cloudflare Pro tier used for WAF + DDoS protection)

- ✅ 57% improvement in p95 latency: North America dropped from 142ms → 60ms (verified via Cloudflare Radar's regional latency heatmap)

- ✅ API response time cut by 41%: Median '/api/v1/checks' latency fell from 98ms → 58ms (Prometheus 'http_request_duration_seconds' histogram)

- ✅ Zero CPU throttling incidents: All nodes sustained <65% CPU under peak load (4.8M checks/hr), with 99.2% of requests served within 100ms

Lessons Learned

- Don't overprovision vertically: We initially tried 8GB RAM nodes -- but memory pressure stayed below 2.1GB. Right-sizing saved $11/mo/node.

- Cloudflare isn't just a CDN: Using their Load Balancer + Health Checks + Origin Rules eliminated the need for a separate HAProxy layer -- simplifying the stack by 3 services.

- Unmanaged ≠ unmonitored: Lightweight telemetry (Prometheus Node Exporter + custom Go metrics) gave us deeper insight than any managed control panel ever could.

FAQ

Q: Why not use a managed Kubernetes service?

A: At ~500 req/sec sustained, it was overkill. K8s added 42% overhead in our PoC vs. bare-metal VPS -- and doubled deployment complexity without ROI.

Q: Did you consider multi-cloud?

A: Yes -- but cross-cloud networking (e.g., DO ↔ Vultr private peering) introduced inconsistent latency and added $12/mo in egress fees. Single-provider consistency won.

Q: How did you handle database scaling?

A: We migrated PostgreSQL from shared-host SQLite emulation to a dedicated 2 vCPU / 8GB Hetzner DB instance ($13.99/mo), enabling connection pooling and WAL archiving -- query P99 dropped from 410ms to 89ms.

S

ServerPicks Contributor

Cloud Infrastructure Engineer, ServerPicks

Serverpicks independently researches and verifies all product data. Ratings sourced from G2, Capterra, and other trusted review platforms.