164 lines
5.9 KiB
Markdown
164 lines
5.9 KiB
Markdown
# 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ì |
|
||
|---|---|---|---|---|
|