Luật Hạ tầng VPS — MỌI THỨ TRÊN MỘT SERVER
LUẬT HẠ TẦNG VPS — MỌI THỨ TRÊN MỘT SERVER
Luật bổ sung Hiến pháp Kiến trúc — Điều 5 Tầng 1 Ban hành: S109 (11/03/2026) | Huyen phê duyệt
search_knowledge("luật hạ tầng VPS infrastructure")
Khoản 1: Nguyên tắc tối cao — VPS-FIRST
Toàn bộ hệ thống Incomex chạy trên MỘT VPS duy nhất (Contabo Cloud VPS, EU). Mọi dữ liệu, mọi service, mọi database nằm trên VPS. Khi cần chuyển nhà = bê cả server — không phải lo đồng bộ nhiều nơi.
Dịch vụ bên ngoài chỉ được dùng khi VPS KHÔNG THỂ thay thế VÀ chi phí hợp lý. Hiện tại duy nhất: Google Secret Manager (bảo mật cao, chi phí ~$2/tháng).
Bài học lịch sử: Cấu trúc GCP trước đây (App Engine + Cloud Run + Cloud SQL + Firestore + GCS + Firebase + Artifact Registry) do Gemini tư vấn, quá phức tạp cho quy mô Incomex, chi phí vượt kiểm soát (~$58/tháng → dự báo $70+/tháng) trong khi VPS chỉ $8/tháng chạy mọi thứ ổn định.
Root cause chi phí: VPS đặt EU, GCP services đặt Singapore (asia-southeast1). Cross-region data transfer là SKU đắt nhất: Firestore Internet Data Transfer Out +1,535% sau khi chuyển VPS.
Khoản 2: Kiến trúc Database — POSTGRESQL LÀ ĐÍCH ĐẾN
HIỆN TẠI (2026-03):
├── MySQL 8.x ← Directus database (ĐANG DÙNG)
├── PostgreSQL 16.x ← Đã cài trên VPS, sẵn sàng
├── Qdrant ← Vector database (ĐANG DÙNG, giữ nguyên)
└── (Firestore - GCP) ← SẼ CHUYỂN về PostgreSQL
ĐÍCH ĐẾN (2026-Q2):
├── PostgreSQL 16.x ← Database CHÍNH DUY NHẤT
│ ├── Directus (sau migration MySQL → PG)
│ ├── Metadata (thay Firestore)
│ ├── Chatwoot (planned)
│ ├── Kestra (planned)
│ └── Chat/Event logs (JSONB)
├── Qdrant ← Vector search chuyên dụng (giữ nguyên)
└── (MySQL retired)
Quy tắc database:
- PostgreSQL là database quan hệ MẶC ĐỊNH cho mọi service mới
- MySQL chỉ duy trì cho Directus hiện tại — sẽ migrate sang PostgreSQL khi ổn định
- Qdrant giữ nguyên cho vector search — chuyên dụng, hiệu suất cao
- KHÔNG thêm database engine mới ngoài PostgreSQL + Qdrant
- Dữ liệu JSON/NoSQL: PostgreSQL JSONB đủ mạnh cho chat logs, metadata, events. Không cần MongoDB/Firestore
- Vector search bổ sung: pgvector có thể dùng bên cạnh Qdrant cho simple cases, nhưng Qdrant vẫn là chính
Tại sao PostgreSQL, không MySQL:
- JSONB native: Query JSON data nhanh, index được — MySQL JSON chậm hơn đáng kể
- pgvector: Vector search tích hợp (bổ sung Qdrant cho simple cases)
- Chatwoot + Kestra: Cả hai dùng PostgreSQL — 1 engine thay vì 2
- Directus khuyến nghị: PostgreSQL là first-class citizen trong Directus
- Community + ecosystem: Mạnh hơn MySQL cho use cases phức tạp
Khoản 3: Lưu trữ File — LOCAL STORAGE
/opt/incomex/
├── docker/ # Docker Compose + .env
├── data/
│ ├── storage/ # Files (thay GCS Buckets)
│ │ ├── uploads/ # User uploads
│ │ ├── knowledge/# Knowledge documents
│ │ ├── exports/ # Generated exports
│ │ ├── snapshots/# Qdrant snapshots
│ │ └── logs/ # App logs archive
│ ├── mysql/ # MySQL data (Docker volume)
│ ├── postgres/ # PostgreSQL data (Docker volume)
│ └── qdrant/ # Qdrant data (Docker volume)
├── backups/ # Backup staging
├── scripts/ # Operational scripts
├── logs/ # Application logs
└── config/ # Environment configs
Quy tắc storage:
- Files lưu local trên NVMe (100GB, mở rộng ~$3/100GB)
- Nginx serve static files cho public access (thay GCS public URLs)
- Backup: daily rsync/snapshot. Offsite backup qua rclone (S3-compatible hoặc 2nd VPS)
- KHÔNG dùng GCS Buckets cho production data
Khoản 4: Dịch vụ bên ngoài — DANH SÁCH TRẮNG
Chỉ các dịch vụ sau được phép dùng:
| Dịch vụ | Lý do | Chi phí |
|---|---|---|
| Google Secret Manager | Bảo mật cao, ổn định | ~$2/tháng |
| GitHub | Source code, CI/CD, Actions | Free |
| DNS (Mắt Bão/Cloudflare) | Domain management | Included |
| Let's Encrypt | SSL certificates | Free |
Mọi dịch vụ khác cần Huyen phê duyệt trước khi dùng.
Khoản 5: Docker Stack mục tiêu
services:
nginx: # 80/443 — Reverse proxy + SSL + static files
nuxt: # 3000 — Frontend SSR
directus: # 8055 — CMS (MySQL hiện tại → PostgreSQL sau)
agent-data: # 8000 — Knowledge API
mysql: # 3306 — Directus DB (sẽ retire)
postgres: # 5432 — PostgreSQL 16 (metadata + tương lai)
qdrant: # 6333 — Vector search
Khoản 6: Chi phí mục tiêu
| Hạng mục | Chi phí/tháng |
|---|---|
| VPS Contabo | $8 (nâng $12 khi cần) |
| Secret Manager | ~$2 |
| Tổng | ~$10/tháng |
So với GCP era: tiết kiệm ~$56/tháng = $672/năm.
Khoản 7: Mở rộng (Scale)
- Nâng spec: $8→$12→$20 (Contabo upgrade)
- Thêm disk: ~$3/100GB NVMe bổ sung
- Chuyển VPS: Snapshot → restore trên VPS mới = "bê cả cục"
- KHÔNG quay lại managed cloud trừ khi scale > 1 server cần orchestration
Khoản 8: GCP — Chỉ còn Secret Manager
Project github-chatgpt-ggcloud sau migration:
- ✅ GIỮ: Secret Manager (8 secrets)
- ❌ DISABLE/XÓA: App Engine, Cloud Run, Firestore, GCS Buckets, Artifact Registry, Firebase Hosting
- Billing target: ≤₫52K/tháng ($2)
Luật Hạ tầng VPS v1.0 | Ban hành S109 | Bổ sung Điều 5 Tầng 1 Hiến pháp Kiến trúc