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,116 @@
# ARISK — Architecture Risk Register & POC Plan — <PROJECT>
| | |
|---|---|
| **Version** | 1.0 |
| **Date** | YYYY-MM-DD |
| **Author** | <SA> (skill sa-1-context) |
| **Status** | 🟡 Draft |
| **Approved by** | Tech Lead: — · PM: — |
| **Source** | CTX_… v1.0 · OPT_… v1.0 |
| **Scope** | |
| **Confidence** | 🟡 |
## Change Log
| Version | Date | Người sửa | Thay đổi |
|---|---|---|---|
| 1.0 | | | Bản đầu |
> Sổ này **sống suốt dự án**, không đóng ở AG1. Mỗi rủi ro chỉ đóng khi có bằng chứng, không
> đóng vì hết hạn.
---
## 1. Tóm tắt
| Mức | Số lượng | Đã có biện pháp cụ thể | Quá hạn |
|---|---|---|---|
| 🔴 Cao | | | |
| 🟠 Trung bình | | | |
| 🟡 Thấp | | | |
**Ba rủi ro cần chú ý nhất tuần này:** `ARISK-…`, `ARISK-…`, `ARISK-…`
## 2. Cách chấm mức
| | Tác động thấp | Tác động vừa | Tác động lớn *(lệch tiến độ >4 tuần, vượt ngân sách, không đáp ứng `DRV` Must)* |
|---|---|---|---|
| **Xác suất cao** | 🟠 | 🔴 | 🔴 |
| **Xác suất vừa** | 🟡 | 🟠 | 🔴 |
| **Xác suất thấp** | 🟡 | 🟡 | 🟠 |
## 3. Sổ rủi ro
| ID | Rủi ro | Nguồn | XS | TĐ | Mức | Biện pháp hạ rủi ro | Chủ | Hạn | Trạng thái |
|---|---|---|---|---|---|---|---|---|---|
| `ARISK-01` | | công nghệ mới | | | 🔴 | POC-01 | | | Mở |
| `ARISK-02` | | phụ thuộc ngoài | | | | | | | |
**Trạng thái:** Mở · Đang hạ · Đã đóng (kèm bằng chứng) · Đã chấp nhận (kèm ai chấp nhận)
🔴 **Biện pháp "sẽ theo dõi" không phải biện pháp.** Biện pháp hợp lệ là: POC, spike, đàm phán
hợp đồng, đổi phương án, mua bảo hiểm kỹ thuật (fallback), hoặc **chấp nhận có người ký**.
## 4. Rà sáu nguồn rủi ro *(checklist — mỗi dòng phải trả lời)*
| Nguồn | Câu hỏi | Trả lời | Sinh `ARISK` nào |
|---|---|---|---|
| Công nghệ mới | Có ai trong team từng chạy production cái này chưa? | | |
| Phụ thuộc ngoài | Bên kia có SLA không? Ta làm gì khi họ hỏng/đổi/ngừng? | | |
| Dữ liệu | Migration có rollback được không? Dữ liệu bẩn tới mức nào? | | |
| Hiệu năng | Con số throughput/latency lấy từ bài đo hay từ suy đoán? | | |
| Con người | Người duy nhất biết hệ thống cũ có còn ở công ty không? | | |
| Chi phí | Khoản nào tăng phi tuyến theo tải? | | |
## 5. Rủi ro đã chấp nhận
*Rủi ro không hạ được và có người ký chấp nhận. Ghi lại để sau này không ai ngạc nhiên.*
| ID | Rủi ro | Vì sao chấp nhận | Ai ký · ngày | Dấu hiệu cảnh báo sớm | Kế hoạch dự phòng |
|---|---|---|---|---|---|
## 6. Kế hoạch POC
*Mọi `ARISK` 🔴 chưa chứng minh được phải có POC. Tiêu chí pass/fail viết **trước** khi làm —
POC không có tiêu chí trước là POC luôn "thành công".*
### POC-01 — <tên>
| | |
|---|---|
| **Hạ rủi ro** | `ARISK-01` |
| **Câu hỏi cần trả lời** | *(đúng một câu, có thể trả lời bằng số)* |
| **Tiêu chí PASS** | *(số cụ thể, ví dụ: ≥ 500 msg/s với payload 2KB, p99 ≤ 200ms, chạy 30 phút không mất message)* |
| **Tiêu chí FAIL** | *(và khi fail thì làm gì — chuyển sang phương án nào)* |
| **Phạm vi** | *(cái gì KHÔNG làm trong POC — POC không có giới hạn sẽ thành dự án nhỏ)* |
| **Thời lượng tối đa** | … ngày · **dừng khi hết thời lượng dù chưa xong** |
| **Ai làm** | |
| **Môi trường** | *(phải gần production ở điểm nào — cấu hình máy, kích thước dữ liệu, độ trễ mạng)* |
**Kết quả** *(điền sau khi chạy)*
| | |
|---|---|
| **Ngày chạy** | |
| **Kết quả đo** | |
| **PASS / FAIL** | |
| **Điều bất ngờ phát hiện được** | *(thường có giá trị hơn cả kết quả chính)* |
| **Quyết định rút ra** | ⟶ `ADR-nnn` |
🔴 **POC fail vẫn phải ghi lại đầy đủ.** Nó là bằng chứng cho một phương án bị loại ở `OPT` §5,
và nó ngăn người khác đề xuất lại đúng phương án đó sau sáu tháng.
### POC-02 — <tên>
*(cùng cấu trúc)*
## 7. Rủi ro đã đóng
| ID | Rủi ro | Đóng ngày | Bằng chứng |
|---|---|---|---|
## 8. Open Questions
| ID | Câu hỏi | Hỏi ai | Từ ngày | Chặn gì |
|---|---|---|---|---|

View File

@@ -0,0 +1,137 @@
# TCO — Cost Model — <PROJECT> · phương án P…
| | |
|---|---|
| **Version** | 1.0 |
| **Date** | YYYY-MM-DD |
| **Author** | <SA> (skill sa-1-context) |
| **Status** | 🟡 Draft |
| **Approved by** | PO: — |
| **Source** | CTX_… v1.0 · báo giá … · hoá đơn cloud tháng … |
| **Scope** | Phương án P… · 3 năm · đơn vị tiền: VND/tháng |
| **Confidence** | 🟡 |
## Change Log
| Version | Date | Người sửa | Thay đổi |
|---|---|---|---|
| 1.0 | | | Bản đầu |
---
## 1. Tóm tắt
| | Kịch bản A *(tải dự kiến)* | Kịch bản B *(tải × 3)* |
|---|---|---|
| **Năm 1** | | |
| **Năm 2** | | |
| **Năm 3** | | |
| **Tổng 3 năm** | | |
| **So với `CON-01` (ngân sách duyệt)** | ✅ trong ngân sách / ❌ vượt … % | |
🔴 Vượt ngân sách ⇒ **không im lặng đi tiếp**. Trình `OPT` §7 "Cắt gì thì giảm bao nhiêu" để
PO có lựa chọn.
## 2. Giả định tải — nền của mọi con số dưới đây
| Chỉ số | Kịch bản A | Kịch bản B | Nguồn |
|---|---|---|---|
| Người dùng hoạt động | | | `CTX` §4.4 / ước lượng của … |
| Giao dịch/ngày (trung bình) | | | |
| Giao dịch/giờ (đỉnh) | | | |
| Dung lượng dữ liệu năm 1 / 3 | | | |
| Tốc độ tăng dữ liệu | /tháng | | |
| Băng thông ra ngoài | GB/tháng | | |
🔴 **Egress (băng thông ra) là khoản hay bị quên nhất và tăng phi tuyến.** Luôn có dòng này.
## 3. Chi phí hạ tầng
| Hạng mục | Cấu hình | Đơn giá | SL (A) | Tiền (A) | SL (B) | Tiền (B) | Nguồn giá |
|---|---|---|---|---|---|---|---|
| Compute | | | | | | | báo giá … ngày … |
| CSDL | | | | | | | |
| Cache | | | | | | | |
| Lưu trữ đối tượng | | | | | | | |
| Message broker | | | | | | | |
| Load balancer / gateway | | | | | | | |
| **Băng thông ra (egress)** | | | | | | | |
| Backup & DR | | | | | | | |
| Observability (log/metric/trace) | | | | | | | |
| Môi trường non-prod (dev/stg) | | | | | | | |
| **Cộng hạ tầng/tháng** | | | | | | | |
🔴 **Observability và non-prod thường chiếm 20–35% hoá đơn** và gần như luôn bị bỏ khỏi ước
lượng ban đầu. Giữ hai dòng này kể cả khi chưa có số.
## 4. License & dịch vụ mua ngoài
| Hạng mục | Mô hình tính giá | Đơn giá | Năm 1 | Năm 2 | Năm 3 | Nguồn |
|---|---|---|---|---|---|---|
| | theo user / theo core / theo giao dịch | | | | | |
🔴 **Mô hình tính giá quan trọng hơn đơn giá.** License tính theo user thì chi phí tăng cùng
thành công của sản phẩm — hỏi rõ ngưỡng bậc giá tiếp theo ở đâu.
## 5. Vận hành
| Hạng mục | Cách tính | Năm 1 | Năm 2 | Năm 3 |
|---|---|---|---|---|
| Nhân sự vận hành | … người × … % thời gian × chi phí/người | | | |
| Trực sự cố (on-call) | | | | |
| Đào tạo kỹ năng mới | *(sinh từ `CON-04` — kỹ năng team chưa có)* | | | |
| Công cụ (CI, scanner, APM…) | | | | |
| **Cộng vận hành/năm** | | | | |
🔴 Nếu `CON-04` ghi team chưa có kỹ năng nào đó, dòng "Đào tạo" **không được bằng 0**. Chi phí
đó có thật, chỉ là nó nằm ở chỗ khác trong tổ chức.
## 6. Chi phí xây dựng (một lần)
| Hạng mục | Effort (người-tuần) | Tiền |
|---|---|---|
| Thiết kế & POC | | |
| Phát triển | | |
| Kiểm thử | | |
| Migration dữ liệu | | |
| Triển khai & tài liệu | | |
| **Cộng** | | |
## 7. Tổng hợp 3 năm
| Nhóm | Năm 1 | Năm 2 | Năm 3 | Tổng | % |
|---|---|---|---|---|---|
| Hạ tầng | | | | | |
| License | | | | | |
| Vận hành | | | | | |
| Xây dựng | | | — | — | |
| **Tổng** | | | | | 100% |
## 8. Điểm nhạy cảm
*Con số nào sai thì tổng lệch nhiều nhất — đây là chỗ cần đo trước, không cần đo hết.*
| Giả định | Nếu sai ±50% thì tổng 3 năm lệch | Cách giảm bất định |
|---|---|---|
| | | POC / báo giá chính thức / đo trên môi trường thật |
## 9. Điểm hoà vốn so với P0 *(giữ nguyên hiện trạng)*
| | |
|---|---|
| Chi phí hiện tại (P0)/năm | |
| Tiết kiệm dự kiến/năm | |
| **Hoà vốn sau** | … tháng |
## 10. Giả định & Ngoài phạm vi
**Giả định:**
| ID | Giả định | Nếu sai |
|---|---|---|
| `ASM-nn` | Tỉ giá, đơn giá cloud giữ nguyên 3 năm | |
**Ngoài phạm vi:** *(ví dụ: chưa tính chi phí bản quyền hệ điều hành, chưa tính chi phí kiểm
toán bảo mật hàng năm)*
-

View File

@@ -0,0 +1,160 @@
# OPT — Solution Options & Trade-off — <PROJECT>
| | |
|---|---|
| **Version** | 1.0 |
| **Date** | YYYY-MM-DD |
| **Author** | <SA> (skill sa-1-context) |
| **Status** | 🟡 Draft |
| **Approved by** | PO: — · Tech Lead: — |
| **Source** | CTX_… v1.0 · TCO_… v1.0 · ARISK_… v1.0 |
| **Scope** | |
| **Confidence** | 🟡 |
## Change Log
| Version | Date | Người sửa | Thay đổi | ADR/DEC |
|---|---|---|---|---|
| 1.0 | | | Bản đầu | — |
> ⚠️ **Đây là tài liệu PO + Tech Lead ký để qua AG1.** Đọc §1 và §5 là đủ để quyết.
---
## 1. Khuyến nghị *(đọc mục này trước)*
| | |
|---|---|
| **Phương án khuyến nghị** | P… |
| **Vì sao** | *(một câu, gắn với `DRV` và `CON` cụ thể)* |
| **Chỗ phương án này THUA** | *(bắt buộc — phương án không thua ở đâu là phương án chưa được chấm thật)* |
| **Điều kiện kèm theo** | *(ví dụ: với điều kiện POC-01 đạt ≥ … ; POC fail ⇒ chuyển sang P…)* |
| **Quyết định này cần ai ký** | PO (ngân sách) · Tech Lead (khả thi) |
---
## 2. Bộ tiêu chí *(chốt TRƯỚC khi mô tả phương án)*
*Tiêu chí sinh từ `DRV` và `CON`. PO duyệt trọng số. Trọng số cộng lại = 100%.*
| # | Tiêu chí | Trọng số | Sinh từ | Đo bằng |
|---|---|---|---|---|
| 1 | Đáp ứng `DRV` mức Must | 25% | `DRV-01`, `DRV-02` | Có/không từng driver |
| 2 | Chi phí 3 năm | 20% | `CON-01` | Tiền (từ `TCO`) |
| 3 | Thời gian tới bản chạy được | 15% | `CON-02` | Tuần |
| 4 | Rủi ro kỹ thuật | 15% | — | Số `ARISK` mức cao |
| 5 | Phù hợp năng lực team & vận hành | 15% | `CON-04` | Kỹ năng phải tuyển/đào tạo |
| 6 | Khả năng tiến hoá | 10% | — | Chi phí đảo ngược |
**Trọng số do ai duyệt · ngày:** …
🔴 Chốt tiêu chí sau khi đã có phương án yêu thích là tự lừa mình. Nếu tiêu chí được sửa sau
khi chấm, ghi rõ vào Change Log **vì sao**.
---
## 3. Các phương án
### P0 — Không làm gì / giữ nguyên *(mốc so sánh, bắt buộc có)*
| | |
|---|---|
| **Mô tả** | Giữ quy trình hiện tại |
| **Chi phí 3 năm** | *(chi phí thủ công đang tốn — đây là con số dự án phải thắng)* |
| **Vì sao không chọn** | |
### P1 — <tên phương án>
| | |
|---|---|
| **Ý tưởng một câu** | |
| **Thành phần chính** | |
| **Mua gì / tự làm gì** | |
| **Dữ liệu nằm ở đâu, ai sở hữu** | |
| **Ai vận hành** | |
| **Thời gian tới bản chạy được** | … tuần |
| **Chi phí 3 năm** | *(tham chiếu `TCO` §…)* |
| **Rủi ro chính** | `ARISK-nn`, `ARISK-nn` |
| **Đảo ngược được không, tốn bao nhiêu** | |
**Sơ đồ mức khối** *(C4 Context — chỉ hộp lớn, chưa phải component)*
```mermaid
flowchart LR
```
### P2 — <tên phương án>
*(cùng cấu trúc)*
---
## 4. Bảng chấm điểm
*Thang 1–5. **Mỗi ô phải có một câu lý do** — ô không lý do là ô bịa.*
| Tiêu chí | Trọng số | P0 | P1 | P2 |
|---|---|---|---|---|
| 1. Đáp ứng `DRV` Must | 25% | | | |
| 2. Chi phí 3 năm | 20% | | | |
| 3. Thời gian | 15% | | | |
| 4. Rủi ro kỹ thuật | 15% | | | |
| 5. Năng lực team & vận hành | 15% | | | |
| 6. Khả năng tiến hoá | 10% | | | |
| **Tổng có trọng số** | 100% | | | |
**Lý do từng ô**
| Tiêu chí | P1 | P2 |
|---|---|---|
| 1 | | |
| 2 | | |
🔴 **Điểm tổng chênh nhau < 0.3 nghĩa là bộ tiêu chí chưa phân biệt được.** Đừng chọn theo
chênh lệch đó. Quay lại hỏi PO tiêu chí nào thực sự quan trọng nhất, hoặc chọn theo tiêu chí
phụ (thường là: cái nào đảo ngược rẻ hơn).
---
## 5. Phương án bị loại và lý do *(bắt buộc — quy tắc `D3`)*
| Phương án | Đã cân nhắc vì | Loại vì | Gắn với | Điều kiện nào thì xét lại |
|---|---|---|---|---|
| | | | `CON-nn` / `QAS-nnn` | |
*"Team quen công nghệ X" là lý do hợp lệ — nhưng phải viết thành `CON-nn` có tên, để sau này
biết quyết định gắn với con người chứ không phải với kỹ thuật.*
---
## 6. Bảng đánh đổi trình PO
*Dịch lựa chọn kỹ thuật thành ngôn ngữ PO hiểu được và quyết được trong một lần đọc.*
| Nếu chọn | Được | Mất | Tiền chênh 3 năm | Thời gian chênh |
|---|---|---|---|---|
| P1 | | | | |
| P2 | | | | |
## 7. Cắt gì thì giảm bao nhiêu
*Dùng khi `TCO` vượt `CON-01`. Cho PO lựa chọn thay vì chỉ báo tin xấu.*
| Cắt phần nào | Tiết kiệm/3 năm | Mất gì | `DRV` nào bị ảnh hưởng |
|---|---|---|---|
## 8. Giả định & Ngoài phạm vi
**Giả định** — `ASM-nn` ảnh hưởng tới lựa chọn này:
| ID | Giả định | Nếu sai thì phương án nào đổi |
|---|---|---|
**Ngoài phạm vi:**
-
## 9. Open Questions
| ID | Câu hỏi | Hỏi ai | Từ ngày | Chặn gì | Hệ quả nếu trả lời ngược |
|---|---|---|---|---|---|

View File

@@ -0,0 +1,132 @@
# CTX — Solution Context & Drivers — <PROJECT>
| | |
|---|---|
| **Version** | 1.0 |
| **Date** | YYYY-MM-DD |
| **Author** | <SA> (skill sa-1-context) |
| **Status** | 🟡 Draft |
| **Approved by** | PO: — · Tech Lead: — |
| **Source** | BRIEF_… v1.0 · biên bản … · dashboard … |
| **Scope** | <hệ thống / phạm vi kiến trúc> |
| **Confidence** | 🟡 Ước lượng có cơ sở |
## Change Log
| Version | Date | Người sửa | Thay đổi | ADR/DEC |
|---|---|---|---|---|
| 1.0 | YYYY-MM-DD | | Bản đầu | — |
> Sơ đồ thắng về **quan hệ và luồng**. Bảng/văn bản thắng về **ràng buộc và con số**.
---
## 1. Tóm tắt cho người quyết định
*Ba câu. Đọc xong biết bài toán kiến trúc là gì và cái gì đang bó tay ta.*
---
## 2. Driver — `DRV-nn`
*Áp lực kinh doanh ép ra hệ thống này. Nói được bằng tiền / thời gian / rủi ro / số người.
Không nói được ⇒ chưa phải driver, quay lại hỏi.*
| ID | Áp lực (định lượng) | Nguồn | Ai xác nhận · ngày | Thuộc tính chất lượng bị ép | Ưu tiên |
|---|---|---|---|---|---|
| `DRV-01` | | BRIEF §… GOAL-nn | | độ trễ · thông lượng · độ chính xác · sẵn sàng · bảo mật · chi phí | Must |
| `DRV-02` | | | | | Should |
**Cột "Thuộc tính chất lượng bị ép" là cầu nối sang GĐ2** — nó chính là danh sách `QAS` phải
lượng hoá. Driver không ép thuộc tính nào ⇒ có thể không phải việc của kiến trúc.
### 2.1 Định hướng khách gợi ý *(tham khảo, KHÔNG phải driver)*
| Khách nói | Đây là giải pháp cho vấn đề gì | Đã hỏi ngược chưa | `DRV` thật rút ra được |
|---|---|---|---|
| "muốn dùng microservices" | | ☐ | |
🔴 Mỗi dòng ở đây phải được hỏi ngược *"làm xong thì cái gì tốt lên, đo bằng gì"* trước khi
đưa vào bảng `DRV`.
---
## 3. Ràng buộc — `CON-nn`
*Thứ KHÔNG thương lượng được. Sở thích không phải ràng buộc.*
| ID | Nhóm | Ràng buộc | Nguồn (ai · ngày) | Cứng/Mềm | Hệ quả kiến trúc |
|---|---|---|---|---|---|
| `CON-01` | Tiền | Ngân sách hạ tầng ≤ … /tháng | PO · | Cứng | Loại phương án … |
| `CON-02` | Thời gian | | PM · | | |
| `CON-03` | Công nghệ | Bắt buộc cloud … vùng … | EA · | Cứng | |
| `CON-04` | Con người | Team … người · kỹ năng … · vận hành sau go-live: … | PM/SRE · | | Ranh giới service tối đa … (Conway) |
| `CON-05` | Pháp lý | Dữ liệu phải lưu tại … · luật áp dụng … | Legal · | Cứng | |
| `CON-06` | Hiện trạng | Bắt buộc tích hợp … · vendor khoá … | Tech Lead · | | |
**Cứng** = vi phạm thì dự án bị chặn. **Mềm** = đổi được nhưng tốn tiền/thời gian, ghi rõ tốn bao nhiêu.
### 3.1 Nhóm ràng buộc chưa có thông tin
| Nhóm | Ai phải trả lời | Đã hỏi ngày | `OQ` | Chặn gì |
|---|---|---|---|---|
---
## 4. Hiện trạng (AS-IS)
### 4.1 Sơ đồ hệ thống hiện tại
*C4 mức Context. Có legend. Nếu chưa có hệ thống nào ⇒ ghi rõ "chưa có", không bỏ trống mục.*
```mermaid
flowchart LR
```
### 4.2 Dữ liệu — số thật, không phải mô tả
| Nguồn dữ liệu | Bảng/tập chính | Số bản ghi | Tốc độ tăng | Chất lượng | Nguồn số |
|---|---|---|---|---|---|
| | | | /tháng | % bản ghi thiếu/sai: | truy vấn ngày … |
🔴 Không truy cập được dữ liệu thật ⇒ ghi `ASM-nn`, hạ `Confidence` toàn tài liệu xuống 🔴.
### 4.3 Tích hợp đang có
| Hệ thống | Giao thức | Ai sở hữu | SLA của họ | Tài liệu | Đã gọi thử chưa |
|---|---|---|---|---|---|
| | | | | đường dẫn | ☐ |
### 4.4 Vận hành — số thật
| Chỉ số | Giá trị hiện tại | Đỉnh ghi nhận | Nguồn |
|---|---|---|---|
| Traffic | /ngày | /giờ, ngày … | dashboard … |
| p95 latency | ms | ms | |
| Chi phí hạ tầng | /tháng | | hoá đơn tháng … |
| Sự cố 6 tháng qua | lần · tổng downtime … | | log sự cố |
🔴 **Đỉnh quan trọng hơn trung bình.** Trung bình 340 đơn/ngày với đỉnh 11.000 vào ngày khuyến
mãi là hai bài toán kiến trúc khác nhau. Luôn ghi cả hai cột.
---
## 5. Giả định — `ASM-nn`
| ID | Giả định | Cách xác minh | Hệ quả nếu sai | Chủ | Hạn |
|---|---|---|---|---|---|
| `ASM-01` | | | | | |
Giả định sai mà hệ quả lớn ⇒ nâng thành `ARISK` và xác minh ngay trong GĐ1.
## 6. Ngoài phạm vi
*Những thứ người đọc có thể tưởng là có.*
-
## 7. Open Questions
| ID | Câu hỏi | Hỏi ai | Từ ngày | Chặn gì | Hệ quả nếu trả lời ngược |
|---|---|---|---|---|---|
| `OQ-001` | | | | AG1 · `OPT` | |