Three Transports, One Binary
How FraiseQL serves GraphQL, REST, and gRPC simultaneously from a single compiled schema. One binary, one port, zero duplication — and what that means for auth, rate limiting, and observability.
Technical writing from the FraiseQL team. Architecture decisions, performance analysis, honest tradeoffs.
Three Transports, One Binary
How FraiseQL serves GraphQL, REST, and gRPC simultaneously from a single compiled schema. One binary, one port, zero duplication — and what that means for auth, rate limiting, and observability.
Why Our gRPC Skips JSON Entirely
FraiseQL’s gRPC transport uses row-shaped database views that bypass PostgreSQL’s json_agg serialization. Less DB work, smaller wire payload — and why we’re not claiming to beat hand-written tonic.
REST Transport: Annotation-Driven, Not Auto-Wired
Why FraiseQL requires explicit rest_path and rest_method annotations rather than auto-exposing schema operations as REST endpoints. A design decision with real tradeoffs.
11 Languages, One Server
“FraiseQL supports 11 languages” sounds like server generation in 11 languages. It doesn’t work that way. The server is always a compiled Rust binary. Here’s what the SDKs actually do.
How FraiseQL Compiles Your Schema to SQL
A walk through the compile pipeline: SDK decorators → JSON schema → compiled artifact → SQL views → runtime execution. Five stages, one direction, no feedback loops.
Benchmarking REST Direct Execution vs GraphQL Bridge
Real numbers comparing FraiseQL’s REST direct execution path against the GraphQL bridge. ~15% throughput gain, honest methodology, honest caveats.