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,175 @@
# INF — Infrastructure & Deployment Design — <PROJECT>
| | |
|---|---|
| **Version** | 1.0 |
| **Date** | YYYY-MM-DD |
| **Author** | <SA> (skill sa-2-architecture) |
| **Status** | 🟡 Draft |
| **Approved by** | **SRE/Ops: —** · Tech Lead: — |
| **Source** | SAD_… v1.0 · QAS_… v1.0 · TCO_… v1.0 |
| **Scope** | |
| **Confidence** | 🟡 |
## Change Log
| Version | Date | Người sửa | Thay đổi | ADR |
|---|---|---|---|---|
| 1.0 | | | Bản đầu | — |
> 🔴 **Tài liệu này phải khớp số với `TCO`** (quy tắc `D9`). Lệch nhau ⇒ một trong hai sai,
> không có khả năng thứ ba.
---
## 1. Tóm tắt
| | |
|---|---|
| **Cloud / vùng** | · ràng buộc lãnh thổ: `CON-05` |
| **Mô hình chạy** | VM / container / K8s / PaaS / serverless · `ADR-nnn` |
| **Chịu được mất gì** | một node / một AZ / một vùng |
| **RTO / RPO** | … / … · **lần diễn tập gần nhất:** … |
| **Chi phí/tháng ở tải dự kiến** | … *(khớp `TCO` §3)* |
## 2. Môi trường
| Môi trường | Mục đích | Cấu hình so với prod | Dữ liệu | Ai truy cập được |
|---|---|---|---|---|
| dev | | | dữ liệu sinh | |
| stg | **đo `QAS`** | | ẩn danh hoá | |
| prod | | 100% | thật | |
🔴 **Câu hỏi bắt buộc trả lời:** stg khác prod ở chỗ nào, và **chỗ khác đó có làm sai lệch kết
quả đo `QAS` không?** Đo hiệu năng trên máy nhỏ hơn 4 lần rồi kết luận "đạt" là tự lừa mình.
| `QAS` cần đo | Đo được trên stg? | Nếu không, đo ở đâu | Sai số ước tính |
|---|---|---|---|
## 3. Sơ đồ triển khai
```mermaid
flowchart TB
```
**Legend:** *(bắt buộc — ranh giới mạng, ranh giới vùng/AZ, hướng lưu lượng)*
| Thành phần | Loại máy/dịch vụ | Số bản | Vùng/AZ | Tự động scale | Chi phí/tháng |
|---|---|---|---|---|---|
| | | | | ngưỡng: … | |
| **Cộng** | | | | | *(khớp `TCO` §3)* |
## 4. Tính sẵn sàng (HA)
| Thành phần | Chịu được mất | Cơ chế chuyển đổi | Thời gian chuyển | Tự động? | Đã thử chưa |
|---|---|---|---|---|---|
| Ứng dụng | 1 node | LB bỏ node lỗi | … s | ✅ | ☐ |
| CSDL | 1 AZ | failover replica | … s | | ☐ |
**Điểm hỏng đơn (SPOF) còn lại**
| Thành phần | Vì sao chưa dự phòng | Rủi ro | Kế hoạch |
|---|---|---|---|
🔴 Hệ thống nào cũng còn SPOF. Liệt kê ra là chuyên nghiệp; giả vờ không có mới là vấn đề.
## 5. Khôi phục thảm hoạ (DR)
| | |
|---|---|
| **Kịch bản thảm hoạ tính tới** | mất một vùng / hỏng dữ liệu / xoá nhầm / ransomware |
| **RTO mục tiêu** | … *(nguồn: `QAS-nnn`, PO chấp nhận ngày …)* |
| **RPO mục tiêu** | … |
| **Cách khôi phục** | *(các bước, ai làm, tài liệu runbook ở đâu)* |
| **RTO đo được thực tế** | … *(chưa đo ⇒ 🔴)* |
| **Lần diễn tập gần nhất** | … *(chưa từng ⇒ `Confidence` 🔴 + tạo `ARISK`)* |
| **Tần suất diễn tập** | |
🔴 **RTO/RPO chưa diễn tập là RTO/RPO trên giấy.** Con số duy nhất có giá trị là con số đo
được trong một lần diễn tập thật.
## 6. Khả năng mở rộng
| Thành phần | Scale kiểu gì | Ngưỡng kích hoạt | Giới hạn trên | Thời gian scale xong | Nút thắt kế tiếp |
|---|---|---|---|---|---|
| | ngang / dọc | CPU > …% trong … phút | … bản | … s | |
**Nút thắt khi tải × 3** *(kịch bản B của `TCO`)*
| Thứ tự | Thành phần nghẽn trước | Ở mức tải nào | Cách gỡ | Chi phí |
|---|---|---|---|---|
🔴 Scale ngang tầng ứng dụng thường đẩy nút thắt xuống CSDL. Ghi rõ nút thắt kế tiếp — nếu
không, việc scale sẽ tốn tiền mà không cải thiện gì.
## 7. Triển khai
| | Quyết định | `ADR` |
|---|---|---|
| Chiến lược | blue-green / canary / rolling | |
| Thời gian downtime cho phép | *(khớp ngân sách lỗi ở `QAS`)* | |
| **Cách rollback** | · rollback mất bao lâu | |
| Migration schema | tương thích ngược không? triển khai mấy bước? | |
| Cờ tính năng (feature flag) | có/không · nơi quản lý | |
| Ai được bấm deploy prod | | |
🔴 **Migration schema và deploy code phải tương thích ngược với nhau**, nếu không thì rollback
code sẽ gặp schema mới và hỏng. Quy tắc: đổi schema theo hai bước (thêm trước, bỏ sau).
## 8. Quan sát được (Observability)
| Loại | Công cụ | Ghi gì | Giữ bao lâu | Ai đọc | Chi phí/tháng |
|---|---|---|---|---|---|
| Log | | | | | |
| Metric | | | | | |
| Trace | | tỉ lệ lấy mẫu: … | | | |
| **Cộng** | | | | | *(khớp `TCO` §3)* |
**Cảnh báo**
| Cảnh báo | Điều kiện | Mức | Báo cho ai | `QAS` |
|---|---|---|---|---|
| | | trang/ngay · vé/giờ hành chính | | |
🔴 **Cảnh báo không ai xử lý là cảnh báo sẽ bị tắt tiếng.** Mỗi cảnh báo phải có người nhận và
một runbook — không có thì đừng tạo cảnh báo đó.
**Correlation id** — cách truyền xuyên hệ thống: *(khớp `SAD` §9)*
## 9. Vận hành thường ngày
| Việc | Ai làm | Tần suất | Tài liệu |
|---|---|---|---|
| Trực sự cố (on-call) | | | escalation: … |
| Vá bảo mật | | | |
| Kiểm tra backup khôi phục được | | | |
| Rà chi phí | | hàng tháng | |
**Năng lực đội vận hành** *(từ `CON-04`)*: … người · kỹ năng có · **kỹ năng còn thiếu:** …
⇒ chi phí đào tạo ghi ở `TCO` §5.
## 10. Đối chiếu với `TCO`
| Hạng mục | `INF` §3+§8 | `TCO` §3 | Khớp |
|---|---|---|---|
| Compute | | | ☐ |
| CSDL | | | ☐ |
| Observability | | | ☐ |
| Non-prod | | | ☐ |
| **Tổng/tháng** | | | ☐ |
## 11. Giả định & Ngoài phạm vi
**Giả định:**
| ID | Giả định | Cách xác minh | Nếu sai |
|---|---|---|---|
**Ngoài phạm vi:**
- *(ví dụ: không hỗ trợ multi-region active-active; DR dựa trên khôi phục backup, RTO 4 giờ)*
## 12. 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 |
|---|---|---|---|---|---|