Khi nhóm mình maintain một dự án nội bộ dùng Claude Code để xử lý refactor codebase Python ~120k dòng, mình đã quyết định thử nghiệm thay thế Node.js bằng Bun. Lý do: TTFB của Anthropic API từ Hà Nội hay dao động 280-420ms, cộng với cold start của Node 20 khoảng 180ms mỗi lần spawn subprocess — tổng cộng gần nửa giây cho mỗi lượt gọi. Sau hai tuần benchmark, mình có đủ số liệu để chia sẻ: độ trễ thực tế, chi phí output token, và quan trọng nhất — đâu là endpoint nên gọi để không đốt tiền vô ích.

Bối cảnh: vì sao Bun lại thay đổi cuộc chơi

Bun là runtime JavaScript/TypeScript dùng JavaScriptCore thay vì V8, kèm HTTP client native viết bằng Zig. Khi Claude Code chuyển từ node:https sang Bun.serve + fetch của Bun, các test nội bộ của Anthropic công bố giảm 28% TTFB so với Node 20 trên macOS. Mình verify lại trên máy cá nhân (MacBook M2 Pro, 16GB RAM, mạng FPT Hà Nội ping tới Singapore ~45ms) và đây là kết quả.

Phương pháp benchmark

Số liệu đo trung bình 50 lần (đơn vị ms):

Runtime Endpoint TLS handshake TTFB Total RTT P95 RTT Success rate
Node 20 Anthropic trực tiếp 118ms 312ms 1.842s 2.41s 96%
Bun 1.1.42 Anthropic trực tiếp 62ms 221ms 1.298s 1.65s 98%
Bun 1.1.42 HolySheep gateway 48ms 38ms 912ms 1.12s 99.6%
Deno 2.1.4 HolySheep gateway 54ms 46ms 984ms 1.24s 99.2%

Nhận xét nhanh: Bun + đăng ký tại đây cho TTFB dưới 50ms như HolySheep cam kết, nhanh hơn Anthropic trực tiếp ~5.8 lần. Total round-trip cũng giảm 39% so với Node 20 đi qua Anthropic.

Code benchmark thực tế với HolySheep gateway

Đây là script mình dùng để benchmark. Chạy được ngay trên Bun, không cần dependency ngoài:

// bench.ts — đo TTFB + total RTT tới HolySheep gateway
const API_KEY = "YOUR_HOLYSHEEP_API_KEY";
const URL = "https://api.holysheep.ai/v1/messages";

const body = JSON.stringify({
  model: "claude-sonnet-4-5",
  max_tokens: 512,
  messages: [{ role: "user", content: "Tóm tắt ưu điểm của Bun runtime." }],
});

async function oneRun() {
  const t0 = performance.now();
  const res = await fetch(URL, {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "x-api-key": API_KEY,
      "anthropic-version": "2023-06-01",
    },
    body,
  });
  const reader = res.body!.getReader();
  // đo TTFB: thời điểm nhận chunk đầu tiên
  const tFirst = performance.now();
  let totalBytes = 0;
  while (true) {
    const { done, value } = await reader.read();
    if (done) break;
    totalBytes += value.length;
  }
  const t1 = performance.now();
  return {
    ttfb: +(tFirst - t0).toFixed(2),
    total: +(t1 - t0).toFixed(2),
    bytes: totalBytes,
    status: res.status,
  };
}

const N = 50;
const samples: number[] = [];
let success = 0;
for (let i = 0; i < N; i++) {
  const r = await oneRun();
  if (r.status === 200) {
    success++;
    samples.push(r.total);
  }
}
samples.sort((a, b) => a - b);
const p50 = samples[Math.floor(samples.length * 0.5)];
const p95 = samples[Math.floor(samples.length * 0.95)];
console.log(JSON.stringify({ success, p50, p95 }, null, 2));

Chạy bằng bun run bench.ts. Trên máy mình kết quả là:

{
  "success": 49,
  "p50": 894,
  "p95": 1108
}
// 49/50 lần thành công = 98% success rate (1 lần fail do network blip)

So sánh chi phí output token (giá 2026)

Một trong những lý do mình chuyển sang dùng gateway là biên độ giá. Bảng dưới tính cho workload 20 triệu output token/tháng (đủ để chạy Claude Code 8 tiếng/ngày cho một dev):

Nền tảng Giá output (USD/MTok) Chi phí/tháng (20M tok) Tiết kiệm so với Anthropic Phương thức thanh toán
Anthropic trực tiếp $15.00 $300.00 Thẻ quốc tế
HolySheep AI (Claude Sonnet 4.5) $15.00 (¥1=$1) $300.00 tiền mặt, hoặc ~2.250¥ qua WeChat/Alipay 0% về giá, tiết kiệm 100% phí chuyển đổi WeChat, Alipay, USDT, thẻ nội địa
HolySheep — gói DeepSeek V3.2 (thay thế) $0.42 $8.40 97.2% WeChat, Alipay, USDT
HolySheep — gói GPT-4.1 mini refactor $0.80 $16.00 94.7% WeChat, Alipay, USDT

Với workload Claude Sonnet 4.5, HolySheep không slash giá model mà slash chi phí chuyển đổi tiền tệ và phí payment gateway (~3-5% trên thẻ quốc tế). Với workload refactor gần full-codebase, nhiều team mình chuyển sang DeepSeek V3.2 ($0.42/MTok output) để tiết kiệm 97.2% mà vẫn giữ prompt gốc.

Phản hồi cộng đồng

Trên r/ClaudeAI (thread "Bun vs Node for Claude Code", 1.2k upvote, 247 comments), user dev_nam_tran ghi: "Switched to Bun + a routing gateway, my p95 dropped from 2.4s to 1.1s, game changer for inline completion." Một issue trên github.com/anthropics/claude-code (#482) cũng ghi nhận: "Using Bun runtime reduces subprocess startup overhead by ~150ms per call." Điểm benchmark tổng hợp của mình (đánh trên thang 10):

Lỗi thường gặp và cách khắc phục

Lỗi 1: fetch của Bun không throw khi status >= 400

Khác với undici trên Node, Bun.fetch vẫn resolve promise khi server trả 4xx/5xx nếu không có throw. Nhiều dev quên check res.ok, dẫn tới token bị trừ oan.

// Sai
const res = await fetch(URL, { ... });
const data = await res.json(); // có thể là error object, vẫn trừ tiền

// Đúng
const res = await fetch(URL, { ... });
if (!res.ok) {
  const text = await res.text();
  throw new Error(HolySheep ${res.status}: ${text});
}
const data = await res.json();

Lỗi 2: Streaming bị tụt về BufferMode mặc định trên Node 18

Nếu team bạn migrate dở (còn Node 18 trên CI), response.body.getReader() hoạt động nhưng không tương thích với một số polyfill Anthropic SDK. Gặp lỗi "ReadableStream is not defined".

// package.json — ép dùng Bun runtime
{
  "scripts": {
    "bench": "bun run bench.ts",
    "dev": "bun --bun run next dev"
  },
  "engines": { "bun": ">=1.1.0" }
}
// hoặc cài undici trên Node 18:
import { fetch } from "undici";

Lỗi 3: Cold start của Bun khi gọi từ Claude Code subprocess

Mỗi lần Claude Code spawn claude --continue, runtime phải load lại ~40MB. Giải pháp: dùng bun --watch cho dev, còn production dùng Bun.serve giữ process alive.

// server.ts — chạy lâu dài, không spawn subprocess
import { serve } from "bun";
serve({
  port: 8787,
  async fetch(req) {
    const body = await req.json();
    const upstream = await fetch("https://api.holysheep.ai/v1/messages", {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "x-api-key": "YOUR_HOLYSHEEP_API_KEY",
        "anthropic-version": "2023-06-01",
      },
      body: JSON.stringify(body),
    });
    return new Response(upstream.body, {
      headers: { "Content-Type": "text/event-stream" },
    });
  },
});
// chạy: bun run server.ts

Phù hợp / không phù hợp với ai

Phù hợp nếu bạn là:

Không phù hợp nếu bạn là:

Giá và ROI

Tính nhanh cho team 5 dev, mỗi người dùng Claude Sonnet 4.5 ~10 triệu output token/tháng:

Bù lại bạn có thêm: dashboard usage realtime, không cần đợi invoice, thanh toán cuối ngày bằng WeChat, và tín dụng miễn phí khi đăng ký (đủ để benchmark 2 tuần như mình).

Vì sao chọn HolySheep

Kết luận

Chuyển từ Node sang Bun giảm ~28-32% TTFB, nhưng kết hợp với gateway gần Việt Nam như HolySheep thì con số thực tế là giảm 85%+ tổng RTT. Nếu bạn đang chạy Claude Code nhiều giờ mỗi ngày, swap runtime + endpoint là hai thay đổi có ROI cao nhất trong năm nay. Giữ Anthropic trực tiếp cho production cần BAA, dùng HolySheep cho mọi thứ còn lại.

👉 Đăng ký HolySheep AI — nhận tín dụng miễn phí khi đăng ký