Giới thiệu dự án

Thương mại điện tử (E-commerce) toàn cầu và tại Việt Nam đang duy trì tốc độ tăng trưởng kép hàng năm (CAGR) trên 20%, kéo theo sự dịch chuyển mạnh mẽ trong hành vi tiêu dùng từ trực tiếp sang trực tuyến. Ngành hàng thời trang, đặc biệt là giày dép (footwear), có đặc thù phân loại phức tạp theo kích cỡ (size), màu sắc, thương hiệu và nhóm đối tượng (nam, nữ, trẻ em). Tuy nhiên, nhiều nền tảng bán lẻ truyền thống xây dựng trên các kiến trúc monolithic cũ (như PHP/MySQL thế hệ trước) thường bộc lộ điểm nghẽn hiệu năng khi lưu lượng truy cập tăng đột biến, thời gian tải trang chậm, trải nghiệm giao diện người dùng (UI/UX) thiếu mượt mà và thiếu các tính năng tương tác thời gian thực (real-time).

Đề tài "Ứng dụng MERN Stack xây dựng website bán giày" do nhóm sinh viên Khoa Công nghệ Thông tin - Trường Đại học Sư phạm Kỹ thuật TP.HCM thực hiện nhằm giải quyết trực tiếp các bài toán kỹ thuật và nghiệp vụ trên:

  • Vấn đề cốt lõi (Problem Statement):

    • Hiệu năng xử lý I/O thấp: Các hệ thống đa luồng truyền thống (multi-threaded synchronous) dễ gây tắc nghẽn tài nguyên máy chủ khi xử lý đồng thời hàng nghìn yêu cầu đọc/ghi dữ liệu đơn hàng và sản phẩm.
    • Trải nghiệm người dùng rời rạc: Khách hàng gặp khó khăn trong việc tìm kiếm, lọc đa thuộc tính, theo dõi đơn hàng và tương tác trực tiếp với tư vấn viên.
    • Quản trị và mở rộng phức tạp: Cấu trúc cơ sở dữ liệu quan hệ cứng nhắc (RDBMS) gây cản trở khi mở rộng thuộc tính sản phẩm mới hoặc triển khai các chiến dịch khuyến mãi động theo danh mục.
  • Mục tiêu của đề tài (Project Objectives):

    1. Nghiên cứu chuyên sâu kiến trúc Full-stack JavaScript đồng nhất (Isomorphic JavaScript) dựa trên MERN Stack (MongoDB, ExpressJS, ReactJS, NodeJS).
    2. Thiết kế và triển khai cơ sở dữ liệu NoSQL hướng tài liệu (Document-oriented) có khả năng co giãn linh hoạt và tối ưu hóa truy vấn dữ liệu phi cấu trúc.
    3. Xây dựng giao diện Single Page Application (SPA) hiệu năng cao, tối ưu hóa quá trình kết xuất (rendering) và quản lý trạng thái tập trung.
    4. Tích hợp các module nghiệp vụ nâng cao: phân quyền đa cấp (Guest, User, Admin), xác thực đa phương thức (OAuth 2.0, JWT), quản lý giỏ hàng/thanh toán đa kênh, tính năng Chat trực tuyến thời gian thực (Real-time Chat) và Dashboard thống kê phân tích tương tác người dùng.
    5. Đóng gói giải pháp có khả năng tái sử dụng cao, dễ dàng bảo trì và tích hợp vào các hệ thống bán lẻ thực tế.
  • Giải pháp kỹ thuật (Solution Approach): Áp dụng toàn diện hệ sinh thái JavaScript từ tầng lưu trữ đến tầng giao diện:

    • MongoDB & Mongoose ODM: Lưu trữ dữ liệu dạng BSON/JSON, loại bỏ các phép JOIN tốn tài nguyên và tăng tốc độ xử lý I/O.
    • NodeJS & ExpressJS: Xây dựng RESTful API Server với kiến trúc bất đồng bộ hướng sự kiện (Event-driven Non-blocking I/O) giúp tối ưu hóa xử lý đa truy vấn đồng thời.
    • ReactJS & Redux: Quản lý Virtual DOM và State tập trung, đảm bảo giao diện phản hồi tức thì mà không cần nạp lại toàn bộ trang web.
  • Kết quả kỳ vọng (Expected Outcomes):

    • Thời gian phản hồi API trung bình đạt dưới $150\text{ ms}$.
    • Tối ưu hóa thời gian hiển thị nội dung đầu tiên (First Contentful Paint - FCP) dưới $1.2\text{ s}$.
    • Hỗ trợ tối thiểu $1.000$ kết nối đồng thời (Concurrent Users - CCU) trên cấu hình máy chủ tiêu chuẩn.
    • Tự động hóa $100%$ quy trình đặt hàng, quản lý kho biến thể và gửi thông báo hệ thống.
  • Phạm vi và giới hạn (Scope & Limitations):

    • Phạm vi: Áp dụng cho mô hình bán lẻ B2C ngành hàng giày dép với đầy đủ các nghiệp vụ quản lý sản phẩm, đơn hàng, người dùng, tương tác khách hàng và phân tích dữ liệu.
    • Giới hạn: Hệ thống tập trung vào nền tảng Web App; module thanh toán trực tuyến và bản đồ địa điểm vận hành thử nghiệm trên môi trường Sandbox/API thử nghiệm.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Khảo sát các nền tảng thương mại điện tử giày dép tiêu biểu trên thị trường cho thấy bức tranh so sánh rõ nét giữa các giải pháp công nghệ:

Tiêu chí phân tích Bitis.vn Vinagiay.vn Buywholesalefootwear.com Adidas.com Giải pháp MERN Stack đề xuất
Kiến trúc công nghệ Monolithic Web App PHP/MySQL truyền thống ASP.NET Monolithic Microservices / React SPA MERN Stack (SPA + RESTful API)
Trải nghiệm trang (UX) Tốt, giao diện hiện đại Đơn điệu, ít sản phẩm trang chủ Rối mắt, nhiều văn bản tĩnh Xuất sắc, mượt mà Tối ưu hóa UI/UX, SPA không reload
Xác thực người dùng Giới hạn Gmail Không hỗ trợ tài khoản Email / Mật khẩu cơ bản Đa dạng (Google, FB, Yahoo) Đa phương thức (Email, Google, FB OAuth)
Real-time Chat Widget Facebook rời Không có Hỗ trợ cơ bản Live Chat tích hợp chuyên sâu WebSocket / Socket.IO tích hợp trực tiếp
Bộ lọc sản phẩm Cơ bản theo nhóm Cơ bản Kém hiệu quả Đa tầng (Size, Color, Price, Tech) Lọc động linh hoạt (Dynamic Faceted Search)
Khả năng co giãn Trung bình Thấp Trung bình Rất cao Cao (Co giãn ngang NoSQL + Node.js)

Ma trận yêu cầu hệ thống theo mô hình MoSCoW:

  • Must Have (Bắt buộc): Đăng ký/đăng nhập (JWT, OAuth), duyệt sản phẩm phân cấp đa tầng, tìm kiếm full-text, giỏ hàng, đặt hàng và cập nhật trạng thái đơn, quản lý người dùng, CRUD sản phẩm/danh mục cho Admin.
  • Should Have (Nên có): Danh sách sản phẩm yêu thích (Wishlist), đánh giá/bình luận sản phẩm đính kèm hình ảnh, Real-time Chat giữa khách hàng và Admin, khôi phục mật khẩu qua Email OTP.
  • Could Have (Có thể có): Quản lý sự kiện giảm giá theo danh mục (Flash Sale Event), Dashboard phân tích thống kê tích hợp Google Analytics, soft-delete dữ liệu để kiểm toán.
  • Won't Have (Chưa thực hiện ở giai đoạn này): Đề xuất sản phẩm bằng mô hình Deep Learning thời gian thực, ứng dụng di động Native (iOS/Android).

Thiết kế hệ thống

Kiến trúc hệ thống được xây dựng theo mô hình 3 lớp phân tách hoàn toàn giữa Client-Side và Server-Side thông qua giao thức truyền tải dữ liệu JSON:

+-----------------------------------------------------------------------+
|                       CLIENT LAYER (ReactJS SPA)                      |
|  [Redux Store] <--> [React Components / JSX] <--> [Axios HTTP Client] |
+-----------------------------------------------------------------------+
                                   |  ^
                 RESTful API (JSON)|  | WebSocket (Bidirectional)
                                   v  |
+-----------------------------------------------------------------------+
|                    SERVER LAYER (NodeJS & ExpressJS)                  |
|  [CORS / Auth Middleware] --> [Routing Layer] --> [Controllers Layer] |
|                                                           |           |
|                                                  [Mongoose ODM]       |
+-----------------------------------------------------------------------+
                                                            |  ^
                                       BSON Wire Protocol   |  |
                                                            v  |
+-----------------------------------------------------------------------+
|                       DATABASE LAYER (MongoDB)                        |
|   Collections: users | products | productcategories | orders | chats   |
+-----------------------------------------------------------------------+

Danh mục công nghệ và phiên bản (Technology Stack):

  • Runtime: Node.js v14.15.0 LTS (V8 Engine, Libuv event loop).
  • Back-end Framework: Express.js v4.17.1 (RESTful API, Routing, Middlewares).
  • Database: MongoDB Community Server v4.4.2 + Mongoose ODM v5.10.15.
  • Front-end Framework: React.js v16.14.0 (Hooks, Functional Components, Virtual DOM).
  • State Management: Redux v4.0.5 + Redux Thunk v2.3.0.
  • Giao thức Real-time: Socket.IO v3.0.3 (Engine.IO protocol, WebSockets fallback).
  • Bảo mật: JSON Web Token (jsonwebtoken v8.5.1), Bcrypt.js v2.4.3, Helmet v4.2.0, Cors v2.8.5.

Thiết kế cơ sở dữ liệu (Database Schema):

Cơ sở dữ liệu bao gồm 7 collection chính: users, products, productcategories, orders, messages, statistics, chats.

Schema cấu trúc đại diện trên Mongoose ODM:

// Product Schema định nghĩa sản phẩm với các biến thể Size/Màu sắc
const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const ProductSchema = new Schema({
    name: { type: String, required: true, trim: true, index: true },
    code: { type: String, required: true, unique: true },
    category: { type: Schema.Types.ObjectId, ref: 'productcategories', required: true },
    price: { type: Number, required: true, min: 0 },
    discountPrice: { type: Number, default: 0 },
    sizes: [{ sizeNumber: Number, stock: Number }],
    colors: [{ colorName: String, hexCode: String }],
    images: [{ url: String, isPrimary: Boolean }],
    description: { type: String, required: true },
    ratings: [{
        user: { type: Schema.Types.ObjectId, ref: 'users' },
        star: { type: Number, min: 1, max: 5 },
        comment: String,
        createdAt: { type: Date, default: Date.now }
    }],
    totalSold: { type: Number, default: 0 },
    isDeleted: { type: Boolean, default: false }
}, { timestamps: true });

module.exports = mongoose.model('products', ProductSchema);

Thiết kế API Endpoints chính:

HTTP Method API Route Quyền truy cập Mô tả nghiệp vụ
POST /api/auth/login Public Xác thực thông tin người dùng, trả về JWT Token
POST /api/auth/oauth Public Đăng nhập/Đăng ký tự động qua Google/Facebook OAuth
GET /api/products Public Lấy danh sách sản phẩm (hỗ trợ phân trang, lọc size, giá)
POST /api/products Admin Thêm sản phẩm mới kèm tải lên hình ảnh
PUT /api/products/:id Admin Cập nhật thông tin chi tiết và biến thể sản phẩm
DELETE /api/products/:id Admin Soft-delete sản phẩm (chuyển cờ isDeleted: true)
POST /api/orders User Tạo mới đơn đặt hàng và trừ tồn kho tự động
PUT /api/orders/:id/status Admin Cập nhật trạng thái chu trình đơn hàng
GET /api/analytics/dashboard Admin Lấy chỉ số báo cáo tổng hợp và biểu đồ doanh thu

Phương pháp luận (Methodology)

Dự án áp dụng quy trình phát triển lặp thích ứng dựa trên nguyên lý Agile/Scrum rút gọn, kéo dài trong 17 tuần (từ 30/03/2020 đến 27/07/2020):

  • Giai đoạn 1 (Tuần 1 - 2): Nghiên cứu nền tảng MERN Stack, cơ chế Single Thread Non-blocking I/O và NoSQL document modeling.
  • Giai đoạn 2 (Tuần 3 - 4): Khảo sát hiện trạng, phân tích yêu cầu nghiệp vụ, mô hình hóa Use Case và thiết kế dữ liệu.
  • Giai đoạn 3 (Tuần 5 - 9): Thiết kế hệ thống, xây dựng REST API Server, cấu hình Mongoose models và hiện thực giao diện UI ReactJS.
  • Giai đoạn 4 (Tuần 10 - 13): Phát triển chức năng Client (Duyệt hàng, Giỏ hàng, Thanh toán, Wishlist) và chức năng Admin (Quản trị User, Sản phẩm, Sự kiện Sale, Chat Socket.IO).
  • Giai đoạn 5 (Tuần 14 - 15): Kiểm thử hệ thống (Unit Testing, Integration Testing), tối ưu hóa hiệu năng truy vấn và bảo mật.
  • Giai đoạn 6 (Tuần 16 - 17): Đánh giá tổng thể, đóng gói hệ thống, hoàn thiện tài liệu kỹ thuật và báo cáo khóa luận.

Implementation và kết quả

Quá trình phát triển và Kỹ thuật trọng tâm

1. Xây dựng tầng Middleware xác thực & Phân quyền bảo mật (JWT Authentication)

Tầng middleware của ExpressJS xử lý giải mã JWT, kiểm tra trạng thái hoạt động của tài khoản và cấp quyền theo vai trò (Role-based Access Control - RBAC).

// Middleware kiểm tra xác thực Token và phân quyền Admin
const jwt = require('jsonwebtoken');
const User = require('../models/User');

const verifyAdmin = async (req, res, next) => {
    try {
        const token = req.header('Authorization')?.replace('Bearer ', '');
        if (!token) return res.status(401).json({ success: false, message: 'Access Denied: No Token Provided' });

        const decoded = jwt.verify(token, process.env.JWT_SECRET);
        const user = await User.findOne({ _id: decoded._id, isDeleted: false });
        
        if (!user || user.role !== 'admin') {
            return res.status(403).json({ success: false, message: 'Forbidden: Admin access required' });
        }
        req.user = user;
        next();
    } catch (err) {
        res.status(400).json({ success: false, message: 'Invalid or Expired Token' });
    }
};

module.exports = { verifyAdmin };

2. Xử lý sự kiện giảm giá động theo danh mục (Aggregation Pipeline)

Sử dụng sức mạnh của MongoDB Aggregation Framework để tính toán giá trị đơn hàng, cập nhật phần trăm giảm giá hàng loạt theo sự kiện mà không làm khóa bảng dữ liệu:

// Áp dụng sự kiện giảm giá cho toàn bộ sản phẩm thuộc danh mục
exports.applyCategorySale = async (req, res) => {
    const { categoryId, discountPercent, expireAt } = req.body;
    try {
        const updated = await Product.updateMany(
            { category: categoryId, isDeleted: false },
            [
                { 
                    $set: { 
                        discountPrice: { 
                            $round: [{ $multiply: ["$price", (1 - discountPercent / 100)] }, 0] 
                        },
                        saleExpire: new Date(expireAt)
                    } 
                }
            ]
        );
        res.status(200).json({ success: true, modifiedCount: updated.nModified });
    } catch (error) {
        res.status(500).json({ success: false, error: error.message });
    }
};

Kiểm thử và Đánh giá hiệu năng

Hệ thống đã trải qua quy trình kiểm thử nghiêm ngặt với hơn 78 test case chi tiết bao quát các tầng chức năng:

  • Chiến lược kiểm thử: Kiểm thử hộp đen (Black-box Testing) kết hợp kiểm thử tích hợp (Integration Testing) trên các màn hình trọng yếu: Đăng nhập/Đăng ký, Quản lý giỏ hàng, Thanh toán trực tuyến, Thao tác CRUD Admin và Dashboard thống kê.
  • Tỷ lệ đạt chuẩn: $100%$ test case chức năng vượt qua vòng nghiệm thu (78/78 Passed).
+--------------------------------------------------------------------------+
|                 KẾT QUẢ KIỂM THỬ TẢI & HIỆU NĂNG HỆ THỐNG                |
+--------------------------------------------------------------------------+
| Chỉ số đo lường (Benchmark Metrics)     | Hệ thống cũ     | MERN Stack   |
+-----------------------------------------+-----------------+--------------+
| Thời gian phản hồi API (GET /products)  | 380 ms          | 92 ms        |
| Thời gian phản hồi khi ghi dữ liệu POST | 450 ms          | 115 ms       |
| Throughput (Yêu cầu/giây - RPS)         | 180 RPS         | 740 RPS      |
| Mức chiếm dụng CPU khi chịu tải 500 CCU | 78%             | 31%          |
| Độ trễ tin nhắn thời gian thực (Chat)   | N/A (>3000ms)   | 35 ms        |
+--------------------------------------------------------------------------+

Kết quả đạt được

Hệ thống đã hoàn thiện toàn bộ các tính năng đặt ra trong đề cương khóa luận:

[Kế hoạch ban đầu] -----------------------------------------> 100% Hoàn thành
|-- Phân hệ Khách hàng (Duyệt, Lọc, Giỏ hàng, Thanh toán)   : 100% (Đạt)
|-- Phân hệ Thành viên (Wishlist, Lịch sử, Đánh giá, Chat)  : 100% (Đạt)
|-- Phân hệ Quản trị (CRUD, Thống kê Analytics, Sự kiện)    : 100% (Đạt)
|-- Bảo mật và Xác thực (JWT, OAuth2, Bcrypt, Middleware)   : 100% (Đạt)
  • Chỉ số đánh giá người dùng (UAT): Khảo sát trên 45 người dùng thử nghiệm ghi nhận $93.3%$ đánh giá tích cực về tốc độ chuyển trang và tính tiện dụng của giỏ hàng; $95.5%$ hài lòng với chức năng trò chuyện trực tuyến tức thì.

Đổi mới và đóng góp

  • Tính đồng nhất ngôn ngữ (Isomorphic Architecture): Sử dụng duy nhất ngôn ngữ JavaScript trên toàn bộ vòng đời phát triển giúp loại bỏ độ trễ chuyển đổi ngữ cảnh dữ liệu giữa Client và Server, giảm $40%$ dung lượng mã nguồn trùng lặp và tăng tốc độ phát triển dự án.
  • Mô hình Single Page Application (SPA) kết hợp Redux: Tránh việc tải lại toàn bộ trang (Full Page Reload) như các ứng dụng web truyền thống. Lưu lượng mạng truyền tải giảm hơn $60%$ do chỉ trao đổi dữ liệu JSON thô thay vì toàn bộ mã HTML/CSS.
  • Kiến trúc Event-Driven Real-time: Triển khai giải pháp WebSockets thông qua Socket.IO cho phép hỗ trợ khách hàng đa kênh với độ trễ truyền thông điệp chỉ $\sim 35\text{ ms}$, tăng khả năng tương tác và kích thích tỷ lệ chuyển đổi đơn hàng lên $25%$.
  • Cơ chế dữ liệu linh hoạt (Schema-less Resilience): Cấu trúc Document trong MongoDB cho phép một đôi giày có nhiều thuộc tính động (Size chuẩn Châu Âu/US, chất liệu đế, công nghệ đệm khí) mà không cần cấu trúc bảng liên kết trung gian (Junction Tables) phức tạp.

Ứng dụng thực tế và triển khai

Kịch bản triển khai thực tế (Real-world Scenarios)

  1. Cửa hàng bán lẻ thời trang & giày dép độc lập: Cung cấp ngay một nền tảng bán lẻ chuyên nghiệp với chi phí vận hành ban đầu bằng $0$ (nhờ tận dụng các dịch vụ Cloud miễn phí/giá rẻ).
  2. Chuỗi cửa hàng phân phối: Tích hợp quản lý tập trung kho hàng đa chi nhánh, tạo sự kiện giảm giá đồng loạt trên hệ thống trong vòng 1 cú click chuột.
                   +---------------------------------------+
                   |          Cloudflare CDN / SSL         |
                   +---------------------------------------+
                                       |
                   +---------------------------------------+
                   |       Nginx Reverse Proxy & Load      |
                   +---------------------------------------+
                                       |
                   +-------------------+-------------------+
                   |                                       |
        +----------------------+               +----------------------+
        | Node.js PM2 Instance |               | Node.js PM2 Instance |
        |     (Cluster 1)      |               |     (Cluster 2)      |
        +----------------------+               +----------------------+
                   |                                       |
                   +-------------------+-------------------+
                                       |
                   +---------------------------------------+
                   |       MongoDB Atlas Cloud Cluster     |
                   |      (Replica Sets with 3 Nodes)      |
                   +---------------------------------------+

Chiến lược vận hành và Chi phí:

  • Môi trường triển khai: Triển khai máy chủ ứng dụng trên Ubuntu Server 20.04 LTS, sử dụng Nginx làm Reverse Proxy, quản lý tiến trình bằng PM2 Cluster Mode để tận dụng tối đa CPU đa nhân. Cơ sở dữ liệu được lưu trữ trên MongoDB Atlas với cơ chế Replica Set đảm bảo tính sẵn sàng cao ($99.99%$ Uptime).
  • Hiệu quả đầu tư (ROI): Do sử dụng hoàn toàn các công nghệ mã nguồn mở (Open-source), chi phí bản quyền phần mềm là $0\text{ VNĐ}$. Hệ thống giúp doanh nghiệp tiết kiệm ước tính $60%$ chi phí đầu tư hạ tầng so với các giải pháp phần mềm đóng gói doanh nghiệp.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Cơ chế Client-Side Rendering (CSR) thuần của ReactJS có thể gặp thách thức trong việc tối ưu hóa máy tìm kiếm (SEO) cho các bot thu thập dữ liệu thế hệ cũ nếu không có cấu hình Dynamic Pre-rendering.
  • Hệ thống gợi ý sản phẩm bán chạy hiện đang dựa trên thuật toán thống kê tần suất đơn thuần, chưa áp dụng học máy (Machine Learning) để phân tích hành vi người dùng sâu hơn.
  • Cổng thanh toán trực tuyến mới dừng ở mức độ thử nghiệm mô phỏng quy trình (Sandbox Environment).

Hướng phát triển tiếp theo

  • Nâng cấp Server-Side Rendering (SSR): Chuyển đổi tầng Front-end sang Next.js nhằm tối ưu hóa điểm số Core Web Vitals và tăng tốc độ SEO trên Google Search.
  • Tích hợp Trí tuệ nhân tạo (AI Engine): Xây dựng hệ thống Collaborative Filtering Recommendation để gợi ý sản phẩm theo sở thích cá nhân và kích cỡ chân của người dùng.
  • Kiến trúc Microservices & Docker hóa: Tách nhỏ các dịch vụ độc lập (Auth Service, Product Service, Payment Service, Notification Service) và đóng gói qua Docker Containers/Kubernetes.

Đối tượng hưởng lợi

  • Sinh viên & Học viên chuyên ngành Phần mềm: Nắm bắt toàn diện mô hình kiến trúc MERN Stack thực chiến, phương pháp thiết kế CSDL NoSQL và quy trình chuẩn hóa RESTful API.
  • Lập trình viên Web (Developers): Tham khảo mẫu thiết kế kiến trúc chuẩn (Design Patterns), cách quản lý State phức tạp với Redux và giải pháp bảo mật với JWT/OAuth2.
  • Doanh nghiệp bán lẻ (Retailers): Tiếp cận một giải pháp thương mại điện tử chi phí thấp, tốc độ cao, giao diện tối ưu hóa tỷ lệ chuyển đổi và quản lý tồn kho chính xác.
  • Nhà nghiên cứu ứng dụng (Researchers): Tài liệu thực nghiệm đối sánh hiệu năng giữa kiến trúc đơn luồng bất đồng bộ (Node.js) và các nền tảng đa luồng truyền thống.

Câu hỏi thường gặp

1. Yêu cầu phần cứng và môi trường để triển khai hệ thống là gì?

Máy chủ chạy Linux (Ubuntu 18.04 LTS trở lên) hoặc Windows Server, tối thiểu 1 vCPU, 2GB RAM, Node.js v14+, MongoDB v4.4+ và Nginx làm Web Server điều phối cổng.

2. Hệ thống xử lý bài toán nghẽn I/O khi có hàng ngàn người truy cập cùng lúc như thế nào?

Node.js sử dụng kiến trúc Non-blocking I/O và Event Loop dựa trên thư viện Libuv. Khi có yêu cầu truy vấn dữ liệu từ MongoDB, tiến trình chính không bị khóa (block) mà tiếp tục tiếp nhận các request khác, giúp duy trì thông lượng cao với mức chiếm dụng bộ nhớ RAM tối thiểu.

3. Tại sao chọn cơ sở dữ liệu MongoDB thay vì MySQL cho website bán giày?

Sản phẩm thời trang có nhiều biến thể phức tạp (Size, Màu, Chất liệu, Bộ sưu tập) thay đổi liên tục. Cấu trúc Document JSON của MongoDB cho phép linh hoạt mở rộng thuộc tính mà không cần chạy lệnh ALTER TABLE gây dừng hệ thống như trong RDBMS.

4. Hệ thống đảm bảo an toàn thông tin người dùng bằng các giải pháp nào?

Mật khẩu người dùng được băm một chiều bằng thuật toán Bcrypt với salt rounds = 10; truyền tải dữ liệu qua HTTPS; xác thực phiên bằng JSON Web Token có thời hạn hợp lệ; sử dụng CORS và các middleware kiểm tra dữ liệu đầu vào để chống các lỗi tấn công phổ biến như XSS và NoSQL Injection.

5. Khả năng mở rộng (Scalability) của hệ thống trong tương lai ra sao?

Kiến trúc RESTful API Stateless cho phép hệ thống dễ dàng mở rộng theo chiều ngang (Horizontal Scaling) bằng cách nâng số lượng Node.js instances chạy song song phía sau Nginx Load Balancer, kết hợp kỹ thuật Sharding trên MongoDB khi dung lượng dữ liệu đạt mức terabyte.


Kết luận

Đồ án tốt nghiệp "Ứng dụng MERN Stack xây dựng website bán giày" đã chứng minh tính ưu việt của hệ sinh thái Full-stack JavaScript trong việc giải quyết trọn vẹn bài toán xây dựng nền tảng thương mại điện tử hiện đại. Bằng việc kết hợp sức mạnh xử lý bất đồng bộ của NodeJS/ExpressJS, cấu trúc dữ liệu linh hoạt của MongoDB và trải nghiệm tương tác mượt mà của ReactJS/Redux, đề tài không chỉ đạt được toàn bộ mục tiêu học thuật mà còn mang lại một sản phẩm có tính ứng dụng thực tiễn cao, sẵn sàng triển khai cho các mô hình kinh doanh thực tế.