Chuyển tới nội dung chính

Yêu cầu hạ tầng triển khai EVO LMS

Tài liệu này liệt kê phần cứng, mạng và dịch vụ để một đơn vị (trường) tự mua sắm hoặc rà soát năng lực hiện có nhằm vận hành EVO LMS. Các con số được đo trực tiếp từ một deployment đang chạy thực tế và đối chiếu với baseline stress test, không phải ước lượng cảm tính.

  • Quy mô mục tiêu: 4.000 sinh viên
  • Đỉnh thi thiết kế: 2.000 người đồng thời (bán đồng bộ)
  • Kiến trúc khuyến nghị: tách App + Database (2 server)
  • CDN / lưu trữ file: Cloudflare R2 (egress miễn phí)
Tóm tắt nhanh

Cấu hình khuyến nghị: App server 48 vCPU / 96 GB / 256 GB NVMe + Database server 16 vCPU / 64 GB / 512 GB NVMe. Nếu muốn gọn thành 1 máy: 64 vCPU / 128 GB / 1 TB NVMe.

1. Hiện trạng tham chiếu

Một deployment tham chiếu đang phục vụ 600 sinh viên trên duy nhất 1 server all-in-one (chạy toàn bộ khoảng 50 container: LMS, Auth, Exam, AI/RAG, Notification, Storage, Monitoring, Backup).

Thành phầnCấu hìnhGhi chú
CPU16 vCPUIntel Xeon E5-2696 v4 @ 2.2 GHz
RAM32 GBĐang dùng 23 GB, swap gần đầy
Ổ cứng256 GB SSDĐã dùng 94 GB (40%)
Nền tảngUbuntu 22.04Docker + Dokploy + Traefik
Máy tham chiếu đã bão hòa

Ở 600 sinh viên, máy đã dùng gần hết RAM và phải swap. Đây là mức tối thiểu chạy được, không còn dư. Vì vậy khi mở rộng lên 4.000 sinh viên cần nâng cấp thật sự, không chỉ là thêm buffer.

2. Căn cứ tính toán

Con số cấu hình không suy ra từ tổng số sinh viên, mà từ đỉnh người dùng đồng thời lúc thi - yếu tố ngốn CPU lớn nhất. Phần lớn RAM của máy tham chiếu là overhead nền tảng cố định (không phụ thuộc 600 hay 4.000 sinh viên).

Ba mốc đo được làm gốc:

MốcSố đoÝ nghĩa
Máy tham chiếu (600 SV)16 core / 32 GBNghẽn vì RAM (overhead cố định), không phải CPU. Vận hành thường ngày gần như không đụng CPU.
Stress test~860 req/s trên 16 coreSuy ra khoảng 50 req/s mỗi core. Fail 70% khi vượt 5.000 người đồng thời.
Production đại học lớn32 core / 62 GBTỷ lệ ~2 GB RAM cho mỗi vCPU, dùng làm chuẩn cân đối CPU/RAM.

Từ đó ước tính tải đỉnh cho kịch bản 2.000 người thi bán đồng bộ:

Tải đỉnh ~ 2.000 người x 0.4 req/s + burst lúc bắt đầu/nộp bài
~ 1.600 - 2.400 req/s
CPU cần ~ 2.400 req/s / 50 req/s mỗi core
~ 48 core cho tầng App
RAM đi kèm ~ 2 GB mỗi core (Gunicorn workers = 2 x core + 1, mỗi worker ~300 MB)
Vận hành thường ngày rất nhẹ

Khi không thi: 4.000 SV x ~15% online x ~0.2 req/s ~ 120 req/s, chỉ 16-32 core là thừa. Cấu hình lớn hoàn toàn là để nuốt đỉnh mùa thi.

3. Bảng năng lực theo đỉnh đồng thời

Bảng để đối chiếu nếu chính sách thi thay đổi. Dòng được đánh dấu ứng với kịch bản bán đồng bộ 2.000 người.

Đỉnh đồng thời (mùa thi)req/s (kể cả burst)CPU cầnRAM cầnGhi chú
500 - thi lệch ca nhiều đợt~250-50016-24 core48 GB1 server all-in-one là đủ
1.000~500-1.00024-32 core64 GB1 server, nên tách DB
2.000 - bán đồng bộ (đã chọn)~1.000-2.40048 core96-128 GBTách App + DB, hoặc scale-out 2 app node
4.000 - đồng bộ toàn trường~2.000-4.000+64-96 core128 GB+Bắt buộc scale-out nhiều app node

4. Cấu hình chốt cho đỉnh 2.000 đồng thời

Phương án A - Tách App + Database (khuyến nghị)

Database tách riêng nên không bị App giành CPU lúc đỉnh thi. Cân bằng chi phí và độ ổn định.

ServerCPURAMỔ cứngVai trò
App server48 vCPU96 GB256 GB NVMeDjango, Celery, go-proxy, Angular, Exam app, AI, Novu, Redis
DB server16 vCPU64 GB512 GB NVMe3 PostgreSQL (LMS/Auth/Exam), PgBouncer, Backup

Tổng: 64 vCPU / 160 GB.

Phương án B - 1 server all-in-one

Đơn giản nhất khi mua sắm và vận hành. Rủi ro: mùa thi App và DB tranh CPU của nhau, cần RAM lớn hơn vì PostgreSQL nằm chung máy.

ServerCPURAMỔ cứng
All-in-one64 vCPU128 GB1 TB NVMe

Phương án C - Scale-out (HA, linh hoạt theo đợt thi)

Linh hoạt nhất: bật thêm node mùa thi, tắt bớt lúc thường. Chịu lỗi tốt. Django và Exam app đều stateless nên đặt sau Traefik + PgBouncer, mở rộng chỉ cần thêm node.

ServerCPURAMỔ cứng
App node x224 vCPU mỗi node48 GB mỗi node200 GB NVMe
DB server16 vCPU64 GB512 GB NVMe
Nguyên tắc mở rộng

Vượt khoảng 32-48 core thì nên scale-out (thêm máy) thay vì scale-up (1 máy khổng lồ). Django và Exam app stateless nên nhân bản dễ, tránh được điểm chết đơn lẻ.

Lưu ý phần cứng: CPU nên là Intel Xeon / AMD EPYC đời gần (>= 2.5 GHz). Ổ cứng bắt buộc NVMe SSD vì database phụ thuộc IOPS. Vì file và video đẩy lên CDN (R2/GCS), đĩa local chủ yếu cho hệ điều hành, Docker, database, vector DB và log.

5. Danh mục dịch vụ chạy trên hệ thống

Toàn bộ chạy bằng Docker, không cần license (đều open-source).

NhómSố containerThành phần
LMS Core9Django backend (Gunicorn), Celery worker + beat, Flower, go-proxy (cache), Angular frontend, PostgreSQL, PgBouncer, Redis
Auth Service62 bản sao app (login + refresh token), Celery worker + beat, PostgreSQL, PgBouncer, Redis
Exam App6Backend, Nginx, Celery + beat, PostgreSQL, Redis. Hot path mùa thi
AI / RAG9AI backend, embedding + question-gen + grading worker, Milvus (vector DB) + etcd, LiteLLM proxy + Postgres + Redis. Tùy chọn
Notification (Novu)6API, WebSocket, worker, dashboard, MongoDB, Redis
Object Storage8SeaweedFS (master, 2 volume, filer, S3, WebDAV). Tùy chọn - thay bằng R2/GCS thì bỏ được
Monitoring3cAdvisor, node-exporter, promtail
Backup và Ingress3pgbackweb + DB, Traefik (reverse proxy + SSL tự động)

6. Chi phí vận hành hàng tháng (OPEX)

Đây là chi phí thuê bao, không phải phần cứng mua một lần. Cần dự trù riêng.

Hạng mụcNhà cung cấpƯớc tínhGhi chú
CDN / lưu trữ fileCloudflare R2~15-30 $/thángStorage 0.015 $/GB. Egress miễn phí - rất lợi vì sinh viên tải tài liệu nhiều
(Phương án CDN khác)Google Cloud Storagecao hơn nhiềuStorage tương đương nhưng egress ~0.08-0.12 $/GB, đắt khi tải file nhiều
Backup offsiteR2 / GCS~5-10 $/thángpgbackweb tự đẩy backup DB lên cloud
Video bài giảng (tùy chọn)Muxtheo phútChỉ cần nếu dùng video. Bỏ qua nếu chỉ dùng SCORM/tài liệu
AI (tùy chọn)LLM APItheo usageChấm bài, sinh câu hỏi, chatbot RAG. Tắt được nếu không dùng
Email / SMTPSES / SendGrid / Workspace~0-10 $/thángGửi thông báo + OTP đăng nhập
Tên miền + SSLNhà cung cấp domain~10-15 $/nămSSL miễn phí (Let's Encrypt qua Traefik)

7. Mạng, tên miền và hạ tầng phụ trợ

Hạng mụcYêu cầu
Đường truyền InternetTối thiểu 100 Mbps, khuyến nghị 500 Mbps - 1 Gbps, ưu tiên đối xứng (đỉnh đăng nhập/thi đồng loạt)
IP tĩnh publicTối thiểu 1 địa chỉ IPv4 tĩnh
Tên miền1 domain chính (vd lms.truong.edu.vn) + quyền tạo subdomain cho api / auth / exam / ai / storage / notification
FirewallMở cổng 80 và 443 ra Internet; SSH qua cổng tùy chỉnh, giới hạn IP quản trị
Nếu đặt on-premiseUPS + nguồn điện dự phòng, phòng máy có điều hòa / chống ẩm, người trực vận hành. Nếu không đủ điều kiện, khuyến nghị thuê VPS/cloud cho ổn định

8. Checklist rà soát cho nhà trường

  • App server 48 vCPU / 96 GB / 256 GB NVMe
  • DB server 16 vCPU / 64 GB / 512 GB NVMe (hoặc gộp all-in-one 64 vCPU / 128 GB / 1 TB)
  • Đường truyền >= 500 Mbps + 1 IP tĩnh public
  • Tên miền + quyền quản trị DNS
  • Tài khoản Cloudflare R2 (hoặc GCS) cho CDN + backup offsite
  • SMTP gửi email (SES / SendGrid / Google Workspace)
  • Tài khoản Mux cho video (tùy chọn)
  • Ngân sách LLM API cho tính năng AI (tùy chọn)
  • UPS + phòng máy chủ (nếu on-premise)

9. Ghi chú phương pháp

Mức tiêu thụ tài nguyên đo trực tiếp trên server đang vận hành (16 vCPU Xeon E5-2696 v4 / 32 GB / 256 GB SSD, khoảng 50 container) và đối chiếu baseline stress test (16 core = ~860 req/s, tương đương ~50 req/s mỗi core). Đỉnh thi thiết kế 2.000 người đồng thời (bán đồng bộ) là biến quyết định CPU/RAM; nếu chuyển sang thi đồng bộ toàn trường 4.000 người thì cần scale-out thêm app node theo bảng mục 3. Phần mềm nền tảng (Ubuntu LTS, Docker, Dokploy, Traefik) đều miễn phí, không phát sinh chi phí license.