Rust와 Kafka로 구축된 실시간 암호화폐 가격 스트리밍 API
Rust bench-tools 기준 — SSE 50 clients/30s, throughput 60s, latency 1,000 samples, collector kill 복구 시간 측정
| Metric | Before | After | Improvement |
|---|---|---|---|
| SSE TPS (50 clients) | 3,161.61 events/s | 4,812.09 events/s | +52.2% |
| Tick TPS | 26.27 ticks/s | 107.82 ticks/s | +310.5% |
| Avg Latency | 11,923.25ms | 28.89ms | -99.8% |
| P95 Latency | 15,320ms | 1,333ms | -91.3% |
| Recovery Time | — | 4,186ms | — |
단순 성능 최적화보다 장애 격리와 순서 보장을 우선한 설계로 운영 안정성을 확보했습니다.
등록된 API 엔드포인트에 주기적으로 HTTP 요청을 보내고 결과를 기록하는 헬스체크 서비스
O(n) Scan → O(1) per check 구조 전환 — API 수가 늘어도 읽기 비용이 증가하지 않음
| Metric | Before | After | Improvement |
|---|---|---|---|
| DB 쓰기 / 체크 1회 | 2회 | 1회 | -50% |
| 한 사이클 최대 쓰기 (API 50개) | 150회 | 100회 | -33% |
| 이력 조회 행 수 | 최대 43,200개 | 요청 수만큼 | -99.9% |
| 알림 경로 추가 DB 호출 | 2회 | 0회 | 기존 저장에 흡수 |
비용 절감보다 시스템 규모가 커져도 같은 방식으로 동작하는 구조를 만드는 데 집중했습니다.
GitHub Organization 내 멤버 랭킹을 조회하는 API
캐시를 추가한 것이 아니라, 외부 의존성을 시스템 경계 밖으로 밀어낸 구조 개선 사례입니다.
k6 부하 테스트 기준 — Cached: 500 VU / 4m 30s, No Cache: 5 VU / GitHub rate limit 제약
| Metric | Cached | No Cache | Improvement |
|---|---|---|---|
| Avg Latency | 1.65ms | 40.09s | seconds → milliseconds |
| P95 Latency | 4.39ms | 43.33s | seconds → milliseconds |
| Throughput | 5,740 req/s | — ¹ | — |
| Total Requests | 1,549,907 | 8 | — |
캐시 적중 시 외부 API 호출 없이 응답 처리 — rate limit 장애 위험 구조적으로 제거
¹ No Cache 처리량은 GitHub API rate limit(5,000 points/h)에 의해 결정되며 서버 처리 성능과 무관
손 제스처로 AI와 소통하는 애플워치용 경량 챗봇 서비스
모델을 바꾸지 않고도 시스템 설계만으로 사용자 체감 성능을 개선했습니다.
k6 부하 테스트 기준 — 정규화 전/후 각 10 VU / 100 iterations, 조사 변형 쿼리 20종
| Metric | Before | After | Improvement |
|---|---|---|---|
| Cache Hit Rate | ~10% | ~60% | +500% |
| Avg Latency | ~36s | ~16s | -55% |
| Cache Hit Latency (p95) | ~162ms | ~112ms | -31% |
| Cache Miss Latency | ~40s | ~40s | 거의 동일 |
캐시 미스 지연은 개선 전후 거의 동일 — 정규화가 기존 요청 품질에 영향 없이 히트율만 높임