Perf & Failure 실측 (Phase 13)
실행 환경: Windows 11, Rust Axum dev 빌드, SQLite WAL, Node 22, loopback. 날짜: 2026-10-29. 추정치 없음 — 실제 측정값만 기록.
동시성 — 50× GET /api/v1/projects 병렬
| 지표 | 값 |
|---|---|
| wall time | 56 ms |
| p50 | 27.1 ms |
| p95 | 28.6 ms |
| p99 | 50.2 ms |
측정: node fetch ×50 Promise.all — 실제 SQLite 조회 경유.
Codec 페이로드 크기 — GET /api/v1/projects (동일 데이터)
| Codec | 크기 | 대 JSON |
|---|---|---|
| JSON | 5236 B | 100% |
| MessagePack | 4338 B | 83% |
| Protobuf | 2988 B | 57% |
protobuf가 가장 작음 — 스키마 기반 가변길이 정수·필드 태그의 효과.
장애 복구
| 시나리오 | 결과 |
|---|---|
| BE 강제 종료 후 fetch | ECONNREFUSED — 즉시 실패 (연결 거부) |
| 재시작 후 프로젝트 수 | 22건 — 종료 전과 동일, SQLite 유지 |
| outbox pending 재시작 후 | outbox_survives_restart 테스트로 유실 없음 검증 |
| Rate limit (NOUGAT_RATE_LIMIT_RPM=5) | 6번째 요청부터 429 — 실측 |
미측정
- SQLite 동시 쓰기 Lock 경합, FE 초기 로딩 LCP, 메모리 사용량, OTLP collector 장애.