Verb: Bun 생태계를 위한 빠른 HTTP 프레임워크
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- Bun을 사용하거나 도입 계획이 있는 개발자
- API/마이크로서비스 개발자
- 스트리밍 기능이 필요한 실시간 애플리케이션 개발자
- 최소한의 의존성과 성능을 중시하는 개발자
- 난이도: 중급~고급 (Bun 기반 경험 필요)
핵심 요약
- Verb는 Bun의 내장 HTTP 서버를 기반으로
zero-external dependencies
로 고성능을 제공 - 루트 캐싱(LRU)과 HTTP/2 지원으로 대규모 트래픽 처리에 최적화
- 스트리밍(예: SSE, JSONL) 및 미들웨어 API를 통해 실시간 데이터 처리와 유연한 확장성 제공
- 테스트용 가상 서버(mock server)와 CRUD API 예제를 통해 빠른 개발 가능
섹션별 세부 요약
1. 최소한의 설정과 빠른 시작
createServer
,json
,text
등의 내장 모듈을 사용해 단 한 줄의 코드로 서버 구동 가능- 구성 파일 및 보일러플레이트 없이 즉시 요청 처리
- 예시 코드:
```ts
import { createServer, text } from "verb";
const app = createServer({ port: 3000 });
app.get("/", () => text("Hello, Verb!"));
```
2. 루트 캐싱과 성능 최적화
- LRU 캐시를 사용해 루트 패턴을 한 번 컴파일 후 재사용
- 예:
/users/:id
,/posts/:userId/comments/:commentId
등 와일드카드 경로도 지원 - 정규표현식 컴파일 오버헤드 제거로 고속 요청 처리
3. 스트리밍 기능과 실시간 처리
- Server-Sent Events(SSE) 및 JSONL 스트리밍 지원
- 예:
```ts
app.get("/events", () => streamSSE(eventGenerator()));
app.get("/api/export", () => streamJSON(dataGenerator()));
```
4. 미들웨어 API와 확장성
- 요청 타이밍 로깅, 압축, 인증 체크 등 간단한 미들웨어 구성 가능
- 예:
```ts
app.use(async (req, next) => {
const start = Date.now();
const response = await next();
console.log(${req.method}${req.url} took ${Date.now() - start}ms
);
return response;
});
```
5. HTTP/2 및 TLS 지원
- 내장 HTTP/2 서버로 서버 푸시(server push) 기능 제공
- 예:
```ts
const app = createServer({ http2: true, tls: { cert: "./cert.pem", key: "./key.pem" } });
app.get("/", () => responseWithPush(htmlContent, { path: "/styles/critical.css" }));
```
6. 테스트용 가상 서버(mock server)
- 네트워크 오버헤드 없이 테스트 가능
- 예:
```ts
import { createMockServer } from "verb";
const app = createMockServer();
app.get("/users/:id", (req, params) => json({ id: params.id }));
```
7. CRUD API 예제
- 인메모리 데이터 저장소와 GET/POST/PUT/DELETE 연산을 통한 간단한 API 구현
- 미들웨어로 압축(compression) 적용 가능
8. 정적 파일 처리
- 캐싱(Etag), 압축, immutable 지시문 지원
- 예:
```ts
app.get("/static/*", serveStatic({ root: "./public", maxAge: 86400, etag: true }));
```
9. 프레임워크의 주요 강점
- Bun의 내장 기능 사용으로 추가 파싱/라우팅 레이어 없음
- HTTP/2, TLS, 미니멀 메모리 할당 지원
- 고성능 API, 실시간 애플리케이션, 대규모 데이터 스트리밍에 적합
결론
- Bun 기반 프로젝트에서 Verb를 사용할 경우
bun add github:wess/verb
명령어로 설치 후server.ts
파일 생성 후 실행 - 성능과 간결함을 중시하는 프로젝트에 적합하며, 풀스택 기능이 필요한 경우 다른 프레임워크 사용 권장
- GitHub 저장소에서 예제 및 문서 참고하여 커뮤니티 참여 및 확장 가능