This commit is contained in:
Leonard-ThindPad-P50
2026-09-08 10:26:21 +07:00
commit c81f249920
169 changed files with 38726 additions and 0 deletions

View File

@@ -0,0 +1,163 @@
# CONF — Architecture Conformance Report — <PROJECT> · kỳ <YYYY-MM>
| | |
|---|---|
| **Version** | 1.0 |
| **Date** | YYYY-MM-DD |
| **Author** | <SA> (skill sa-4-evolution) |
| **Status** | 🟡 Draft |
| **Approved by** | PO: — · SRE: — · EA: — |
| **Source** | QAS_… v1.1 · TCO_… v1.0 · INF_… v1.0 · hoá đơn … · dashboard … · log sự cố … |
| **Scope** | Kỳ … |
| **Confidence** | 🟢 *(số đo thật)* / 🟡 *(một phần ước lượng)* |
## Change Log
| Version | Date | Người sửa | Thay đổi |
|---|---|---|---|
| 1.0 | | | Bản đầu |
> Mỗi kỳ một file, **không ghi đè kỳ trước**. So sánh giữa các kỳ là nơi xu hướng lộ ra.
---
## 1. Tóm tắt
| | Đạt | Không đạt | **Chưa đo được** |
|---|---|---|---|
| `QAS` mức Must | | | |
| `QAS` mức Should | | | |
| | Ước lượng | Thực tế | Chênh |
|---|---|---|---|
| Chi phí hạ tầng/tháng | | | % |
| | Số |
|---|---|
| Sự cố trong kỳ | |
| — truy về một `ADR` | |
| — truy về một `ASM` sai | |
| — **điểm mù mới** | |
| Drift phát hiện được | |
**Ba việc cần xử lý trước:** … *(dẫn sang `TRM`)*
---
## 2. `QAS` × telemetry thật
| `QAS` | Mục tiêu | Đo được | Nguồn đo | Kết quả | Ghi chú / `TD` |
|---|---|---|---|---|---|
| `QAS-001` | p95 ≤ 300ms | | Grafana … | ✅ / ❌ / ⚠️ | |
| `QAS-004` | ≤ 45 phút | | | | |
**Ký hiệu:** ✅ đạt · ❌ không đạt · ⚠️ **chưa đo được**
🔴 **⚠️ không nhẹ hơn ❌ — nó nặng hơn.** ❌ nghĩa là ta biết mình đang ở đâu; ⚠️ nghĩa là ta
không biết gì cả. Mỗi mục ⚠️ phải ghi rõ vì sao chưa đo được:
| `QAS` | Vì sao chưa đo được | Cần gì để đo được | Vào `TRM` |
|---|---|---|---|
| | cách đo ở AG2 không khả thi / thiếu observability / chưa có bài đo | | ☐ |
**Xu hướng so với kỳ trước**
| `QAS` | Kỳ trước | Kỳ này | Xu hướng |
|---|---|---|---|
| | | | ↗ xấu đi · → ổn định · ↘ tốt lên |
## 3. `TCO` × hoá đơn thật
| Hạng mục | Ước lượng | Thực tế | Chênh | Giải thích |
|---|---|---|---|---|
| Compute | | | % | |
| CSDL | | | | |
| Cache | | | | |
| Lưu trữ | | | | |
| Message broker | | | | |
| **Egress** | | | | |
| Observability | | | | |
| Non-prod | | | | |
| **Tổng** | | | % | |
**Chênh lệch > 20% — truy nguyên** *(phải thuộc một trong bốn loại)*
| Hạng mục | Chênh | Loại nguyên nhân | Chi tiết | Hành động |
|---|---|---|---|---|
| | | ① tải khác dự kiến · ② cấu hình khác thiết kế · ③ bỏ sót khi ước lượng · ④ đơn giá đổi | | |
🔴 **Không thuộc bốn loại trên ⇒ đang có thứ gì đó chạy mà không ai biết.** Đây là phát hiện
nghiêm trọng, không phải chuyện kế toán.
**Chi phí trên đơn vị nghiệp vụ** *(chỉ số này ổn định hơn tổng chi phí)*
| | Kỳ trước | Kỳ này |
|---|---|---|
| Chi phí / 1.000 giao dịch | | |
| Chi phí / người dùng hoạt động | | |
## 4. Sự cố × quyết định kiến trúc
| Sự cố | Ngày | Ảnh hưởng | Truy về | Chi tiết | Hành động |
|---|---|---|---|---|---|
| `INC-…` | | … phút downtime | `ADR-nnn` | Hệ quả đã ghi trong ADR §5 | Không cần đổi |
| `INC-…` | | | `ASM-nn` **sai** | Giả định "…" không đúng thực tế | Sửa `ASM`, rà mọi thứ dựa trên nó |
| `INC-…` | | | 🔴 **điểm mù mới** | Không tài liệu nào nói tới | Thêm `QAS-nnn` + `FM-nn` + `FIT-nn` |
🔴 **Điểm mù mới là phát hiện có giá trị nhất của cả báo cáo.** Nó là thứ không ai nghĩ tới —
và bây giờ đã nghĩ tới. Ghi kỹ, đừng gộp vào các dòng khác.
**Ngân sách lỗi**
| `QAS` sẵn sàng | Ngân sách/tháng | Đã dùng | Còn lại |
|---|---|---|---|
| `QAS-007` 99.9% | 43 phút | | |
Dùng hết ngân sách lỗi ⇒ dừng phát hành tính năng mới, ưu tiên ổn định. Quy tắc này ai chốt: …
## 5. Drift — thiết kế × đang chạy
| # | Loại drift | Phát hiện bằng | Chi tiết | Mức | Hành động |
|---|---|---|---|---|---|
| 1 | `FIT` đỏ hoặc bị tắt | lịch sử CI | | | |
| 2 | Component có trong code, không có trong `SAD` | so repo/deployment | | | Cập nhật `SAD` hoặc gỡ bỏ |
| 3 | Interface đang gọi, không có trong `ICD` | **trace/log** | | | |
| 4 | Cấu hình khác `INF` | so IaC thật | | | |
| 5 | Whitelist `FIT` quá hạn | `FIT` §3 | | | |
| 6 | `TD` quá hạn xét lại | `TDEBT` | | | |
🔴 **Loại 3 phải tìm bằng trace/log, không bằng đọc code.** Lời gọi phát sinh lúc chạy (qua
cấu hình, plugin, job định kỳ) không lộ ra khi đọc code tĩnh.
**Kết luận về drift:** kiến trúc đang chạy *(còn khớp thiết kế / đã trôi ở …)*
## 6. `ADR` cần xem lại
| `ADR` | Điều kiện xét lại (§7 của ADR) | Đã chạm ngưỡng | Hành động |
|---|---|---|---|
| `ADR-nnn` | thông lượng vượt … | ☐ | |
| `ADR` | Bị thực tế bác bỏ ở đâu | ADR thay thế |
|---|---|---|
| | | `ADR-nnn` |
*Không sửa nội dung `ADR` cũ. Viết ADR mới có `Supersedes:`.*
## 7. Bài học kỳ này
| Bài học | Sinh từ | Áp dụng vào đâu |
|---|---|---|
| | sự cố / drift / chênh lệch chi phí | `AGD` / `FIT` / quy trình / dự án sau |
## 8. Đề xuất cho `TRM`
*Xếp theo lợi ích/chi phí. **Không xếp thứ tự ưu tiên thay PO** — trình bảng, PO xếp.*
| # | Việc | Chi phí | Lợi ích *(bằng số)* | Rủi ro nếu không làm | Sinh từ |
|---|---|---|---|---|---|
| 1 | | … ngày công | … /tháng | | §3 |
## 9. Open Questions
| ID | Câu hỏi | Hỏi ai | Từ ngày | Chặn gì |
|---|---|---|---|---|