Some checks failed
CI / Lint → Typecheck → Test → Build (22) (push) Failing after 29s
CI / E2E Tests (push) Has been skipped
CodeQL Analysis / CodeQL (javascript-typescript) (push) Failing after 2m42s
Deploy / Build Web Image (push) Failing after 27s
Deploy / Build AI Services Image (push) Failing after 29s
E2E Tests / Playwright E2E (push) Failing after 43s
Deploy / Build API Image (push) Failing after 1m31s
Security Scanning / Dependency Audit (pnpm) (push) Failing after 6s
Security Scanning / Trivy Scan — API Image (push) Failing after 5m35s
Security Scanning / Trivy Scan — AI Services Image (push) Failing after 3m45s
Deploy / Deploy to Staging (push) Has been skipped
Deploy / Smoke Test Staging (push) Has been skipped
Deploy / Deploy to Production (push) Has been skipped
Deploy / Smoke Test Production (push) Has been skipped
Deploy / Rollback Staging (push) Has been skipped
Deploy / Rollback Production (push) Has been skipped
Security Scanning / Trivy Scan — Web Image (push) Failing after 13m51s
Security Scanning / Trivy Filesystem Scan (push) Failing after 14m46s
Security Scanning / Security Gate (push) Has been cancelled
279 lines
11 KiB
Markdown
279 lines
11 KiB
Markdown
# 📚 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*
|