# 📚 GoodGo Platform — Tài liệu Hạ tầng

Thư mục này chứa **ba tài liệu vận hành toàn diện** dành cho hạ tầng GoodGo Platform.

## 📖 Các Tệp Tài liệu

### 1. **INFRASTRUCTURE_RUNBOOK.md** (1.458 dòng)
**→ Đọc tài liệu này để có tài liệu tham chiếu vận hành đầy đủ**

Hướng dẫn toàn diện bao gồm:
- ✅ Tóm tắt điều hành (tổng quan 12+ dịch vụ)
- ✅ Danh sách đầy đủ các dịch vụ kèm cổng, kiểm tra sức khoẻ, phụ thuộc
- ✅ Đặc tả Docker Compose (môi trường dev, prod, CI)
- ✅ Tầng cơ sở dữ liệu (PostgreSQL 16 + PostGIS, 22 mô hình Prisma)
- ✅ Gộp kết nối (cấu hình PgBouncer, chế độ giao dịch)
- ✅ Chiến lược sao lưu & khôi phục (sao lưu tự động hàng ngày, xác minh)
- ✅ Bộ nhớ đệm & tìm kiếm (Redis giảm cấp nhẹ nhàng, Typesense toàn văn)
- ✅ Giám sát & quan sát (Prometheus, bảng điều khiển Grafana, nhật ký Loki)
- ✅ Tích hợp thanh toán (VNPay, MoMo, ZaloPay, xử lý callback)
- ✅ Kiểm tra sức khoẻ (liveness, readiness, probe theo phụ thuộc)
- ✅ Tài liệu tham chiếu đầy đủ biến môi trường
- ✅ Quy trình triển khai (CI/CD GitHub Actions, bản dựng Docker)
- ✅ Hướng dẫn xử lý sự cố chi tiết với 7+ vấn đề phổ biến
- ✅ Quy trình khẩn cấp và truy vấn Prometheus

**Dùng khi:** Tạo runbook, điều tra sự cố, giới thiệu thành viên mới vào đội vận hành

---

### 2. **INFRASTRUCTURE_QUICK_REFERENCE.md** (222 dòng)
**→ Đọc tài liệu này để tra cứu nhanh**

Tài liệu tham chiếu nhanh bao gồm:
- 🚀 Lệnh khởi động nhanh (dev, prod, CI)
- 📊 Bản đồ dịch vụ với cổng và kiểm tra sức khoẻ
- 🗄️ Tổng quan cơ sở dữ liệu (lịch sao lưu, gộp kết nối)
- 💾 Tóm tắt bộ nhớ đệm & tìm kiếm (tính năng Redis, Typesense)
- 📈 Liên kết bảng điều khiển giám sát
- 💳 Tóm tắt cổng thanh toán
- 🏥 Tài liệu tham chiếu endpoint kiểm tra sức khoẻ
- 🔐 Biến môi trường quan trọng
- 📦 Ảnh container triển khai
- 🆘 Các bước xử lý sự cố phổ biến (5 cách khắc phục nhanh)
- 📝 Vị trí tệp quan trọng và liên kết
- 📞 Lệnh Docker thường dùng

**Dùng khi:** Gỡ lỗi nhanh, tra cứu ca trực, kiểm tra sức khoẻ nhanh

---

### 3. **INFRASTRUCTURE_AUDIT.md** (1.246 dòng)
**→ Đọc tài liệu này để xem toàn bộ lịch sử kiểm tra**

Kiểm tra chi tiết bao gồm:
- Nội dung tệp cấu hình thô
- Phân tích từng dòng của từng dịch vụ
- Đặc tả biến môi trường
- Sơ đồ luồng callback thanh toán (dạng văn bản)
- Chi tiết cài đặt kiểm tra sức khoẻ
- Quy trình xác minh sao lưu
- Các giai đoạn quy trình CI/CD

**Dùng khi:** Xác minh độ chính xác tài liệu hạ tầng, kiểm toán tuân thủ

---

## 🎯 Điều hướng Nhanh

### Theo Vai trò

**🔧 Kỹ sư DevOps/SRE**
1. Bắt đầu: INFRASTRUCTURE_QUICK_REFERENCE.md (tổng quan 5 phút)
2. Tìm hiểu sâu: INFRASTRUCTURE_RUNBOOK.md (phần 2-3, 7, 11)
3. Tham chiếu: INFRASTRUCTURE_AUDIT.md (để xem cấu hình thô)

**💼 Quản lý Kỹ thuật/Trưởng nhóm Kỹ thuật**
1. Bắt đầu: INFRASTRUCTURE_RUNBOOK.md (phần 1: Tóm tắt Điều hành)
2. Chi tiết: INFRASTRUCTURE_RUNBOOK.md (phần 2-6, 10)

**🚀 Kỹ sư Trực**
1. Bắt đầu: INFRASTRUCTURE_QUICK_REFERENCE.md (toàn bộ tài liệu)
2. Xử lý sự cố: INFRASTRUCTURE_RUNBOOK.md (phần 12)
3. Gỡ lỗi: INFRASTRUCTURE_AUDIT.md (nhật ký/cấu hình thô nếu cần)

**👤 Thành viên Mới**
1. Bắt đầu: INFRASTRUCTURE_QUICK_REFERENCE.md (tổng quan)
2. Tìm hiểu: INFRASTRUCTURE_RUNBOOK.md (phần 1-6)
3. Thực hành: Dùng các lệnh phổ biến từ Quick Reference

---

## 🔍 Câu hỏi Thường gặp & Nơi Tìm Câu trả lời

| Câu hỏi | Tài liệu | Phần |
|----------|----------|------|
| "Có bao nhiêu dịch vụ đang chạy?" | Runbook | 1. Tóm tắt Điều hành |
| "Tôi cần biết những cổng nào?" | Quick Reference | 📊 Bản đồ Dịch vụ |
| "Cơ sở dữ liệu được sao lưu thế nào?" | Runbook | 8. Sao lưu & Khôi phục |
| "Callback thanh toán thất bại, làm gì?" | Runbook | 12. Xử lý Sự cố (Callback Thanh toán) |
| "Redis bị lỗi, ứng dụng có hoạt động không?" | Runbook | 5. Bộ nhớ đệm & Tìm kiếm (Giảm cấp Nhẹ nhàng) |
| "Làm sao khởi động lại một dịch vụ?" | Quick Reference | 📞 Lệnh Thường dùng |
| "Cấu hình giám sát như thế nào?" | Runbook | 6. Giám sát & Quan sát |
| "Biến môi trường ở đâu?" | Runbook | 9. Biến Môi trường |
| "Làm sao triển khai lên production?" | Runbook | 11. Quy trình Triển khai |
| "Kiểm tra sức khoẻ làm gì?" | Runbook | 7. Kiểm tra Sức khoẻ |

---

## 📊 Tổng quan Hạ tầng

```
Development Environment
├── 12 Services (no resource limits)
├── PostgreSQL 16 + PostGIS (5432)
├── Redis 7 (6379, 256MB)
├── Typesense 27.1 (8108)
├── Prometheus (9090, 15-day retention)
├── Grafana (3002, 7 dashboards)
├── Loki (3100, 15-day logs)
└── API/Web/AI services

Production Environment
├── 14 Services (with resource limits, security hardening)
├── PgBouncer (6432, 20-connection pool)
├── PostgreSQL 16 + PostGIS (5432)
├── Redis 7 (6379, 512MB, password auth)
├── Typesense 27.1 (8108)
├── Prometheus (9090, 30-day retention)
├── Grafana (3002, secrets management)
├── Loki (3100, 15-day logs)
└── API/Web/AI services (zero-downtime deployments)

CI/E2E Environment
├── 4 Services (tmpfs for speed)
├── PostgreSQL test DB
├── Redis (no persistence)
└── Typesense + MinIO (tmpfs)
```

---

## 🔗 Tệp Liên quan trong Kho lưu trữ

```
goodgo-platform-ai/
├── README_INFRASTRUCTURE.md (TỆP NÀY)
├── INFRASTRUCTURE_RUNBOOK.md (Tài liệu tham chiếu đầy đủ)
├── INFRASTRUCTURE_QUICK_REFERENCE.md (Tra cứu nhanh)
├── INFRASTRUCTURE_AUDIT.md (Kiểm tra chi tiết)
│
├── docker-compose.yml (Môi trường Dev)
├── docker-compose.prod.yml (Production)
├── docker-compose.ci.yml (Testing)
│
├── .env.example (Mẫu biến môi trường)
├── prisma/schema.prisma (Mô hình dữ liệu, 22 mô hình Prisma)
│
├── infra/pgbouncer/ (Gộp kết nối)
├── monitoring/ (Cấu hình Prometheus, Grafana, Loki)
├── scripts/backup/ (Script sao lưu và xác minh)
│
└── .github/workflows/ (Quy trình CI/CD)
    ├── ci.yml (Lint → Test → Build)
    ├── deploy.yml (Dựng ảnh, triển khai)
    ├── e2e.yml (Kiểm thử đầu-cuối)
    ├── backup-verify.yml (Xác minh sao lưu hàng tuần)
    └── security.yml (Quét phụ thuộc)
```

---

## 🆘 Hỗ trợ Khẩn cấp

### "API bị lỗi. Tôi cần kiểm tra gì?"
1. Đọc: INFRASTRUCTURE_QUICK_REFERENCE.md → 🆘 Xử lý Sự cố
2. Lệnh nhanh:
   ```bash
   docker compose ps api
   docker compose logs api --tail=50
   curl http://localhost:3001/health/ready
   ```
3. Vẫn chưa giải quyết được: Xem INFRASTRUCTURE_RUNBOOK.md → 12. Xử lý Sự cố

### "Tôi cần triển khai lên production"
1. Đọc: INFRASTRUCTURE_QUICK_REFERENCE.md → 📦 Triển khai
2. Tiếp theo: INFRASTRUCTURE_RUNBOOK.md → 11. Quy trình Triển khai
3. Xem lại: `.github/workflows/deploy.yml` để biết các bước thực tế

### "Cơ sở dữ liệu chậm"
1. Đọc: INFRASTRUCTURE_RUNBOOK.md → 4. Tầng Cơ sở Dữ liệu (Gộp Kết nối)
2. Kiểm tra: INFRASTRUCTURE_QUICK_REFERENCE.md → 🆘 "Gộp kết nối cơ sở dữ liệu đầy?"
3. Truy vấn: Dùng truy vấn Prometheus từ INFRASTRUCTURE_RUNBOOK.md

### "Làm sao khôi phục từ bản sao lưu?"
1. Đọc: INFRASTRUCTURE_RUNBOOK.md → 8. Sao lưu & Khôi phục
2. Các bước: Phần "Restore from Backup" với lệnh chính xác

---

## 📈 Chỉ số Chính & SLO

Từ phần giám sát trong INFRASTRUCTURE_RUNBOOK.md:

| Chỉ số | Cảnh báo | Nghiêm trọng | Nguồn |
|--------|---------|----------|--------|
| Độ trễ p99 API | > 1s (5 phút) | > 3s (3 phút) | Histogram Prometheus |
| p99/endpoint API | > 2s (5 phút) | N/A | Prometheus |
| Tỷ lệ lỗi 5xx | > 1% (5 phút) | N/A | Prometheus |
| Phản hồi cơ sở dữ liệu | Được giám sát | Được giám sát | Bảng điều khiển Grafana |
| Khả dụng Redis | Giảm cấp nhẹ nhàng | Giảm cấp nhẹ nhàng | Ứng dụng tiếp tục trên DB |

Bảng điều khiển có sẵn tại `http://localhost:3002` (Grafana):
- API Latency
- API Overview
- Database Metrics
- Logs & Errors
- Search Analytics
- Web Vitals
- Business Metrics

---

## 🔐 Lưu ý Bảo mật

Từ phần biến môi trường trong INFRASTRUCTURE_RUNBOOK.md:

**QUAN TRỌNG (Production):**
- JWT_SECRET phải có ít nhất 32 ký tự (tạo: `openssl rand -base64 48`)
- KYC_ENCRYPTION_KEY phải là 64 ký tự hex (tạo: `openssl rand -hex 32`)
- Tất cả thông tin xác thực cổng thanh toán phải được luân chuyển định kỳ
- Redis yêu cầu xác thực bằng mật khẩu trong môi trường production
- Container Docker chạy với người dùng không phải root (người dùng node)
- Hệ thống tệp chỉ đọc cho container ứng dụng
- Đặt cờ no new privileges

---

## 📞 Quy trình Leo thang

1. **Vấn đề Khẩn cấp?** → INFRASTRUCTURE_QUICK_REFERENCE.md
2. **Vấn đề Phức tạp?** → INFRASTRUCTURE_RUNBOOK.md phần 12
3. **Cần Lịch sử Kiểm tra?** → INFRASTRUCTURE_AUDIT.md
4. **Vẫn Chưa Giải quyết?** → Kiểm tra .github/workflows/ hoặc lịch sử git

---

## 📝 Cập nhật Tài liệu

Các tài liệu này được tạo vào **ngày 11 tháng 4 năm 2026** từ một cuộc kiểm tra hạ tầng toàn diện của monorepo GoodGo Platform.

**Để giữ tài liệu luôn cập nhật:**
- Cập nhật tài liệu này khi thêm dịch vụ mới
- Xem lại cấu hình giám sát sau khi thay đổi hạ tầng
- Kiểm thử quy trình sao lưu hàng tháng (đã được tự động hoá)
- Cập nhật runbook dựa trên postmortem sự cố

---

## 🎓 Lộ trình Học tập

**Dành cho thành viên mới:**
1. **Ngày 1:** Đọc INFRASTRUCTURE_QUICK_REFERENCE.md (30 phút)
2. **Ngày 2:** Đọc INFRASTRUCTURE_RUNBOOK.md phần 1-3 (1 giờ)
3. **Ngày 3:** Thực hành lệnh từ Quick Reference cùng người hướng dẫn
4. **Ngày 4:** Đọc INFRASTRUCTURE_RUNBOOK.md phần 4-7 (1,5 giờ)
5. **Ngày 5:** Đọc INFRASTRUCTURE_RUNBOOK.md phần 8-12 (1,5 giờ)
6. **Tuần 2:** Theo sát kỹ sư trực, thực hành xử lý sự cố
7. **Tuần 3:** Nhận ca trực

---

**Cập nhật lần cuối:** Ngày 11 tháng 4 năm 2026  
**Phiên bản:** 1.0  
**Người bảo trì:** GoodGo Platform SRE Team

---

*Để đặt câu hỏi hoặc cập nhật tài liệu này, liên hệ: devops@goodgo.vn*
