ระบบตัวอย่างสำหรับร้านฟาสต์ฟู้ด ประกอบด้วย Frontend (React + Vite), Backend (Node.js + Express + MongoDB/Mongoose), รองรับ Docker/Kubernetes และ CI/CD (GitHub Actions)
fastfood-dixel-main/ ├─ Dockerfile ├─ src/ # backend แบบ monolithic ├─ frontend/ # React + Vite + TS ├─ backend/ # backend แบบโมดูลาร์ ├─ k8s/ # manifests สำหรับ K8s └─ .github/workflows/ # GitHub Actions CI/CD
- Frontend: React + Vite + TypeScript
- Backend: Node.js + Express, Mongoose (MongoDB)
- Infra: Docker, Kubernetes (Deployment/Service/HPA), GitHub Actions
cd backend
npm install
npm run dev # ใช้ nodemonค่าเริ่มต้น:
- API → http://localhost:3000
- MongoDB → mongodb://localhost:27017/fastfood
cd frontend
npm install
npm run devค่าเริ่มต้น: http://localhost:5173
docker build -t fastfood-backend .
docker run -p 3000:3000 -e MONGO_URL="mongodb://host.docker.internal:27017/fastfood" fastfood-backendkubectl apply -f k8s/mongodb.yaml
kubectl apply -f k8s/backend.yaml
kubectl apply -f k8s/hpa.yaml- POST /order — สร้างคำสั่งซื้อ
- GET /orders — ดูคำสั่งซื้อทั้งหมด
- POST /api/purchases — บันทึกการสั่งซื้อ (หลายรายการ)
- GET /api/purchases/:userId — ประวัติการซื้อ
Workflow (.github/workflows/ci-cd.yml) จะ build & push Docker image และ deploy ไปยัง Kubernetes cluster อัตโนมัติ
- backend/server.js → import ของ purchaseRoutes ไม่ถูกต้อง ควรแก้เป็น ./purchaseRoutes.js
- backend/db.js → ยัง fix ค่า Mongo URL ควรใช้ .env
- k8s/backend.yaml → MongoDB service name ต้องแก้เป็น mongodb
- Dockerfile → ต้องตรวจสอบให้ตรงกับ scripts/dependencies ของ root
ยังไม่พบไฟล์ LICENSE — แนะนำเพิ่ม MIT หรือ Apache-2.0
เราใช้สคริปต์ loadtest/loadtest.js สำหรับยิงโหลดไปยัง Backend
cd loadtest
node loadtest.jsการทดสอบนี้จะจำลองการสั่งซื้อพร้อมกันหลายครั้ง เพื่อตรวจสอบพฤติกรรมการ scaling ของระบบ
ผลลัพธ์: เมื่อโหลดเพิ่มขึ้น HPA สามารถเพิ่มจำนวน Pod ของ backend ได้อัตโนมัติ
- ✅ Deployment สำเร็จบน Kubernetes cluster
- ✅ GitHub Actions Pipeline ทำงานครบ (Build → Push → Deploy)
- ✅ Load Test สามารถ trigger การทำงานของ HPA
- ✅ ระบบ Auto-scaling เพิ่มจำนวน Pod ของ backend ได้ตามโหลด