현행 기술스택·인프라 적절성 + 최적화 + 서버비용 절감 + To-Be 설계. (원본 MD: docs/architecture/architecture-review.md)
개선 필요 5가지(우선순위):
| P1 🟡 | DB 단일 서버 SPOF — 자동 백업 실가동(2026-06-01, 가이드, 복구 리허설 통과). 공용 서버라 추천 B로 보강 |
|---|---|
| P2 ✅ | |
| P3 ✅ | |
| P4 ✅ | 04-시스템아키텍처.md 불일치 |
| P5 ⏸️ | 공개 read 캐싱 확대 — 보류(9 users 규모, 조기 최적화. 트래픽 시 진행) |
| 모노레포 | pnpm 10 + Turborepo 2.5 — ✅ |
|---|---|
| 프론트 | Next 15 정적 export ×3 + React 19 → Pages(무료) — ✅ |
| API | Hono 4 on Workers(엣지, 콜드스타트≈0) — ✅ |
| 실시간 | Durable Objects ×4 (WebSocket + alarm) — ✅ |
| DB | Drizzle + Postgres 16 + PostGIS — ✅ / Hyperdrive 풀링 — ✅ |
| 엣지 데이터 | KV(캐시·토큰·rate-limit) · R2(업로드) · Queues ×2 +DLQ — ✅ |
| 푸시/배치 | Web Push(VAPID 자체) · flight-poller cron — ✅ |
| 품질 | Biome + Vitest(594 테스트) — ✅ |
전 레이어 2025~26 최신·일관·TypeScript 단일화. 기술부채성 선택 없음. 규모: API ~73파일, DB ~22테이블(주요 테이블 인덱스 3~5개씩 양호), 마이그레이션 0001~0020.
[PWA ×3] ─► Cloudflare Pages (정적, 무료)
├─ /v1/* ─► ktaxi-api (Hono)
│ ├─ Hyperdrive ─► (외부) Postgres/PostGIS ◄ ⚠️P1 단일 서버
│ ├─ KV CACHE / SHARE_TOKENS ├─ R2 STORAGE
│ ├─ Queue → notifications / settlements
│ └─ Cron * * * * * (sweep) ◄ ⚠️P3 매분
├─ WSS ─► ktaxi-realtime (DO ×4)
│ └─ DispatchObject alarm 30s ◄ ⚠️P2 운영 300s와 불일치
├─ 큐소비 ─► consumer-notification / -settlement
└─ cron */5 ─► ktaxi-flight-poller ─► Web Push
04-시스템아키텍처.md는 초기 기획(미채택)이며 실제와 다름:
| 모바일 | Flutter 앱 → 실제 Next.js PWA |
|---|---|
| API | Express on EC2 ×2 → 실제 Hono on Workers |
| 실시간 | WebSocket EC2 → 실제 Durable Objects |
| DB | RDS Multi-AZ + Replica → 실제 자체 Docker PG 1대 |
| 캐시/LB | ElastiCache·CloudFront·ALB → 실제 KV·엣지 내장 |
| 월 비용 | 문서 ~$444 → 실측 ~$6~50 |
42.127.251.21는 공용 서버(~20개 컨테이너 공존). 조치(2026-06-01): 호스트 cron이 매일 03:00 one-shot 컨테이너로 pg_dump→age→R2 업로드(14개 보존), netns 127.0.0.1 trust + R2 API토큰. 복구 리허설 통과(스크래치 DB 복원, 행수 일치). 가이드.env.DISPATCH가 어디서도 인스턴스화 안 됨(.get()/.idFromName() 0건). 실제 디스패치는 api의 dispatch_logs + 300초 cron sweep + WS/Push로 처리되고 DO·alarm은 미실행 잔재였음.v4 deleted_classes 마이그레이션(인스턴스 0개라 data-safe). DO 4→3. 594/594 테스트 통과 + prod 배포·smoke 정상.* * * * * sweep가 유일한 stale-dispatch 타임아웃 메커니즘 → 중복 아님. 매분 실행도 비용 미미·적정이라 그대로 유지.| Workers Paid | $5 — DO·Queues·Cron 사용 → 필수(사실상 하한, 충분히 저렴) |
|---|---|
| Pages ×3 | $0 — 정적 무료 무제한 |
| KV/R2/Queues/DO | ~$0~5 — 저트래픽 포함량 내, R2 egress 0 |
| Hyperdrive | $0 |
| 자체 DB 서버 | 사실상 $0 — 공용 서버 공유(~20개 컨테이너), ktaxi 한계비용 ≈ 0 |
| 합계 | 약 $6~50/월 (옛 기획 $444 대비 1/10~1/40) |
가장 큰 절감 대상은 자체 DB 서버 고정비 + 운영 인건비. 나머지는 트래픽 비례 소액.
방향: 현행 Cloudflare-네이티브 유지 + 데이터 계층 신뢰성/비용 개선 + 이벤트화·캐싱·관측성 보강.
판단: 유료 전용 VPS면 → 안 A(동급 비용에 백업·HA·무운영). 기존 공용/무료 서버면 → 안 B + 백업 자동화(비협상).
| 현재 | 추천 A | 추천 B | |
| Workers+엣지 | $5~10 | $5~10 | $5~10 |
| DB | $0~40 (백업無) | $19~25 (백업·PITR) | $0~40 +R2백업~$0 |
| 운영부담 | 높음 | 낮음 | 중간 |
| SPOF/HA | ❌ | ✅ | △ |
| 합계 | $6~50 | $24~35 | $6~50 |
추천 A는 비슷한 비용으로 백업·PITR·무운영·SPOF 해소(실질 TCO↓). 현금 최소화가 절대 우선+서버 보유 시 추천 B(백업 자동화 필수).