Node gegen Bun gegen Deno: Vergleiche mit mehreren Routen schlagen Charts mit einem einzigen RPS
Ein Wettbewerb mit mehreren Routen zwischen Node.js, Bun und Deno: Die reine Durchsatzleistung ist tatsächlich entscheidend, doch die Vertrautheit mit den Tools, Berechtigungen, Speicherverbrauch sowie auf die Datenbank angewiesene Routen bestimmen die Architektur.
Quellen: I Rebuilt the Same API on Node.js, Bun, and Deno. The Surprising Difference Wasn’t Throughput
Der wichtige Benchmark hat mehr als einen Testweg
Reine HTTP-RPS-Diagramme ließen einen Wettbewerb bereits als beendet erscheinen: Bun lag weit vorn, Danach Deno, Node dahinter. Architekturentscheidungen erfordern mehr als nur einen einzigen synthetischen Testweg.
export async function handle(request: Request): Promise<Response> {
const url = new URL(request.url);
if (url.pathname === "/health") {
return Response.json({ status: "ok" });
}
if (url.pathname.startsWith("/v1/accounts/")) {
const account = await accounts.find(url.pathname.split("/").pop()!);
if (!account) {
return Response.json({ error: "not_found" }, { status: 404 });
}
return Response.json(account);
}
return Response.json({ error: "not_found" }, { status: 404 });
}
// Bun
Bun.serve({ fetch: handle, port: 3000 });
// Deno
Deno.serve({ port: 3000 }, handle);
deno serve \
--allow-net=0.0.0.0:3000,postgres.internal,redis.internal \
--allow-env=DATABASE_URL,REDIS_URL,OTEL_EXPORTER_OTLP_ENDPOINT \
--allow-read=./config \
main.ts
Die Rohleistung war zwar real, entschied aber nicht mehr über die Architektur
Die Leistung ist an den Ausläufern der Kostenkurven entscheidend. Die meisten Geschäftsanwendungs-APIs werden bereits lange vor den Laufzeit-RPS-Grenzen durch Datenbanken, Authentifizierung und nachgelagerte E/A-Aufgaben eingeschränkt.
Node war die weniger interessante Laufzeitumgebung – was eigentlich ein Kompliment war
Die Anziehungskraft von Nodes Ökosystem, die Vertrautheit bei der Betriebsführung sowie die vorhersehbare Bereitstellungsprozess machen es weiterhin zu den bevorzugten Plattformen. Langweilig zu sein ist ein Vorteil, wenn die Einsatzzeiten begrenzt sind.
Bun war am schnellsten, wenn es einfach Bun sein durfte
Bun zeichnet sich durch eigene APIs und Werkzeuge aus. Der Versuch, Node-Kompatibilität zu erzwingen, untergräbt diesen Vorteil; bewerten Sie die bun-eigenen Annahmen ehrlich.
Deno hat Berechtigungen und Telemetrie zum Bestandteil des Anwendungsdesigns gemacht
Denos Berechtigungsmodell sowie Standardbibliothek bringen Sicherheit und Überwachbarkeit direkt in den Laufzeitkontext – nicht nur als nachträgliche Ergänzung im Middleware-Bereich.
Dort verschwammen die Unterschiede bei der Speicherverwaltung
Die Zuweisung von Speicher, die Garbage Collection sowie der verfügbare RAM unter realistischen Lasten waren wichtiger als die maximale Anzahl der Anfragen pro Sekunde. Wer bei der Speicherverwaltung zurückbleibt, verliert auch in Containern an Kosten.
Die Betriebsvereinfachung hängt davon ab, was man bereits besitzt
Falls das Unternehmen bereits Node auf Kubernetes mit ausgereiften Dashboards betreibt, kostet ein Wechsel der Laufzeiten alle Beteiligten viel Zeit. Bei neuem Aufbau oder starken Anforderungen an die Edge-Infrastruktur verdienen Bun/Deno Vergleiche mit multi-route-Benchmark-Tests: JSON-APIs, multipart-Daten, WebSocket sowie Datenbank-basierte Handler.
Fazit
Erstellen Sie dieselbe API für verschiedene Laufzeiten, um Kompromisse zu erkennen – und nicht, um aufgrund eines einzigen HTTP-Fluttests einen dauerhaften Sieger zu bestimmen. Wählen Sie die Laufzeit, die zu Ihren Betriebsabläufen, Berechtigungen sowie dem tatsächlichen Engpass passt.
Veröffentlichen Sie das Benchmark-Tool zusammen mit den Schlussfolgerungen des Artikels. Unwiederholbare RPS-Aufnahmen sollten keine Entscheidungen für die Plattformstrategie beeinflussen.
Einbeziehen Sie bei der Bewertung von Funktionen/Edge nicht nur den RPS im Gleichgewichtszustand, sondern auch die Ladezeiten beim ersten Start sowie die Benutzerfreundlichkeit über die CLI.
Beobachten Sie mögliche Kompatibilitätsprobleme: native Erweiterungen, Node-Importe sowie Testbibliotheken, die von Node-Globals ausgehen.
Dokumentieren Sie für jede Laufzeit das tatsächlich eingesetzte Produktionsprozessmodell (Cluster, Supervisor, Isolationen).
Berechnen Sie den Aufwand in Ingenieurtagen; ein 4-fach höherer RPS-Vorteil, der eine Neuimplementierung von Authentifizierungsmechanismen und CI-Prozessen erfordert, ist kein kostenloser Leistungsvorteil.
Führen Sie bei tatsächlichem Multi-Hosting jede Nacht einen Kompatibilitäts-Canary ein, der die zwanzig wichtigsten Routen auf jedem Betriebssystem ausführt.
Veröffentlichen Sie das Benchmark-Tool zusammen mit den Schlussfolgerungen des Artikels. Unwiederholbare RPS-Screenshots sollten die Plattformstrategie nicht bestimmen.
Einbeziehen Sie in die Bewertungskarte für Funktionen/Edge nicht nur den RPS im Gleichgewichtszustand, sondern auch die Ladezeiten beim ersten Start sowie die Leistung über die CLI.
Überwachen Sie Kompatibilitätsprobleme wie native Erweiterungen, Node-Importe sowie Testbibliotheken, die von Node-Globals ausgehen.
Dokumentieren Sie für jeden Betriebssystemtyp das tatsächlich eingesetzte Produktionsprozessmodell (Cluster, Supervisor, Isolationen).
Berechnen Sie die Kosten in Entwicklerstunden; ein 4-fach höherer RPS-Vorteil, der eine Neuimplementierung von Authentifizierungsmechanismen und CI-Prozessen erfordert, ist kein kostenloser Leistungsvorteil.
Führen Sie bei tatsächlichem Multi-Hosting jede Nacht einen Kompatibilitäts-Canary ein, der die zwanzig wichtigsten Routen auf jedem Betriebssystem ausführt.
Veröffentlichen Sie das Benchmark-Tool zusammen mit den Schlussfolgerungen des Artikels. Unwiederholbare RPS-Screenshots sollten die Plattformstrategie nicht bestimmen.
Fügen Sie in die Leistungsübersicht für Funktionen/Edge nicht nur den RPS im Gleichgewichtszustand, sondern auch die Werte für den Cold-Start sowie CLI-DX hinzu.
Überwachen Sie Kompatibilitätsprobleme: native Erweiterungen, node: imports sowie Testbibliotheken, die von Node-Globals ausgehen.
Dokumentieren Sie für jede Laufzeit das tatsächlich eingesetzte Produktionsprozessmodell (Cluster, Supervisor, Isolationen).
Berechnen Sie den Aufwand in Ingenieurtagen; ein 4-fach höherer RPS-Vorteil, der eine Neuimplementierung von Authentifizierungsmechanismen und CI-Prozessen erfordert, ist kein kostenloser Leistungszuwachs.
Führen Sie bei echtem Multi-Home-Ansatz jede Nacht einen Kompatibilitäts-Canary durch, der die zwanzig wichtigsten Routen auf jeder Laufzeit ausführt.
Veröffentlichen Sie das Benchmark-Tool zusammen mit den Schlussfolgerungen des Artikels. Unwiederholbare RPS-Screenshots sollten die Plattformstrategie nicht bestimmen.
Fügen Sie den Kalte-Start sowie die CLI-DX-Leistung in die Bewertungskarte für Funktionen/Edge hinzu – nicht nur den RPS im Gleichgewichtszustand.
Überwachen Sie Kompatibilitätsprobleme: native Erweiterungen, Node-Importe sowie Testbibliotheken, die von Node-Globals ausgehen.
Dokumentieren Sie für jede Laufzeit das tatsächlich eingesetzte Produktionsprozessmodell (Cluster, Supervisor, Isolationen).
Berechnen Sie die Kosten in Entwicklertagen; ein 4× höherer RPS-Vorteil, der eine Neuimplementierung von Authentifizierungsmechanismen und CI-Prozessen erfordert, ist kein kostenloser Leistungsvorteil.
Führen Sie bei echtem Multi-Home-Ansatz jede Nacht einen Kompatibilitäts-Canary aus, der die zwanzig wichtigsten Routen auf jeder Laufzeit ausführt.
Veröffentlichen Sie das Benchmark-Tool zusammen mit den Schlussfolgerungen des Artikels. Unwiederholbare RPS-Screenshots sollten keine Entscheidungen zur Plattformstrategie beeinflussen.
Fügen Sie den Kalten-Start sowie die CLI-DX-Leistung in die Bewertungskarte für Funktionen/Edge hinzu – nicht nur den RPS im Gleichgewichtszustand.
Überwachen Sie die Kompatibilitätsprobleme bei Fußfeuerwaffen: native Erweiterungen, Node-Importe sowie Testbibliotheken, die von Node-Globals ausgehen.
Für jede Laufzeit dokumentieren Sie das tatsächlich eingesetzte Produktionsprozessmodell (Cluster, Supervisor, Isolationen).
Berechnen Sie die Kosten in Entwicklertagen; ein 4× höherer RPS-Vorteil, der eine Neuimplementierung von Authentifizierungsmechanismen und CI-Prozessen erfordert, ist kein kostenloser Leistungszuwachs.
Führen Sie bei echtem Multi-Home-Ansatz jede Nacht einen Kompatibilitäts-Canary aus, der die zwanzig wichtigsten Routen auf jeder Laufzeit ausführt.
Veröffentlichen Sie das Benchmark-Tool zusammen mit den Schlussfolgerungen des Artikels. Unwiederholbare RPS-Screenshots sollten keine Entscheidungen zur Plattformstrategie beeinflussen.
Einbeziehen Sie in die Bewertungskriterien auch den Cold-Start sowie die CLI-Nutzbarkeit für Funktionen/Edge, nicht nur den RPS im stationären Zustand.
Überwachen Sie die Kompatibilitätsprobleme bei Fußfeuerwaffen: native Erweiterungen, Node-Importe sowie Testbibliotheken, die von Node-Globals ausgehen.
Für jede Laufzeit müssen Sie das Produktionsprozessmodell (Cluster, Supervisor, Isolationen), das tatsächlich eingesetzt wird, dokumentieren.
Berechnen Sie die Kosten in Entwicklertagen; ein 4× höherer RPS-Wert, der eine Neuimplementierung von Authentifizierungsmechanismen und CI-Prozessen erfordert, bedeutet keine kostenlose Leistungssteigerung.
Führen Sie bei echtem Multi-Home-Ansatz jede Nacht einen Kompatibilitäts-Canary durch, der die zwanzig wichtigsten Routen unter jeder Laufzeit ausführt.
Veröffentlichen Sie das Benchmark-Tool zusammen mit den Schlussfolgerungen des Artikels. Unwiederholbare RPS-Aufnahmen sollten keine Entscheidungen zur Plattformstrategie beeinflussen.
Einbeziehen Sie in die Bewertungskriterien auch den Cold-Start sowie die CLI-Erweiterbarkeit für Funktionen/Edge, nicht nur den RPS-Wert im Gleichgewichtszustand.
Überwachen Sie Kompatibilitätsprobleme wie native Erweiterungen, node: imports sowie Testbibliotheken, die von Node-Globalen ausgehen.
Für jede Laufzeit müssen Sie das Produktionsprozessmodell (Cluster, Supervisor, Isolationen), das tatsächlich eingesetzt wird, dokumentieren.
Berechnen Sie den Aufwand des Wettbewerbs in Ingenieurtagen – ein 4× höherer RPS-Wert, der eine Neuimplementierung von Authentifizierungsmechanismen und CI-Prozessen erfordert, bedeutet keine kostenlose Leistungssteigerung.
Führen Sie bei tatsächlichem Einsatz mehrerer Umgebungen jede Nacht einen Kompatibilitäts-Canary aus, der die zwanzig wichtigsten Routen in jeder Umgebung ausführt.
Publizieren Sie das Benchmark-Tool zusammen mit den Schlussfolgerungen des Artikels. Unwiederholbare RPS-Screenshots sollten keine Entscheidungen zur Plattformstrategie beeinflussen.
Einbeziehen Sie in die Bewertungskriterien auch den Startvorgang bei erstmalsiger Nutzung sowie die CLI-Interaktion, nicht nur den RPS-Wert im stationären Betrieb.
Überwachen Sie potenzielle Kompatibilitätsprobleme wie native Erweiterungen, Node-Importe sowie Testbibliotheken, die von Node-Globals abhängen.
Dokumentieren Sie für jede Umgebung das tatsächlich eingesetzte Produktionsprozessmodell (Cluster, Supervisor, Isolationen).
Berechnen Sie den Aufwand des Wettbewerbs in Ingenieurtagen – ein 4× höherer RPS-Wert, der eine Neuimplementierung von Authentifizierungsmechanismen und CI-Prozessen erfordert, bedeutet keine kostenlose Leistungssteigerung.
Führen Sie bei tatsächlichem Multi-Home-Betrieb jede Nacht einen Kompatibilitäts-Canary durch, der die zwanzig wichtigsten Routen ausführt.
Veröffentlichen Sie das Benchmark-Tool zusammen mit den Schlussfolgerungen des Artikels. Unwiederholbare RPS-Screenshots sollten die Plattformstrategie nicht bestimmen.
Einbeziehen Sie in die Bewertungskarte für Funktionen/Edge nicht nur den RPS im Gleichgewichtszustand, sondern auch die Ladezeiten beim ersten Start sowie die Leistung über die CLI.
Multiroute-Benchmarks sollten authentifizierte JSON-POST-Anfragen, Grenzwerte für Dateiuploads sowie einen ORM-Pfad beinhalten – Orte, an denen sich die Laufzeiten nach einfachen GET-Anfragen unterscheiden.
Die Fähigkeiten des Teams sind entscheidend: Ein Erfolg mit Bun, der die Hälfte des Personals mit unbekannten Testwerkzeugen zurücklässt, bedeutet eine verzögerte Ausfallzeit.
Achten Sie auf die TLS- und HTTP/2-Stacks; Mikrobenchmarks über reines HTTP überschätzen oft die Kosten für die Verarbeitung im Netzwerk.
Die Größe der Container-Bilder sowie die Ergebnisse von CVE-Scans unterscheiden sich je nach Basisbild des Laufzeitumfelds – die Betriebsabteilung wird dies neben dem RPS berücksichtigen.
Vertragsprüfungen gegenüber OpenAPI gewährleisten Transparenz, wenn Handler zwischen Ports wechseln.
Erhalten Sie Aufzeichnungen zur p99-Latenz unter Belastung – nicht nur zum mittleren RPS; Scheduler verbergen unterschiedliches Verhalten am Ende der Verteilung.
Falls Sie Deno-Permissions verwenden, wandeln Sie jede Genehmigung in ein Architecture Decision Record um, damit zukünftige Dienste den Sandbox nicht heimlich erweitern.
Buns npm-Kompatibilitätslayer benötigt eine explizite Liste mit erlaubten und verbotenen Paketen, die Sie in der Produktion nicht ausführen werden.
Node bleibt die Baseline für Kompatibilität: Messen Sie andere Systeme als Differenz zu Node auf Ihren tatsächlichen Routen.
Überprüfen Sie die Entscheidung vierteljährlich; Runtime-Scoreboards ändern sich, genauso wie Ihre Engpässe.
Mehrrouten-Benchmarks sollten authentifizierte JSON-POST-Anfragen, Grenzen für Dateiuploads sowie einen ORM-Pfad mit umfangreichen Abläufen beinhalten – das sind die Bereiche, in denen sich Runtime-Systeme nach einfachen GET-Anfragen unterscheiden.
Team-Fähigkeitsdiagramme sind wichtig: Ein Erfolg mit Bun, der die Hälfte des Personals mit unvertrauten Testwerkzeugen zurücklässt, stellt einen verschobenen Ausfall dar.
Achten Sie auf die TLS- und HTTP/2-Stacks; Micro-Benchmarks im reinen HTTP übersehen die Beendigungskosten im Mesh-Netzwerk.
Die Größe von Container-Bildern sowie die Ergebnisse von CVE-Scans unterscheiden sich je nach Basisbild zum Laufzeitbetrieb – die Betriebsabteilung wird dies neben dem RPS berücksichtigen.
Kontrakttests gegenüber OpenAPI sorgen dafür, dass Wettbewerbe fair bleiben, wenn Handler zwischen Ports wechseln.
Erhalten Sie die p99-Latenz unter Belastung fest, nicht nur den mittleren RPS – Scheduler verbergen unterschiedliches Verhalten am Ende der Verteilung.
Falls Sie Deno-Rechte einführen, übersetzen Sie jede Genehmigung in ein Architecture Decision Record, damit zukünftige Dienste den Sandbox nicht heimlich erweitern.
Buns npm-Kompatibilitätslayer benötigt eine explizite Allow/Deny-Liste der Pakete, die Sie in der Produktion nicht ausführen werden.
Node bleibt die Kompatibilitätsgrundlage: Messen Sie andere Werte als Deltas zu Node auf Ihren tatsächlichen Routen.
Überprüfen Sie die Entscheidung vierteljährlich; die Laufzeit-Statistiken ändern sich, genauso wie Ihre Engpässe.
Mehrrouten-Benchmarks sollten authentifizierte JSON POST-Anfragen, Grenzen für Dateiuploads sowie einen ORM-Pfad mit Kommunikation beinhalten – das sind die Bereiche, in denen sich die Laufzeiten nach einfachen GET-Anfragen unterscheiden.
Die Fähigkeitsprofile des Teams sind wichtig: Ein Erfolg mit Bun, der die Hälfte des Personals mit unvertrautem Testwerkzeug zurücklässt, bedeutet eine verzögerte Ausfallzeit.
Achten Sie auf die TLS- und HTTP/2-Stacks; Micro-Benchmarks über reines HTTP überschätzen die Beendigungskosten im Netzwerk.
Die Größe der Container-Bilder sowie die Ergebnisse von CVE-Scans unterscheiden sich je nach Basis-Laufzeitbild – das werden die Betriebsmitarbeiter neben dem RPS berücksichtigen.
Kontrakttests gegen OpenAPI sorgen dafür, dass Wettbewerbe fair bleiben, wenn Handler zwischen Ports wechseln.
Erhalten Sie Aufzeichnungen zur p99-Latenz unter Konkurrenzbedingungen, nicht nur zum Median-RPS; Scheduler verbergen unterschiedliches Verhalten am Ende der Verteilung.
Falls Sie Deno-Permissions verwenden, wandeln Sie jede Genehmigung in ein Architecture Decision Record um, damit zukünftige Dienste den Sandbox nicht heimlich erweitern.
Buns npm-Kompatibilitätslayer benötigt eine explizite Liste mit erlaubten und verbotenen Paketen, die Sie in der Produktion nicht ausführen werden.
Node bleibt die Baseline für Kompatibilität: Messen Sie andere als Deltas zu Node auf Ihren tatsächlichen Routen.