177 lines
6.3 KiB
Markdown
177 lines
6.3 KiB
Markdown
# 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 |
|
||
|---|---|---|---|---|---|
|