Fastify-Backend
FastifyBackend ist das Default-HTTP-Backend für actor-ts.
Umschließt Fastify — schnell, gut gewartet, mit einem riesigen
Ökosystem an Plugins (JWT-Auth, Validierung, Swagger usw.).
import { ActorSystem, HttpExtensionId } from 'actor-ts';
const http = system.extension(HttpExtensionId);
await http.newServerAt('0.0.0.0', 8080).bind(routes);// ↑ standardmäßig FastifyUm das Backend explizit zu machen:
import { FastifyBackend } from 'actor-ts/http';
await http.newServerAt('0.0.0.0', 8080) .useBackend(new FastifyBackend()) .bind(routes);Konfiguration
Abschnitt betitelt „Konfiguration“new FastifyBackend({ logger: false, // Fastifys eingebauter Logger — aus lassen; nimm actor-ts-Log bodyLimit: 1_048_576, // 1 MiB Request-Body-Cap tls: { cert: fs.readFileSync('./tls/cert.pem'), key: fs.readFileSync('./tls/key.pem'), },});Die meisten Settings werden an Fastifys FastifyServerOptions
durchgereicht. Das Framework konfiguriert die Routen-
Registrierung; du drehst an Fastifys eigenen Reglern.
new FastifyBackend({ tls: { cert: fs.readFileSync('./tls/cert.pem'), key: fs.readFileSync('./tls/key.pem'), // Für mTLS: ca: fs.readFileSync('./tls/ca.pem'), requestCert: true, rejectUnauthorized: true, },});Standard-Fastify-TLS-Optionen. Für die meisten Produktions-Setups terminiert TLS am Load-Balancer — die App spricht intern einfaches HTTP — aber In-App-TLS wird unterstützt, wenn nötig.
Zugriff auf die rohe Fastify-Instanz
Abschnitt betitelt „Zugriff auf die rohe Fastify-Instanz“const backend = new FastifyBackend();await http.newServerAt('0.0.0.0', 8080) .useBackend(backend) .bind(routes);
// Nach dem Bind ist die rohe Fastify-Instanz verfügbar:backend.app.register(fastifyJwt, { secret: '...' });backend.app.addHook('onRequest', authHook);Nutze das für Plugins, die nicht über die DSL des Frameworks exponiert sind:
- JWT-/OAuth-Authentifizierung.
- Request-Validierung (
@fastify/swagger). - CORS (
@fastify/cors). - Komprimierung.
Die actor-ts-DSL behandelt Routing; Fastify-Plugins behandeln Querschnittsthemen. Sie komponieren sauber.
Lifecycle
Abschnitt betitelt „Lifecycle“1. FastifyBackend.start(host, port) — erzeugt Fastify-Instanz2. Das Framework registriert jede kompilierte Route bei Fastify3. Fastify.listen() — öffnet den Port4. Beim Shutdown: Fastify.close() — drained In-Flight-Requests, dann ExitFastify.close() wartet auf den Abschluss laufender Requests,
bevor es resolved — passt zur service-stop-Phase des
Coordinated Shutdown.
Peer-Dependency
Abschnitt betitelt „Peer-Dependency“npm install fastify# oder: bun add fastifyDas Framework bundelt Fastify nicht; separat installieren.
Performance
Abschnitt betitelt „Performance“Grobe Zahlen für triviale Routen:
- 150K–200K req/sec auf Bun (mit
bun:test-Benchmark). - 80K–120K req/sec auf Node 22.
- P50-Latenz unter einer Millisekunde für triviale Handler; höher für Routen, die Actors fragen.
Fastify ist eines der schnellsten Node-HTTP-Frameworks; der Actor-Routing-Overhead des Frameworks ist der nächste Bottleneck für heiße Routen.
Wohin als Nächstes
Abschnitt betitelt „Wohin als Nächstes“- HTTP-Übersicht — das große Bild.
- Route-DSL — was bei Fastify registriert wird.
- Express-Backend — die Alternative.
- Bun.serve-Backend — Bun-native Option.