핵심 요약
Bun 2.0은 단순한 빠른 런타임을 넘어 풀스택 런타임 플랫폼을 지향한다. HTTP·SQLite·Redis·MCP·테스트·번들·패키지 매니저가 모두 단일 바이너리에 내장. node_modules 하나 없이도 동작하는 앱 작성이 현실 가능.
- 버전: 2.0 (2026-02 출시)
- 엔진: JavaScriptCore (V8 아님) + Zig 코어
- 크기: 단일 바이너리 ~75MB
- 속도: HTTP 185K req/s (M3 Max 기준)
1) Built-in HTTP 서버
// server.ts
Bun.serve({
port: 3000,
routes: {
"/api/users/:id": async (req) => {
return Response.json({ id: req.params.id })
},
"/health": () => new Response("OK")
}
})Express·Fastify 없이 라우팅·미들웨어 모두 지원. 성능은 Express 대비 약 5~10배.
2) Built-in SQLite
import { Database } from "bun:sqlite"
const db = new Database("app.sqlite")
db.run("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)")
const insert = db.prepare("INSERT INTO users (name) VALUES (?)")
insert.run("Alice")
const users = db.query("SELECT * FROM users").all()better-sqlite3 같은 외부 패키지 불필요. WAL 모드 기본, prepared statement 캐시 자동.
3) Built-in Redis 클라이언트
import { redis } from "bun"
await redis.set("key", "value")
const value = await redis.get("key")
// pub/sub
const sub = redis.subscribe("channel")
for await (const msg of sub) {
console.log(msg)
}ioredis·redis 패키지 불필요. RESP3 프로토콜 네이티브.
4) Built-in MCP 클라이언트 (2.0 신규)
import { MCPClient } from "bun:mcp"
const client = await MCPClient.connect({
command: "npx",
args: ["@modelcontextprotocol/server-filesystem", "/data"]
})
const tools = await client.listTools()
const result = await client.callTool("read_file", { path: "config.json" })Anthropic MCP 표준 직접 지원. AI 에이전트 도구 통합 시 별도 패키지 불필요.
5) 풀스택 예시 — 30줄 앱
import { Database } from "bun:sqlite"
const db = new Database("app.sqlite")
db.run("CREATE TABLE IF NOT EXISTS posts (id INTEGER PRIMARY KEY, title TEXT)")
Bun.serve({
port: 3000,
routes: {
"/": () => new Response(Bun.file("./public/index.html")),
"/api/posts": {
GET: () => Response.json(db.query("SELECT * FROM posts").all()),
POST: async (req) => {
const { title } = await req.json()
db.prepare("INSERT INTO posts (title) VALUES (?)").run(title)
return Response.json({ ok: true })
}
}
}
})이 30줄로 정적 파일 서빙 + REST API + DB가 동작. 외부 패키지 0개.
실전 운영 체크리스트
- 프로덕션 SQLite는 Litestream으로 S3 백업 권장
- HTTP 서버는 PM2 또는 systemd로 관리
- Bun 2.0+ 필수 (이전 버전은 prisma·일부 ORM 호환 이슈)
- 크로스 플랫폼 빌드 —
bun build --compile로 단일 실행 파일 생성 가능
한계
- 일부 Node 네이티브 모듈 (예: canvas, sharp) 호환 미흡
- 디버깅 도구 (chrome devtools 통합) 아직 Node 수준 아님
- 윈도우 지원 베타 (1.x보다 안정성 향상되었으나 일부 기능 제한)
자주 묻는 질문
Node에서 Bun으로 마이그레이션 부담은?
Express·Fastify 대신 Bun.serve로 바꾸는 정도. SQLite·Redis 라이브러리도 built-in으로 교체 가능. WinterCG 표준 준수로 fetch·streams는 동일.
프로덕션에 안전한가?
HTTP 서버·SQLite는 검증됨. ORM (Prisma)은 6.20+ 권장. 큰 분산 시스템이라면 좀 더 관망 권장.
npm 생태계 호환?
약 95%. 일부 네이티브 모듈은 빌드 차이로 실패. bun pm trust <package>로 postinstall 활성화 필요한 경우 있음.

댓글 0