Servant at Bitnomial - Expanding type-safety from applications to systems
summary
Bitnomial runs Servant across ~40 services (160k LOC, 3k modules) and claims production readiness, serving millions of requests per day. APIs split into lightweight spec+client packages and heavy server packages, with 500 endpoints organized via named routes to tame type errors. Error handling uses multiverbs and response profiles to preserve typed success/failure across calls; client monads inject caching/retries. High-performance paths use persistent TCP streaming, and custom Servant combinators add OpenTelemetry tracing and scope-based access checks.
AI-written summary · about
chapters (12)
- 0:00Bitnomial and Servant intro
- 6:10What is Servant
- 14:17Servant at Bitnomial
- 20:22Named routes for errors
- 22:30Client logic for APIs
- 24:36Response profiles with Multiverb
- 30:16Error propagation with Multiverb
- 32:05Auth vs unauth routes
- 34:53Distributed tracing with OpenTelemetry
- 41:16Resource access control
- 44:13Servant’s full potential
- 45:16Q&A
related talks
24mServant: Web APIs at the Type Level
46mPainless software development with Haskell
49mHaskell On Rails
01h 26mReflections on Haskell@Meta
21mProduction Haskell Demystified
01h 11mHaskell in Production: Adventures in Blockchain Building
52mProject Presentations - Haskell
22mHaskell Tools, Compilers, Libraries and Community Projects
