Files
sys-analysis-design/.claude/skills/sa-2-architecture/templates/infrastructure-design.md
2026-09-22 13:46:36 +07:00

177 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
<!-- archify: architecture · diagrams/INF_deployment.architecture.json -->
```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 |
|---|---|---|---|---|---|