init git
This commit is contained in:
@@ -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 |
|
||||
|---|---|---|---|---|---|
|
||||
Reference in New Issue
Block a user