Verdict: Go
Rust vs Go for web services and microservices:
pick Go (mostly).
Go's goroutines, stdlib, and rapid onboarding make it the right default for most teams building HTTP services. The answer changes at Cloudflare scale.
Why Go wins for web services
✓2-4 weeks to productive vs 6-12 months for Rust. For a 10-engineer team, that difference is 90 engineer-weeks of velocity.
✓Go's net/http stdlib (now with method routing and path params since 1.22) covers 90% of web service patterns without dependencies.
✓Goroutines start at ~2KB and scale to handle 50,000+ concurrent connections without drama. Goroutine pool overhead is invisible at web API scale.
✓3-4x more engineers know Go. Hiring, onboarding, and code review are all faster.
✓Kubernetes, Prometheus, and most of the CNCF tooling you'll integrate with are written in Go. Same language = better interop and debugging.
Production Go web services
Twitch
10B msg/day
Chat infrastructure, goroutine-based, 2M+ concurrent streams
Uber
Millions req/sec
Geofence, dispatch, payment microservices
CockroachDB
90% Go
Distributed SQL database serving Fortune 500
Cloudflare (partial)
Edge services
Parts of the edge alongside Rust (Pingora replaced NGINX)
When to break the rule and use Rust
●You're serving 1T+ req/day and need every CPU cycle (Cloudflare's situation with Pingora)
●Sub-millisecond p99 latency SLAs where Go's GC pauses are measurable and unacceptable
●You've already profiled and shown that Go's GC is causing specific, quantified latency problems
●Your service integrates deeply with a Rust ecosystem (Tokio, async I/O stack) and the rewrite cost is justified