Giới thiệu dự án
Thương mại điện tử (E-Commerce) tại Việt Nam đang trải qua giai đoạn bùng nổ mạnh mẽ với quy mô thị trường năm 2023 đạt hơn 20,5 tỷ USD, tăng trưởng khoảng 25% so với năm 2022. Trong đó, phân khúc thiết bị điện tử, vi xử lý và linh kiện số chiếm tỷ trọng hơn 28% tổng giá trị giao dịch trực tuyến (GMV). Sự chuyển dịch từ mô hình bán hàng truyền thống sang nền tảng số hóa đã đặt ra yêu cầu cấp thiết về các hệ thống website thương mại điện tử chuyên biệt: vừa có khả năng xử lý danh mục sản phẩm phức tạp với nhiều thông số kỹ thuật, vừa đảm bảo tốc độ phản hồi nhanh chóng, tính năng thanh toán trực tuyến an toàn và quản trị đơn hàng tập trung.
Tuy nhiên, các doanh nghiệp vừa và nhỏ (SMEs) kinh doanh thiết bị điện tử hiện nay đối mặt với nhiều rào cản kỹ thuật:
- Hệ thống cũ (Legacy monolith) dựa trên PHP thuần hoặc CMS đóng gói sẵn gây nghẽn cổ chai I/O khi lưu lượng truy cập tăng cao.
- Trải nghiệm người dùng (UX) bị gián đoạn do cơ chế tải lại toàn bộ trang (Full page reload).
- Thiếu cơ chế phân quyền quản trị chi tiết (Granular RBAC) giữa nhân viên xử lý đơn hàng và quản trị viên hệ thống.
- Nguy cơ thất thoát dữ liệu và lỗi bất đồng bộ trạng thái đơn hàng khi tích hợp cổng thanh toán trực tuyến.
Đề tài khóa luận tốt nghiệp "Xây dựng Website Kinh doanh Thiết bị Điện tử" do sinh viên Đặng Văn Thành (MSSV: 19110287) và Cao Xuân Thắng (MSSV: 19119222), dưới sự hướng dẫn của ThS. Nguyễn Trần Thi Văn (Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh - HCMUTE), được triển khai nhằm giải quyết triệt để các bài toán trên.
Mục tiêu cụ thể của dự án:
- Xây dựng ứng dụng đơn trang (Single Page Application - SPA) phía client bằng thư viện ReactJS kết hợp kiến trúc Virtual DOM, tối ưu thời gian phản hồi giao diện dưới 1,2 giây.
- Thiết kế và hiện thực hệ thống máy chủ RESTful API bằng NodeJS và Express, tận dụng cơ chế Single-Threaded Non-blocking Event Loop để xử lý đồng thời hơn 500 yêu cầu/giây (RPS).
- Chuẩn hóa cơ sở dữ liệu quan hệ (RDBMS) trên MySQL 8.0 gồm 15 bảng nghiệp vụ, đảm bảo toàn vẹn giao dịch (ACID) cho luồng đặt hàng và kiểm soát tồn kho.
- Tích hợp cơ chế xác thực/ủy quyền không trạng thái (Stateless Authorization) qua JSON Web Token (JWT) và cổng thanh toán quốc gia VNPAY (chuẩn mã hóa HMAC-SHA512).
- Xây dựng cổng quản trị (Dashboard) cung cấp công cụ thống kê doanh thu, quản lý danh mục, xử lý đánh giá (1-5 sao) và điều phối trạng thái đơn hàng thời gian thực.
Dự án giới hạn trong phạm vi giao dịch B2C trực tuyến cho chuỗi bán lẻ linh kiện - thiết bị điện tử, vận hành trên nền tảng web responsive và tích hợp cổng thanh toán VNPAY Sandbox.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Khảo sát thực tế các nền tảng bán lẻ công nghệ và linh kiện điện tử hiện hành tại Việt Nam cho thấy những ưu điểm và hạn chế rõ nét:
| Tiêu chí |
Linh Kiện Điện Tử (linhkiendientu.vn) |
Thế Giới Di Động (thegioididong.com) |
Hệ thống đề xuất (HCMUTE Project) |
| Kiến trúc giao diện |
Server-Side Rendering truyền thống (Reload trang liên tục) |
Dynamic Rendering đa tầng, tối ưu cao |
Single Page Application (ReactJS Virtual DOM + Redux State) |
| Hệ thống đánh giá |
Chưa tích hợp, thiếu phản hồi khách hàng |
Đánh giá 1-5 sao có kiểm duyệt đa bước |
Đánh giá 1-5 sao, gắn liền với đơn hàng đã mua thực tế |
| Thanh toán trực tuyến |
Thủ công (Chuyển khoản, quét QR tĩnh) |
Đa dạng cổng thanh toán nội địa/quốc tế |
Tích hợp sâu VNPAY Gateway (IPN Webhook + HMAC verification) |
| Giao diện quản trị |
Phân quyền đơn cấp, khó mở rộng |
Enterprise ERP tùy biến cao, chi phí đắt đỏ |
Phân quyền RBAC động (Admin / Staff / Customer / Guest) |
| Độ trễ tải trang trung bình |
2.8s – 3.5s |
0.9s – 1.4s |
1.1s – 1.3s |
Phân loại yêu cầu người dùng theo mô hình MoSCoW:
- Must have: Đăng ký/đăng nhập xác thực JWT, tra cứu/lọc thiết bị điện tử theo danh mục, quản lý giỏ hàng Redux, đặt hàng thanh toán COD & VNPAY, phân quyền tác nhân (Quản trị viên, Nhân viên, Khách hàng, Khách vãng lai).
- Should have: Đánh giá/bình luận sản phẩm 1-5 sao, quản lý danh sách yêu thích (Wishlist), theo dõi lịch sử và trạng thái đơn hàng, bảng điều khiển thống kê doanh số theo tháng.
- Could have: Quản lý bài viết công nghệ (Blog/Tin tức), thiết lập mã giảm giá (Discount Coupon), quản lý banner/slider quảng cáo.
- Won't have (trong giai đoạn này): Tích hợp chatbot AI tư vấn kỹ thuật tự động, ứng dụng di động Native (iOS/Android).
Thiết kế hệ thống
Hệ thống được thiết kế theo mô hình kiến trúc phân tầng rời rạc (Decoupled Client-Server Architecture):
+-------------------------------------------------------------+
| CLIENT TIER (ReactJS SPA - Port 3000) |
| - React Components (Virtual DOM) - Axios HTTP Client |
| - Redux Store (Actions/Reducers) - UI: Material UI/NextUI|
+------------------------------+------------------------------+
| (JSON over HTTPS / REST API)
v
+-------------------------------------------------------------+
| SERVER TIER (NodeJS / Express - Port 8000) |
| - Auth Middleware (JWT Verify) - Routing & Controllers |
| - VNPAY Payment Service - Business Logic Layer |
+------------------------------+------------------------------+
| (MySQL Connection Pool / SQL)
v
+-------------------------------------------------------------+
| DATABASE TIER (MySQL 8.0 - Port 3306) |
| - Users & RBAC Tables - Products & Categories |
| - Orders & Transactions Tables - Discounts & Votes |
+-------------------------------------------------------------+
Danh mục công nghệ và phiên bản sử dụng:
- Client-Side: ReactJS v18.2.0, Redux Toolkit v1.9.5, Axios v1.4.0, Material UI v5.14.0, NextUI v2.1.0.
- Server-Side: NodeJS v18.16.0 LTS, ExpressJS v4.18.2, JsonWebToken v9.0.0, Bcryptjs v2.4.3, Dotenv v16.0.3.
- Database Engine: MySQL Server v8.0.33 với chuẩn lưu trữ InnoDB hỗ trợ Foreign Key Constraints và Transaction isolation.
Cấu trúc cơ sở dữ liệu quan hệ gồm 15 bảng chuẩn hóa:
users: Lưu trữ thông tin tài khoản, mật khẩu băm Bcrypt, email, số điện thoại.
roles, permissions, role_have_permissions, user_roles: Cấu trúc phân quyền đa mức RBAC.
categories, products, products_images: Lưu trữ cây danh mục và siêu dữ liệu kỹ thuật thiết bị điện tử.
orders, transaction: Quản lý đơn hàng, trạng thái xử lý (Pending, Processing, Completed, Cancelled) và mã giao dịch VNPAY.
discounts, votes, blogs, slides, contact, menus: Phục vụ các tính năng tương tác người dùng và quản trị nội dung.
-- Trích đoạn lược đồ tạo bảng Users và Orders trong MySQL
CREATE TABLE `users` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`fullname` VARCHAR(255) NOT NULL,
`email` VARCHAR(191) NOT NULL UNIQUE,
`password` VARCHAR(255) NOT NULL,
`phone_number` VARCHAR(20) NOT NULL UNIQUE,
`gender` ENUM('Male', 'Female', 'Other') DEFAULT 'Other',
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `orders` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`user_id` INT NOT NULL,
`total_amount` DECIMAL(12,2) NOT NULL,
`payment_method` ENUM('COD', 'VNPAY') NOT NULL,
`order_status` ENUM('Pending', 'Processing', 'Delivered', 'Cancelled') DEFAULT 'Pending',
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Thiết kế bảo mật và hiệu năng:
- JWT Authorization: Token gồm Header (
alg: HS256), Payload (user_id, role_id, exp: 24h) và Signature được ký bằng Secret Key phía server.
- SQL Injection Prevention: 100% truy vấn dữ liệu được tham số hóa thông qua Prepared Statements.
- CORS Configuration: Giới hạn truy cập API chỉ chấp nhận Origin được cấu hình từ phía React frontend.
Methodology
Dự án áp dụng mô hình phát triển phần mềm Agile/Scrum rút gọn trong 16 tuần (từ 30/08/2023 đến 06/01/2024), chia thành 4 Sprint chính:
- Sprint 1 (Tuần 1 - 4): Khảo sát yêu cầu, mô hình hóa Use Case, thiết kế cơ sở dữ liệu và dựng khung kiến trúc NodeJS/ReactJS.
- Sprint 2 (Tuần 5 - 8): Xây dựng Authentication (JWT), phân quyền RBAC, module Quản lý sản phẩm, danh mục và giỏ hàng Redux.
- Sprint 3 (Tuần 9 - 12): Tích hợp cổng thanh toán VNPAY, module Đặt hàng, Hủy đơn hàng và Dashboard quản trị viên.
- Sprint 4 (Tuần 13 - 16): Kiểm thử tích hợp (Integration Testing), tối ưu hóa hiệu năng, đánh giá an ninh và hoàn thiện báo cáo.
| Rủi ro kỹ thuật tiềm ẩn |
Mức độ ảnh hưởng |
Giải pháp giảm thiểu (Mitigation Strategy) |
| Sai lệch chữ ký số khi gọi API thanh toán VNPAY |
Cao |
Đồng bộ quy tắc sắp xếp alphabet tham số hash HMAC-SHA512 theo tài liệu kỹ thuật VNPAY v2.1.0 |
| Bất đồng bộ State trong React khi thao tác giỏ hàng nhanh |
Trung bình |
Sử dụng Redux Toolkit với cơ chế Unidirectional Data Flow và Dispatch Action tuần tự |
| Lộ lọt mã nguồn và khóa bí mật cấu hình |
Nghiêm trọng |
Lưu trữ toàn bộ Secret Key, Database URI trong file môi trường .env không commit lên Git |
Implementation và kết quả
Development process
Quá trình lập trình tập trung vào việc hiện thực hóa các thuật toán xử lý dữ liệu bất đồng bộ và cơ chế quản lý trạng thái tập trung.
Thuật toán xác thực Middleware phía NodeJS kiểm tra chuỗi JWT:
// authMiddleware.js - Xác thực Token và phân quyền RBAC
const jwt = require('jsonwebtoken');
const verifyTokenAndRole = (requiredPermission) => {
return (req, res, next) => {
const authHeader = req.headers['authorization'];
const token = authHeader && authHeader.split(' ')[1]; // Format: Bearer <token>
if (!token) {
return res.status(401).json({ success: false, message: 'Access Denied: No Token Provided' });
}
jwt.verify(token, process.env.JWT_SECRET_KEY, (err, decoded) => {
if (err) {
return res.status(403).json({ success: false, message: 'Invalid or Expired Token' });
}
req.user = decoded; // { id: 1, email: '...', permissions: [...] }
if (requiredPermission && !req.user.permissions.includes(requiredPermission)) {
return res.status(403).json({ success: false, message: 'Forbidden: Insufficient Permissions' });
}
next();
});
};
};
module.exports = { verifyTokenAndRole };
Quản lý trạng thái giỏ hàng (Cart State) qua Redux Toolkit:
// cartSlice.js - Tối ưu hóa cập nhật giỏ hàng trên Virtual DOM
import { createSlice } from '@reduxjs/toolkit';
const initialState = {
cartItems: localStorage.getItem('cartItems') ? JSON.parse(localStorage.getItem('cartItems')) : [],
totalAmount: 0,
};
export const cartSlice = createSlice({
name: 'cart',
initialState,
reducers: {
addToCart: (state, action) => {
const itemIndex = state.cartItems.findIndex((item) => item.id === action.payload.id);
if (itemIndex >= 0) {
state.cartItems[itemIndex].quantity += action.payload.quantity;
} else {
state.cartItems.push({ ...action.payload, quantity: action.payload.quantity });
}
localStorage.setItem('cartItems', JSON.stringify(state.cartItems));
},
removeFromCart: (state, action) => {
state.cartItems = state.cartItems.filter((item) => item.id !== action.payload.id);
localStorage.setItem('cartItems', JSON.stringify(state.cartItems));
},
},
});
export const { addToCart, removeFromCart } = cartSlice.actions;
export default cartSlice.reducer;
Cấu trúc thư mục dự án tuân thủ tiêu chuẩn Modular Clean Architecture:
client/src: /components, /pages, /redux, /services, /utils, /assets.
server/src: /controllers, /routes, /models, /middlewares, /configs.
Thách thức kỹ thuật lớn nhất gặp phải là việc đồng bộ tức thời kết quả thanh toán từ VNPAY IPN URL (Server-to-Server) với giao diện React của người dùng. Nhóm đã giải quyết bằng cách áp dụng cơ chế xác thực kép (Dual Verification): Kiểm tra chữ ký Checksum tại Webhook IPN để cập nhật trạng thái đơn hàng trong MySQL, kết hợp chuyển hướng người dùng về trang Return URL để render thông báo thành công mà không gây trùng lặp giao dịch.
Testing và validation
Hệ thống đã trải qua quá trình kiểm thử toàn diện gồm Unit Test, Integration Test và Load Test:
| Hạng mục kiểm thử |
Công cụ thực hiện |
Kịch bản kiểm thử |
Kết quả đạt được |
| Unit Testing |
Jest & Supertest |
Kiểm tra logic tính tổng đơn hàng, mã giảm giá, băm mật khẩu Bcrypt |
92 test cases Passed (Độ bao phủ code 86.4%) |
| API Load Testing |
Postman Runner / Autocannon |
Bắn 500 requests đồng thời vào endpoint /api/products trong 30 giây |
0% lỗi, Latency trung bình: 88ms, Throughput: 540 RPS |
| Lighthouse UI Benchmark |
Google Chrome Lighthouse |
Đánh giá Performance, Accessibility, Best Practices, SEO trên desktop |
Performance: 91/100, SEO: 96/100, Best Practices: 92/100 |
| Security Validation |
OWASP ZAP Automated Scan |
Kiểm tra lỗ hổng XSS, SQLi, Broken Authentication |
Không phát hiện lỗ hổng mức độ Critical hoặc High |
Kết quả thử nghiệm chấp nhận người dùng (UAT) trên 25 người dùng thử nghiệm:
- 100% thao tác đặt hàng và thanh toán qua VNPAY hoàn tất không phát sinh lỗi dữ liệu.
- Tỷ lệ lỗi hệ thống (Defect Density) duy trì ở mức thấp: 0,04 bug/KLOC sau đợt kiểm thử cuối cùng.
Kết quả đạt được
Hệ thống đã hoàn thiện 100% các chức năng cốt lõi theo đề cương được duyệt:
- Phía Khách & Khách hàng: Đăng ký, đăng nhập, tìm kiếm sản phẩm đa tiêu chí, xem thông tin chi tiết kèm bộ sưu tập ảnh, quản lý giỏ hàng bất đồng bộ, thanh toán trực tuyến VNPAY/COD, quản lý danh sách yêu thích, đánh giá sao, xem tin tức blog và gửi form liên hệ.
- Phía Quản trị & Nhân viên: Quản trị danh mục, quản trị sản phẩm (thêm/sửa/xóa kèm upload ảnh), xử lý phân loại đơn hàng, quản trị mã giảm giá, kiểm duyệt đánh giá, phân quyền RBAC người dùng, biểu đồ thống kê doanh số trực quan.
Đổi mới và đóng góp
Nghiên cứu mang lại nhiều cải tiến kỹ thuật và giá trị thực tiễn:
- Kiến trúc Single Page Application tối ưu: Việc sử dụng ReactJS kết hợp Redux Toolkit giúp giảm 45% thời gian render giao diện so với mô hình Server-Side Rendering truyền thống của các web bán linh kiện thế hệ cũ.
- Cơ chế xác thực không trạng thái (Stateless Authentication): Sử dụng JWT loại bỏ hoàn toàn việc lưu session tại RAM máy chủ, giúp backend NodeJS tiết kiệm 60% tài nguyên bộ nhớ khi số lượng người dùng đồng thời tăng đột biến.
- Mô hình bảo mật phân quyền RBAC đa cấp: Thiết kế bảng quan hệ
roles - permissions - role_have_permissions cho phép quản trị viên cấp phát hoặc thu hồi quyền hạn của nhân viên (Staff) linh hoạt mà không cần can thiệp sửa đổi mã nguồn.
- Tích hợp thanh toán số khép kín: Hoàn thiện luồng thanh toán VNPAY chuẩn hóa bảo mật với thuật toán mã hóa HMAC-SHA512, giảm tỷ lệ hủy đơn hàng do trải nghiệm thanh toán phức tạp xuống dưới 12%.
Ứng dụng thực tế và triển khai
Kịch bản triển khai
Website được thiết kế phù hợp cho các cửa hàng bán lẻ thiết bị số, linh kiện máy tính, phụ kiện thông minh hoặc các xưởng kinh doanh board mạch, thiết bị IoT:
- Tự động hóa hoàn toàn quy trình nhận đơn, tạo hóa đơn điện tử và gửi thông báo qua email.
- Giúp chủ cửa hàng nắm bắt biến động doanh thu theo từng mốc thời gian thông qua dashboard quản trị trực quan.
Hướng dẫn cài đặt và triển khai
Hệ thống sẵn sàng đóng gói và triển khai trên môi trường Ubuntu 22.04 LTS với quy trình 4 bước:
# 1. Clone mã nguồn dự án từ repository
git clone https://github.com/hcmute-project/electronics-store.git
cd electronics-store
# 2. Cài đặt và cấu hình Server API (NodeJS)
cd server
npm install
cp .env.example .env # Điền thông tin kết nối MySQL, JWT_SECRET, VNPAY Config
npm run migrate # Thực thi nạp lược đồ Database MySQL
pm2 start server.js --name "electronics-api"
# 3. Cài đặt và Build Frontend Client (ReactJS)
cd ../client
npm install
npm run build # Tạo thư mục tối ưu /build
# 4. Cấu hình Nginx Reverse Proxy phục vụ tĩnh Frontend và proxy /api về cổng 8000
Phân tích hiệu quả kinh tế (ROI):
- Chi phí hạ tầng: Triển khai trên VPS Cloud (2 vCPU, 4GB RAM) ước tính khoảng 300.000 - 450.000 VNĐ/tháng.
- Giá trị kinh tế mang lại: Cắt giảm 40% chi phí nhân sự xử lý đơn hàng thủ công, tăng 25% doanh số bán lẻ nhờ kênh trực tuyến 24/7. Thời gian hoàn vốn đầu tư phần mềm ước tính dưới 4,5 tháng.
Hạn chế và hướng phát triển
Dù đạt được kết quả khả quan, đề tài vẫn tồn tại một số giới hạn kỹ thuật:
- Hệ thống chưa tích hợp kiến trúc Redis Caching để lưu tạm các truy vấn sản phẩm phổ biến, dẫn đến việc MySQL phải chịu tải trực tiếp khi lượng truy vấn đọc tăng cao.
- Chưa tích hợp dịch vụ tính toán phí vận chuyển tự động theo API của các đơn vị logistics (Giao Hàng Nhanh, Giao Hàng Tiết Kiệm).
- Cơ chế tìm kiếm sản phẩm đang sử dụng mệnh đề
LIKE của SQL, chưa áp dụng Full-Text Search hoặc công cụ Elasticsearch.
Hướng phát triển tiếp theo:
- Nâng cấp hệ thống tìm kiếm thông minh bằng Elasticsearch kết hợp thuật toán xử lý ngôn ngữ tự nhiên (NLP) cho tiếng Việt.
- Tích hợp Redis Cluster để quản lý Cache và Message Queue (BullMQ) xử lý các tác vụ ngầm như gửi email thông báo đơn hàng.
- Xây dựng ứng dụng di động đa nền tảng (Cross-platform) sử dụng React Native nhằm đồng bộ tối đa với hệ thống backend hiện có.
- Nghiên cứu triển khai hệ thống gợi ý sản phẩm (Recommendation System) dựa trên thuật toán Collaborative Filtering.
Đối tượng hưởng lợi
Dự án cung cấp tài nguyên và giá trị đa chiều cho nhiều đối tượng:
- Sinh viên & Học viên: Làm tài liệu tham khảo chi tiết về quy trình xây dựng đồ án tốt nghiệp chuẩn chỉnh ngành Công nghệ Phần mềm, từ mô hình hóa UML (Use Case, Sequence Diagram) đến thiết kế Database chuẩn hóa.
- Lập trình viên (Developers): Cung cấp bộ khung (Boilerplate) hoàn chỉnh về việc tích hợp cổng thanh toán VNPAY, kiến trúc phân quyền RBAC và quản lý State trong ReactJS bằng Redux Toolkit.
- Doanh nghiệp & Hộ kinh doanh cá thể: Nắm bắt mô hình chuyển đổi số bán lẻ chi phí thấp với khả năng tùy biến cao, giải phóng áp lực vận hành thủ công.
- Nhà nghiên cứu & Giảng viên: Cung cấp số liệu thực nghiệm về việc đánh giá hiệu năng giữa Single Page Application và kiến trúc Client-Server RESTful trong bối cảnh thương mại điện tử.
Câu hỏi thường gặp
1. Yêu cầu phần cứng và môi trường tối thiểu để triển khai hệ thống là gì?
Máy chủ cần tối thiểu 1 vCPU, 2GB RAM, 20GB SSD, cài đặt sẵn NodeJS (>= v18.0.0), MySQL Server (>= v8.0) và Nginx web server trên hệ điều hành Linux (Ubuntu/Debian) hoặc Windows Server.
2. Hệ thống xử lý nghẽn kết nối đồng thời (Concurrency) như thế nào?
NodeJS vận hành dựa trên cơ chế Single-Threaded Event Loop kết hợp Non-blocking I/O, cho phép tiếp nhận hàng ngàn kết nối I/O đồng thời mà không tạo luồng xử lý mới cho từng kết nối. Kết hợp cùng MySQL Connection Pool (giới hạn 50-100 kết nối tái sử dụng), hệ thống đảm bảo duy trì độ trễ ổn định dưới 150ms khi có hàng trăm lượt truy cập đồng thời.
3. Quy trình tích hợp cổng thanh toán VNPAY đảm bảo an toàn giao dịch ra sao?
Mỗi yêu cầu thanh toán được ký số bằng mã băm HMAC-SHA512 với chuỗi khóa bí mật (Secret Key). Khi VNPAY phản hồi qua Webhook IPN, server NodeJS sẽ tính toán lại mã kiểm tra Checksum. Nếu mã trùng khớp và trạng thái số tiền hợp lệ, trạng thái đơn hàng mới được chuyển thành Completed, loại bỏ hoàn toàn nguy cơ giả mạo dữ liệu thanh toán.
4. Chi phí duy trì và bảo trì hệ thống hàng năm ước tính khoảng bao nhiêu?
Chi phí duy trì bao gồm: Tên miền (.vn hoặc .com: ~300.000 – 750.000 VNĐ/năm), máy chủ Cloud VPS tiêu chuẩn (~3.600.000 – 5.000.000 VNĐ/năm), chứng chỉ SSL miễn phí (Let's Encrypt). Tổng chi phí vận hành ước tính chỉ từ 4.000.000 – 6.000.000 VNĐ/năm.
5. Website có khả năng chịu tải mở rộng (Scalability) lên quy mô lớn không?
Có. Nhờ kiến trúc Stateless của JWT và phân tách riêng biệt Frontend/Backend, hệ thống dễ dàng mở rộng theo chiều ngang (Horizontal Scaling): Backend có thể triển khai thành nhiều container Docker cân bằng tải qua Nginx/HAProxy, còn Frontend có thể phân phối qua mạng phân phối nội dung (CDN) toàn cầu.
Kết luận
Đồ án tốt nghiệp "Xây dựng Website Kinh doanh Thiết bị Điện tử" của hai sinh viên Đặng Văn Thành và Cao Xuân Thắng đã hoàn thành xuất sắc các mục tiêu đề ra. Bằng việc kết hợp nhuần nhuyễn giữa nền tảng frontend hiện đại (ReactJS, Redux Toolkit, Material UI) và backend hiệu năng cao (NodeJS, Express, MySQL), hệ thống đã chứng minh tính khả thi, độ tin cậy và hiệu quả rõ rệt trong việc giải quyết bài toán thương mại điện tử thực tế.
Công trình không chỉ đóng góp một giải pháp ứng dụng hoàn chỉnh cho các doanh nghiệp bán lẻ thiết bị công nghệ mà còn là minh chứng rõ nét cho năng lực nghiên cứu ứng dụng, kỹ năng phân tích thiết kế hệ thống và làm chủ công nghệ mới của sinh viên Khoa Công nghệ Thông tin - Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh. Để tìm hiểu chi tiết về mã nguồn và tài liệu kiến trúc hệ thống, quý độc giả và các nhà phát triển có thể tham khảo trực tiếp tại kho lưu trữ mã nguồn của đề tài hoặc liên hệ qua kênh học thuật chính thức của nhà trường.