Backend Framework Benchmark

Go · Rust · Elysia · Hono · Spring · FastAPI — in-memory CRUD 의사결정 리포트

2026-05-10 macOS darwin/arm64 oha 30s · c=200 · GET /items N=1 · 단일 머신

TL;DR

  1. 균형 1위 = Hono(Bun) 7.97/10 — 39 LOC · 0.5s 빌드 · 0.6 MB 번들 · 25k RPS. 모든 카테고리 6/10 이상 유지하는 유일한 옵션.
  2. 성능 절대치 = Spring 67k / Rust 59k — Spring 은 RPS 1위지만 158 MB RSS, Rust 는 8.5 MB RSS 로 운영 효율 압도.
  3. 현재 코드베이스(Bun+TS) 기준 마이그레이션 비용 0 + LLM·DB 가 진짜 병목 → Hono 가 합리적 default.

1. 원시 측정값

프레임워크RPSp50 (ms)p95 (ms)p99 (ms) RSS (MB)빌드 (s)바이너리코드 (s)LOC
rust-axum58,6112.208.7625.918.5211.011.85 MB36.692
spring-boot66,7302.027.6117.21157.9515.1020.13 MB53.655
go-chi38,9492.0918.5029.5011.805.518.73 MB24.1101
hono-bun25,1395.1121.8057.4167.920.540.59 MB24.639
elysia-bun10,18414.7645.38101.7955.020.810.75 MB25.954
fastapi1,48789.27336.74609.9380.300.2422.32 MB*16.242

* FastAPI binary = .venv 전체(참고용). codeGenSec = LLM 에이전트가 코드+의존성 매니페스트 작성 완료까지의 wall-clock. 모든 측정 에러 0.

2. RPS 시각 비교

프레임워크RPS
spring-boot66,730
rust-axum58,611
go-chi38,949
hono-bun25,139
elysia-bun10,184
fastapi1,487

3. 정규화 점수 (0–10)

카테고리go-chirust-axumelysiahonospringfastapi
개발 속도 (codeGen+LOC)3.973.027.498.873.719.76
성능 (RPS)5.758.771.343.6310.000.00
실행속도 (latency)9.899.918.559.4810.000.00
안정성 (메모리)9.7810.006.896.020.005.20
빌드 속도6.452.759.629.800.0010.00
배포 속도 (binary)6.269.429.9310.001.010.00

4. 시나리오별 종합 점수

시나리오gorustelysiahonospringfastapi1위
균형 (각 1/6)7.027.317.307.974.124.16Hono
성능 우선 (성능·실행 60%)7.348.126.367.406.472.50Rust
개발속도 우선 (개발 50%)5.805.607.388.333.966.40Hono
운영비용 (메모리·빌드·배포 70%)7.447.607.727.962.574.54Hono

5. 시나리오별 최적 추천

균형 신규 백엔드 (스타트업·MVP)

Hono(Bun) — 39 LOC · 0.6 MB 번들 · 0.5s 빌드 · 25k RPS. Bun·Node·Deno·Edge·Lambda 모두 동일 코드.

고성능 + 작은 메모리 (엣지·임베디드)

Rust(Axum) — 58k RPS @ 8.5 MB RSS. tokio 멀티스레드. 콜드스타트 거의 즉시.

절대 RPS 1위 + JVM 생태계

Spring Boot 3.5 — 67k RPS, p99 17ms. 단 158 MB RSS, 15s 빌드, 20 MB jar.

단일 정적 바이너리 + 단순함

Go(chi) — 39k RPS, 11.8 MB RSS, 5.5s 빌드. K8s·gRPC·CLI 결합 표준.

데이터·ML / 빠른 프로토타입

FastAPI — 단일 워커 1.5k RPS, 멀티 워커로 4–8배 가능. Python 생태계 강점.

Bun 회피 + Node·Edge 호환

Hono — Node·Deno·CF Workers·Vercel·AWS Lambda·Fastly 동일 코드 동작.

6. Hono vs Elysia

항목HonoElysia
측정 RPS25,13910,184
p50 / RSS5.11 ms / 67.9 MB14.76 ms / 55.0 MB
런타임 범위Bun · Node · Deno · CF Workers · Vercel · AWS Lambda · FastlyBun 전용 (Node 호환 실험)
검증/타입zod-validator / valibot 옵셔널TypeBox t.Object() 1급, end-to-end 타입 추론
API 디자인미니멀 Express 풍 미들웨어.decorate / .derive / .guard / .macro DI
번들 / GitHub Star0.59 MB / 24k+0.75 MB / 12k+
Elysia 가 RPS 절반인 이유 — 매크로/플러그인 wrapper 체인 + 항상 first-class 검증이 GET /items 같은 hot-path 에서 오버헤드. 실서비스(DB·LLM 병목)에선 차이 거의 사라짐.

7. Hono · Rust · Go 비교

항목HonoRust (Axum)Go (chi)
RPS25k59k39k
p50 / p99 (ms)5.1 / 572.2 / 262.1 / 30
RSS68 MB8.5 MB12 MB
빌드0.5 s11 s5.5 s
바이너리0.6 MB1.85 MB8.7 MB
LOC (동일 CRUD)3992101
학습 곡선낮음 (TS)높음 (소유권 · 라이프타임)중간 (단순 문법)
런타임 자유도Bun·Node·Deno·Edge·Lambda단일 바이너리단일 바이너리
동시성 모델싱글스레드 이벤트 루프tokio 멀티스레드goroutine 경량 스레드

8. 코드 생성 시간(codeGenSec) 차이의 원인

결론부터 — AI 모델 추론 차이 아님. 모든 서브에이전트는 같은 Claude 모델 + 같은 추론 속도. 차이는 다른 데서 옴.

1. 출력 토큰 수

LLM 디코딩이 직렬이라 LOC + 보일러플레이트가 많을수록 비례해서 느려짐.

2. 외부 명령·네트워크

Spring Initializr zip 다운로드 + unzip + 정리만 5–10s 누적. cargo init / bun init / uv init 은 거의 즉시.

3. 도구 호출 횟수

Read · Write · Bash 한 번 당 수백 ms 직렬 라운드트립. 외부 단계 많은 프레임워크일수록 호출 수 증가.

4. 학습 데이터 분포

Rust lifetime · Send · Sync 같이 첫 시도에서 컴파일 실패 가능한 경우 재시도 사이클.

codeGenSec = (순수 LLM 코딩 난이도) + (프레임워크 부트스트랩 비용) 의 합. 모델 성능 차이로 해석하면 틀림.

9. 최종 결론

추천 — Hono (Bun)

사용자 가중치를 모두 동등하게 본다고 했을 때 균형 시나리오 7.97 / 10으로 1위. 모든 카테고리에서 6/10 이상을 유지하는 유일한 옵션.

분기 (Hono 가 안 맞는 경우만)

10. 측정 한계

재현 시 보정해야 할 5가지