15.12 Scorecard + สรุป
บทนี้เปรียบเทียบสถานะทางเทคนิคของระบบใน 3 จุดเวลา: ปัจจุบัน, หลัง Wave 0-1, หลัง Wave 2-3
Scorecard หลัก
| Dimension | ปัจจุบัน | หลัง Wave 0-1 | หลัง Wave 2-3 (target) |
|---|---|---|---|
| Security posture | 🔴 Critical 6 (SEC-1,3,4,11 + PERF-7 + CORR-4) | 🟡 Critical ปิดหมด | 🟢 Casbin + secret manager + ไม่มี PII ใน URL |
| Availability / HA | 🔴 in-process cron, centralize-api 1 replica, ไม่มี rate limit | 🟡 BullMQ + replica + rate limit | 🟢 Asynq + distributed lock + autoscale |
| Correctness | 🔴 RBAC bug, transaction swallow, auto-sync | 🟡 RBAC test matrix, txn แก้แล้ว | 🟢 Strict types + saga + migration forward-only |
| Performance | 🔴 execSync + no-cache + N+1 RBAC + JSON scan | 🟡 renderer service + cache + indexed lookup | 🟢 concurrent Go + Redis + cache-and-network |
| Maintainability | 🔴 controller 3,179 LOC, queries 4,500 LOC, _bk 131 ไฟล์, UI lib 4 ตัว | 🟡 cleanup + consolidate | 🟢 FSD + bounded context + < 400 LOC/file |
| Reproducibility | 🔴 ไม่มี engines, dual lockfile, no centralize lockfile, git URL dep | 🟡 engines + single lockfile | 🟢 Go modules + Docker pin + CI drift check |
| Modernization alignment | 🔴 Node 12 + Apollo 2 + React 16 + Webpack 4 | 🟡 Node 20 + Apollo 4 + React 18 | 🟢 Go (Hex/DDD) + Nuxt 3 (FSD) |
Legend: 🔴 สถานะวิกฤต / 🟡 ยอมรับได้ / 🟢 ดี
Debt count ตาม Wave
| หมวด | ปัจจุบัน | Wave 0 ลด | Wave 1 ลด | Wave 2 ลด | Wave 3 ลด | เหลือ |
|---|---|---|---|---|---|---|
| Critical | 13 | 10 | 3 | 0 | 0 | 0 |
| High | 31 | 5 | 15 | 8 | 3 | 0 |
| Med | 13 | 0 | 5 | 5 | 3 | 0 |
| รวม | 57 | 15 | 23 | 13 | 6 | 0 |
หมายเหตุ: ตัวเลขเป็นการประมาณ — บางรายการอาจถูก mark superseded โดยการ rewrite ทั้ง service
การประเมิน risk reduction ตาม Wave
Risk
▲
│
│ ■ ← ปัจจุบัน (57 debt, 13 Critical)
│
│ ■ ← หลัง Wave 0 (42 debt, 3 Critical)
│
│ ■ ← หลัง Wave 1 (19 debt, 0 Critical)
│
│ ■ ← หลัง Wave 2 (6 debt, 0 Critical)
│
│ ■ ← หลัง Wave 3 (0 debt, 0 Critical)
│
└─────────────────────────────► เวลา
สัปดาห์ 0 1-3 เดือน 6-12 เดือน 12-15 เดือน 18+ เดือนสรุปความเสี่ยงที่ยังไม่ได้ลด
แม้หลัง Wave 0-1, ความเสี่ยงที่ยังเหลือ:
- cross-schema write (CORR-1) — ต้องรอ Wave 2 ถึงจะแก้ที่ root cause
- God controller (PERF-6) — ต้องการ refactoring ที่ไม่เปลี่ยน behavior ซึ่งใช้เวลา
- Node runtime migration — ต้องทำ esm shim ก่อน ซึ่งเป็นงานใหญ่
ทีมต้องยอมรับความเสี่ยงเหล่านี้ในช่วง 12-18 เดือนแรก และ plan mitigation ที่ดีพอ
ROI ของแต่ละ Wave
| Wave | Effort รวม | Debt ที่ลด | Risk reduction | ROI |
|---|---|---|---|---|
| 0 | 2 สัปดาห์ | 15 | Critical 13 → 3 | สูงมาก |
| 1 | 3 เดือน | 23 | High 31 → 16 | สูง |
| 2 | 12 เดือน | 13 | architecture debt หายไป | ปานกลาง |
| 3 | 15 เดือน | 6 | frontend debt หมด | ปานกลาง |
Wave 0 ให้ ROI สูงที่สุด — ควรเริ่มทันที
ตัวชี้วัดความสำเร็จ (KPI)
ตัวชี้วัดที่ควร track ทุกเดือน:
| KPI | ปัจจุบัน | เป้า Wave 0 | เป้า Wave 1 | เป้า Wave 2-3 |
|---|---|---|---|---|
| Critical debt count | 13 | 3 | 0 | 0 |
| High debt count | 31 | 26 | 11 | 3 |
| Node runtime เวอร์ชันเฉลี่ย | 12.5 | 12.5 | 20 | 20+ (Go) |
| Service ที่มี health endpoint | 0/5 | 0/5 | 5/5 | 5/5+ |
| CI/CD coverage | 2/5 repos | 2/5 | 5/5 | 5/5 |
_bk files ใน repo | 131 | 0 | 0 | 0 |
| Frontend bundle size (เฉลี่ย) | ~5 MB | 5 MB | 4 MB | 2 MB |
| Time-to-deploy (จาก commit) | manual | manual | < 30 นาที | < 10 นาที |
| Uptime (ต่อเดือน) | ~99% | 99% | 99.5% | 99.9% |
| MTTR (mean time to recover) | หลายชั่วโมง | หลายชั่วโมง | < 1 ชั่วโมง | < 15 นาที |
สิ่งที่ Volume นี้ไม่ได้ครอบคลุม
Volume นี้เป็น register ของ debt ที่พบในช่วงสำรวจ — ไม่ใช่:
- รายการ debt ที่ครบถ้วนสมบูรณ์ (อาจมี debt ที่ยังไม่ค้นพบ)
- การประเมินทางการเงินของการแก้ debt (cost-benefit)
- แผนงานที่ละเอียดระดับ sprint (อยู่ใน Volume 15)
- การประเมินความพร้อมของทีม (skill, availability)
ข้อเสนอแนะถัดไป
- ตั้ง "Tech Debt Wednesday" — วันพุธสำหรับแก้ debt (1 เดือนละ 1-2 รายการ)
- ตั้ง Definition of Done ที่รวม guardrail check
- รายงาน debt status ในระดับ exec ทุกไตรมาส
- เลือก 3-5 debt ที่ทีมสนใจ ทำเป็น pilot ก่อน
- เริ่ม Wave 0 ทันที — ไม่ต้องรอแผนระยะยาวเสร็จ
บทสรุป Volume 15
Volume นี้รวบรวม debt ทั้งหมดที่พบในระบบ VTRC มาเป็น register เดียว พร้อม:
- evidence ที่อ้างอิง file:line
- severity ที่ชัดเจน
- mitigation ระยะสั้นที่ทำได้จริง
- แนวทางระยะยาวที่สอดคล้องกับ modernization target
- heat-map และ sequencing สำหรับตัดสินใจ
- guardrails เพื่อป้องกัน debt ใหม่
- scorecard สำหรับวัดความคืบหน้า
สิ่งที่ผู้อ่านควรนำไปใช้:
- วางแผน Wave 0 ทันทีหลังอ่านจบ — effort 2 สัปดาห์ ลด Critical 10+ รายการ
- เลือก guardrail 3-5 ข้อ ที่จะตั้งใน CI ก่อน
- track KPI ทุกเดือนเพื่อดูความคืบหน้า
- ปรับปรุง Volume นี้ เมื่อ debt ใหม่ถูกค้นพบหรือเก่าถูกแก้
Volume ถัดไป
Volume 15 (Modernization Plan) จะลงรายละเอียดของ Wave 0-3 ในระดับ sprint plan — ใครทำอะไร เมื่อไหร่ อย่างไร