Giới thiệu dự án

Trong kỷ nguyên Chuyển đổi số và Công nghiệp 4.0, ngành Thương mại Điện tử (E-Commerce) tại Việt Nam và toàn cầu chứng kiến tốc độ tăng trưởng kép hàng năm (CAGR) đạt trên 16.5%. Đặc biệt, phân khúc bán lẻ thiết bị điện tử thông minh và gia dụng đòi hỏi hệ thống quản lý có tính sẵn sàng cao, bảo mật giao dịch tuyệt đối, khả năng xử lý đơn hàng theo thời gian thực (real-time) và trải nghiệm người dùng liền mạch. Đồ án tốt nghiệp ngành Công nghệ Thông tin tại Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh của sinh viên Lê Nguyễn Trường Giang (GVHD: ThS. Nguyễn Minh Đạo) tập trung giải quyết bài toán cốt lõi: Xây dựng website thương mại điện tử chuyên biệt cho ngành hàng điện tử thông minh và gia dụng, ứng dụng kiến trúc tách rời (Decoupled Architecture) với Spring Boot và Angular.

Vấn đề thực tiễn và bài toán đặt ra

Các hệ thống thương mại điện tử truyền thống dựa trên nền tảng nguyên khối (Monolithic) hoặc CMS mã nguồn mở thường bộc lộ nhiều hạn chế nghiêm trọng:

  • Độ trễ phản hồi cao (> 2.5s) do cơ chế kết xuất phía máy chủ (Server-Side Rendering) cồng kềnh, tiêu tốn tài nguyên băng thông.
  • Thiếu khả năng phản hồi thời gian thực trong việc cập nhật trạng thái đơn hàng và biến động tồn kho, gây ra tình trạng bán vượt số lượng thực tế (overselling).
  • Rủi ro bảo mật phiên làm việc (Session Hijacking) và độ phức tạp cao khi mở rộng sang các nền tảng đa kênh.
  • Gánh nặng lưu trữ đa phương tiện khi máy chủ ứng dụng phải đồng thời xử lý logic nghiệp vụ và lưu trữ dữ liệu hình ảnh độ phân giải cao.

Mục tiêu của đề tài

  1. Xây dựng hoàn chỉnh kiến trúc RESTful API phía máy chủ bằng Spring Boot kết hợp cơ chế kiểm soát bảo mật Spring SecurityJSON Web Token (JWT).
  2. Thiết kế ứng dụng một trang (Single Page Application - SPA) phía máy khách bằng Angular, tối ưu hóa trải nghiệm người dùng với mô hình kiến trúc dựa trên thành phần (Component-Based Architecture).
  3. Triển khai giao thức hai chiều WebSocket (STOMP) để đồng bộ thông báo đơn hàng và cập nhật trạng thái kho tức thời giữa Client và Quản trị viên (Admin).
  4. Tích hợp cổng thanh toán trực tuyến quốc tế PayPal REST API song song với phương thức thanh toán khi nhận hàng (COD).
  5. Tối ưu hạ tầng lưu trữ đám mây qua Cloudinary CDN và xây dựng bảng điều khiển quản trị thông minh với Chart.js.

Phạm vi và giới hạn của hệ thống

  • Phạm vi chức năng: Quản lý danh mục, biến thể sản phẩm, giỏ hàng, đặt hàng trực tuyến/offline, xử lý vòng đời đơn hàng, đánh giá/bình luận, thống kê doanh thu đa chiều và quản lý khách hàng.
  • Giới hạn kỹ thuật: Hệ thống tập trung vào mô hình B2C đơn cửa hàng (Single-vendor), chưa tích hợp sàn thương mại điện tử đa người bán (Multi-vendor) và chưa hỗ trợ kết nối trực tiếp với thiết bị phần cứng POS tại điểm bán.

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

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

+-------------------------------------------------------------------------+
|                           HỆ THỐNG HIỆN TẠI                             |
|                                                                         |
|  [Monolithic PHP/WordPress]            [Spring Boot + Angular SPA]      |
|  - Độ trễ: 2.0s - 3.5s                 - Độ trễ: < 250ms                |
|  - Ghép nối chặt (Tightly Coupled)     - Tách rời hoàn toàn (Decoupled) |
|  - Polling gây tải máy chủ             - WebSocket Real-time Push       |
|  - Lưu trữ ảnh cục bộ                  - Cloudinary CDN tối ưu          |
+-------------------------------------------------------------------------+
Tiêu chí kỹ thuật Nền tảng Monolithic truyền thống (PHP/Laravel MVC) Nền tảng CMS (WordPress/WooCommerce) Giải pháp đề xuất: Spring Boot + Angular
Kiến trúc Khối đồng nhất, ghép nối chặt Plugin cồng kềnh, phụ thuộc database Tách rời Frontend/Backend qua RESTful API
Thời gian phản hồi 1.8s – 3.2s 2.5s – 4.5s (do nhiều plugin) < 250ms (Tải dữ liệu bất đồng bộ)
Giao tiếp Real-time Hạn chế (Polling HTTP tốn tài nguyên) Hạn chế, cần plugin bên thứ ba WebSocket/STOMP native hỗ trợ hai chiều
Quản lý phiên Stateful Session (lưu trên server RAM) PHP Session/Cookies Stateless Token-based Authentication (JWT)
Khả năng mở rộng Phức tạp khi scale theo chiều ngang Rất khó scale khi dữ liệu lớn Dễ dàng container hóa và mở rộng độc lập

Phân cấp yêu cầu theo phương pháp MoSCoW

  • Must Have (Bắt buộc): Xác thực JWT, quản lý sản phẩm, giỏ hàng session/database, quy trình checkout COD & PayPal, WebSocket thông báo đơn hàng, phân quyền Role-Based Access Control (Admin/Customer).
  • Should Have (Nên có): Dashboard trực quan hóa với Chart.js, xuất báo cáo thống kê, upload ảnh tự động lên Cloudinary, lọc đa tiêu chí (danh mục, khoảng giá, rating).
  • Could Have (Có thể có): Tìm kiếm Real-time theo sự kiện keyup, hiển thị sản phẩm liên quan và thịnh hành dựa trên thuật toán đếm lượt xem/doanh số.
  • Won't Have (Chưa có trong giai đoạn này): Đề xuất sản phẩm bằng Machine Learning, xử lý thanh toán ví điện tử nội địa qua VietQR/Momo.

Thiết kế hệ thống

Hệ thống được tổ chức theo kiến trúc Clean MVC / Multi-Tier Layered Architecture, đảm bảo tính độc lập giữa tầng giao diện, tầng điều hướng, tầng nghiệp vụ và tầng dữ liệu.

graph TD
    subgraph Client_Layer ["Client Layer (Angular 16 SPA)"]
        UI[Angular Components & Views]
        Service[Angular HTTP Services & RxJS]
        WS_Client[WebSocket SockJS / STOMP Client]
    end

    subgraph API_Gateway_Security ["Security & Controller Layer"]
        Filter[JWT Authentication Filter & CORS]
        AuthCtrl[Auth Controller]
        ProdCtrl[Product Controller]
        OrderCtrl[Order Controller]
        AdminCtrl[Admin Management Controller]
    end

    subgraph Service_Layer ["Business Logic Layer (Spring Boot 3)"]
        AuthServ[Auth Service & UserDetails]
        ProdServ[Product Service]
        OrderServ[Order & Transaction Service]
        PaypalServ[PayPal Integration Service]
        CloudServ[Cloudinary Media Service]
    end

    subgraph Data_Layer ["Persistence & External Services"]
        Repo[Spring Data JPA Repositories]
        DB[(MySQL 8.0 Database)]
        Cloud[(Cloudinary CDN)]
        PaypalAPI[(PayPal Gateway)]
    end

    UI --> Service
    UI --> WS_Client
    Service -->|HTTPS REST Request| Filter
    WS_Client <-->|Bi-directional WS| Filter
    Filter --> AuthCtrl & ProdCtrl & OrderCtrl & AdminCtrl
    AuthCtrl --> AuthServ
    ProdCtrl --> ProdServ
    OrderCtrl --> OrderServ
    OrderCtrl --> PaypalServ
    ProdCtrl --> CloudServ
    AuthServ & ProdServ & OrderServ --> Repo
    Repo --> DB
    CloudServ --> Cloud
    PaypalServ --> PaypalAPI

Technology Stack và phiên bản cụ thể

  • Backend Framework: Spring Boot v3.1.5 (Java 17 LTS), Spring Security v6.1, Spring Data JPA, Hibernate ORM v6.2.
  • Frontend Framework: Angular v16.2.0, TypeScript v5.1, RxJS v7.8, Bootstrap v5.3, SweetAlert2.
  • Database Engine: MySQL Server v8.0.34, hỗ trợ bộ ký tự UTF8MB4 và tuân thủ các nguyên tắc ACID (Atomicity, Consistency, Isolation, Durability).
  • Third-party Services & Protocols: Cloudinary Java SDK v1.34, PayPal Checkout SDK v2.0, WebSocket STOMP qua SockJS, Chart.js v4.4.

Thiết kế cơ sở dữ liệu quan hệ (Relational Database Design)

Cơ sở dữ liệu bao gồm các thực thể cốt lõi được tối ưu chỉ mục (Indexing) cho việc truy vấn:

  • users (id, username, email, password, role, is_active, created_at)
  • categories (id, name, description, image_url)
  • products (id, name, price, discount_price, stock_quantity, category_id, description, status)
  • orders (id, user_id, total_amount, payment_method, payment_status, order_status, created_at)
  • order_details (id, order_id, product_id, quantity, unit_price)
  • reviews (id, user_id, product_id, rating_score, comment, created_at)
  • favorites (id, user_id, product_id)

Đặc tả API Endpoints tiêu biểu

Phương thức Endpoint Phân quyền Chức năng nghiệp vụ
POST /api/v1/auth/login Public Xác thực thông tin, cấp phát JWT Bearer token
GET /api/v1/products Public Lấy danh sách sản phẩm có phân trang (Pageable)
POST /api/v1/orders Customer Tạo đơn hàng mới, kích hoạt giao dịch và gửi WebSocket
GET /api/v1/admin/statistics/revenue Admin Tổng hợp doanh thu theo tháng/năm cho biểu đồ
POST /api/v1/payments/paypal/create Customer Khởi tạo phiên thanh toán PayPal Capture

Methodology

Đề tài áp dụng mô hình phát triển tích hợp Agile-Waterfall: Các pha thiết kế cơ sở dữ liệu và đặc tả yêu cầu được xác định chặt chẽ ngay từ đầu, sau đó quá trình hiện thực hóa được chia thành 15 tuần làm việc liên tục (từ 20/08/2023 đến 20/12/2023).

Tuần 1-3   : Khảo sát, đặc tả Use Case, thiết kế mô hình quan hệ ERD
Tuần 4-6   : Cấu hình Spring Security, JWT, WebSocket & Lập trình REST API Core
Tuần 7-11  : Xây dựng SPA Frontend (Angular Components, Cart, Dynamic Sorting, Live Search)
Tuần 12-14 : Xây dựng Dashboard Quản trị, Phân quyền Admin, Quản lý kho, Xuất hóa đơn
Tuần 15-17 : Tích hợp PayPal SDK, Cloudinary CDN, hoàn thiện Chart.js
Tuần 18    : Kiểm thử chức năng, Stress Test, tối ưu hiệu năng và đóng gói ứng dụng

Implementation và kết quả

Development process

Cấu trúc mã nguồn Backend được phân tách thành các module rõ ràng: config/, controllers/, dtos/, entities/, repositories/, services/, exceptions/.

Trích đoạn Backend: Cấu hình WebSocket & Xử lý Transactional Order

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/ws-ecommerce")
                .setAllowedOriginPatterns("*")
                .withSockJS();
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        registry.enableSimpleBroker("/topic");
        registry.setApplicationDestinationPrefixes("/app");
    }
}
@Service
@RequiredArgsConstructor
public class OrderServiceImpl implements OrderService {
    private final OrderRepository orderRepository;
    private final ProductRepository productRepository;
    private final SimpMessagingTemplate messagingTemplate;

    @Override
    @Transactional(rollbackFor = Exception.class)
    public OrderResponseDTO createOrder(OrderRequestDTO dto, Long userId) {
        // Kiểm tra tồn kho và trừ số lượng với kỹ thuật Pessimistic Locking
        for (OrderItemDTO item : dto.getItems()) {
            Product product = productRepository.findByIdWithLock(item.getProductId())
                .orElseThrow(() -> new ResourceNotFoundException("Sản phẩm không tồn tại"));
            if (product.getStockQuantity() < item.getQuantity()) {
                throw new InsufficientStockException("Sản phẩm " + product.getName() + " không đủ hàng");
            }
            product.setStockQuantity(product.getStockQuantity() - item.getQuantity());
            productRepository.save(product);
        }
        Order order = orderRepository.save(OrderMapper.toEntity(dto, userId));
        
        // Phát thông báo Real-time đến Admin Dashboard
        messagingTemplate.convertAndSend("/topic/admin/orders", 
            new NotificationDTO("Đơn hàng mới #" + order.getId(), order.getTotalAmount()));
        return OrderMapper.toDTO(order);
    }
}

Trích đoạn Frontend: Angular Service xử lý tìm kiếm Real-time với RxJS

@Injectable({ providedIn: 'root' })
export class ProductSearchService {
  private http = inject(HttpClient);
  private searchSubject = new Subject<string>();

  public products$ = this.searchSubject.pipe(
    debounceTime(300),
    distinctUntilChanged(),
    switchMap(keyword => this.searchProducts(keyword)),
    catchError(err => {
      console.error('Lỗi truy vấn sản phẩm:', err);
      return of([]);
    })
  );

  public updateKeyword(keyword: string): void {
    this.searchSubject.next(keyword.trim());
  }

  private searchProducts(keyword: string): Observable<Product[]> {
    if (!keyword) return of([]);
    return this.http.get<Product[]>(`${environment.apiUrl}/products/search?q=${encodeURIComponent(keyword)}`);
  }
}

Testing và validation

Quá trình đảm bảo chất lượng phần mềm được thực hiện qua các bài kiểm thử tự động và bán tự động:

  • Unit Testing: Sử dụng JUnit 5Mockito trên Backend đạt tỷ lệ bao phủ mã nguồn (Code Coverage) đạt 84.5%. Frontend sử dụng Jasmine & Karma đạt độ bao phủ 78.2%.
  • Performance Benchmark (Kiểm thử tải): Sử dụng công cụ Apache JMeter mô phỏng 1,000 người dùng ảo đồng thời truy cập và đặt hàng trong khoảng thời gian 60 giây.
    • Tần suất xử lý trung bình: 420 transactions/second (TPS).
    • Thời gian phản hồi trung bình (Average Response Time): 185ms.
    • Tỷ lệ lỗi giao dịch (Error Rate): 0.0% trong điều kiện tải tiêu chuẩn.
  • Bug Tracking Statistics: Phát hiện tổng cộng 48 lỗi kỹ thuật trong 4 vòng sprint (vấn đề CORS, bất đồng bộ WebSocket token handshake, Deadlock tồn kho). 100% lỗi đã được phân tích nguyên nhân gốc rễ và xử lý triệt để trước khi nghiệm thu.
+-------------------------------------------------------------------------+
|                  KẾT QUẢ KIỂM THỬ TẢI TRÊN JMETER                       |
|                                                                         |
|  [Tải đồng thời: 1,000 Users] =====> Throughput: 420 TPS                |
|  [Độ trễ trung bình]          =====> 185ms                              |
|  [Tỷ lệ lỗi (Error Rate)]     =====> 0.00%                              |
|  [Backend Test Coverage]      =====> 84.5% (JUnit 5 + Mockito)          |
|  [Frontend Test Coverage]     =====> 78.2% (Jasmine + Karma)            |
+-------------------------------------------------------------------------+

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

Hệ thống đã hoàn thành 100% các mục tiêu kỹ thuật đề ra ban đầu:

  • Giao diện người dùng tương thích đa thiết bị (Responsive Design) với tốc độ tải trang lần đầu (First Contentful Paint) dưới 1.2 giây.
  • Phân loại ngưỡng tồn kho trực quan 4 trạng thái qua màu sắc: Hết hàng (Đỏ), Gần hết (Vàng cam), Tầm trung (Xanh dương), Còn nhiều (Xanh lá).
  • Tỷ lệ hài lòng của người dùng thử nghiệm qua thang đo System Usability Scale (SUS) đạt mức 86.5/100 điểm (thuộc nhóm xuất sắc).

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

  1. Kiến trúc đồng bộ dữ liệu Real-time qua STOMP WebSocket: Loại bỏ hoàn toàn giải pháp Polling truyền thống, giúp tiết kiệm 65% băng thông mạng của máy chủ và loại bỏ độ trễ phản hồi khi có đơn hàng mới phát sinh.
  2. Cơ chế phân ngưỡng tồn kho đa tầng (Multi-threshold Stock Tracking): Tích hợp cảnh báo trực quan tự động trên Data Grid của Admin, giảm thiểu 80% thời gian quản lý và kiểm kê của chủ cửa hàng.
  3. Mô hình kiến trúc đa phương tiện kết hợp Cloudinary CDN: Giảm tải I/O trên ổ đĩa máy chủ ứng dụng đến 85%, tăng tốc độ tải hình ảnh sản phẩm gấp 3.2 lần nhờ mạng phân phối nội dung toàn cầu.
  4. Đóng góp học thuật và ứng dụng: Đồ án cung cấp một tài liệu tham khảo chuẩn mực về triển khai kiến trúc Enterprise Web ứng dụng Java Spring Boot kết hợp Angular hiện đại, có thể mở rộng làm khung sườn (boilerplate) cho các nghiên cứu tiếp theo.

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

Kịch bản vận hành thực tế

Hệ thống sẵn sàng áp dụng trực tiếp cho các chuỗi bán lẻ thiết bị công nghệ, cửa hàng đồ gia dụng thông minh quy mô vừa và nhỏ (SMEs). Hệ thống đáp ứng năng lực phục vụ từ 10,000 đến 50,000 lượt truy cập hoạt động mỗi ngày mà không cần nâng cấp phần cứng phức tạp.

+-------------------------------------------------------------------------+
|                  MÔ HÌNH TRIỂN KHAI THỰC TẾ (PRODUCTION)                 |
|                                                                         |
|  Internet ----> [Nginx Reverse Proxy: Port 80/443]                      |
|                     |                                                   |
|                     +---> Static Assets (Angular Dist): /var/www/html   |
|                     +---> REST API Proxy: http://localhost:8080/api     |
|                     +---> WebSocket Proxy: http://localhost:8080/ws     |
|                                     |                                   |
|                        [Spring Boot Application Server]                 |
|                                     |                                   |
|                          [MySQL 8.0 Engine]                             |
+-------------------------------------------------------------------------+

Hướng dẫn triển khai và yêu cầu hệ thống

Yêu cầu phần cứng tối thiểu:

  • Server: 2 vCPU, 4GB RAM, 20GB SSD Storage.
  • Client: Trình duyệt hiện đại hỗ trợ ECMAScript 6+ (Chrome, Firefox, Safari, Edge).

Hướng dẫn cài đặt hạ tầng:

  1. Thiết lập cơ sở dữ liệu:
    mysql -u root -p -e "CREATE DATABASE ecommerce_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
    mysql -u root -p ecommerce_db < backup_schema.sql
    
  2. Đóng gói và chạy Backend (Spring Boot):
    mvn clean package -DskipTests
    java -jar target/ecommerce-backend-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
    
  3. Biên dịch Frontend (Angular) và cấu hình Nginx:
    npm install
    ng build --configuration production
    
    Cấu hình Nginx chuyển hướng static file trỏ tới thư mục dist/ và cấu hình Reverse Proxy cho location /api trỏ về cổng 8080.

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

Hạn chế kỹ thuật

  • Chưa tích hợp công cụ tìm kiếm phân tán chuyên sâu như Elasticsearch, dẫn đến hiệu năng tìm kiếm văn bản đầy đủ (Full-text search) có thể giảm sút khi số lượng sản phẩm vượt quá 500,000 bản ghi.
  • Hệ thống cơ sở dữ liệu vẫn sử dụng mô hình đơn thể (Single Instance MySQL), chưa cấu hình Master-Slave Replication để dự phòng sự cố (High Availability).

Định hướng mở rộng

  • Nâng cấp kiến trúc từ Clean MVC sang hệ sinh thái Microservices với Spring CloudApache Kafka để phân tách dịch vụ xử lý đơn hàng và thanh toán thành các dịch vụ độc lập.
  • Tích hợp lớp đệm phân tán Redis Cache nhằm tối ưu hóa các truy vấn danh mục và sản phẩm bán chạy, giảm tải I/O trực tiếp vào cơ sở dữ liệu.
  • Xây dựng mô hình gợi ý sản phẩm thông minh ứng dụng giải thuật lọc cộng tác (Collaborative Filtering).

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

+-----------------------------------------------------------------------------+
|                            ĐỐI TƯỢNG HƯỞNG LỢI                              |
|                                                                             |
|  [Sinh viên / Học thuật]   [Kỹ sư Lập trình]       [Doanh nghiệp SME]       |
|  - Khóa luận mẫu chuẩn mực - Mẫu thiết kế Clean MVC - Chi phí đầu tư thấp    |
|  - Tài liệu tham khảo sâu  - Code pattern JWT + WS - Triển khai trong 3 ngày|
+-----------------------------------------------------------------------------+
  • Sinh viên và Người học: Tiếp cận tài liệu chuyên sâu, trực quan về mô hình xây dựng hệ sinh thái Web Fullstack chuẩn doanh nghiệp với Spring Boot và Angular.
  • Kỹ sư phát triển phần mềm (Developers): Kế thừa mã nguồn chuẩn mực về cơ chế phân quyền bảo mật JWT, xử lý đồng thời trong giao dịch cơ sở dữ liệu và tích hợp cổng thanh toán quốc tế PayPal.
  • Doanh nghiệp bán lẻ (SMEs): Sở hữu giải pháp quản trị thương mại điện tử hoàn chỉnh, độ ổn định cao, tiết kiệm chi phí bản quyền với thời gian triển khai thực tế chỉ từ 3 đến 5 ngày làm việc.

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

1. Hệ thống có yêu cầu cấu hình máy chủ chuyên dụng đắt tiền không?

Không. Nhờ kiến trúc tối ưu và khả năng quản lý tài nguyên hiệu quả của Spring Boot kết hợp máy chủ nhúng (Embedded Tomcat), hệ thống có thể vận hành mượt mà trên các gói máy chủ ảo (VPS) phổ thông với chi phí vận hành chỉ từ $10 - $20/tháng.

2. Làm thế nào để giải quyết xung đột khi nhiều người cùng mua một sản phẩm sắp hết hàng?

Hệ thống ứng dụng cơ chế khóa dữ liệu cấp độ dòng (Pessimistic Locking) trong các hàm @Transactional của Spring Data JPA. Khi một giao dịch đang trừ tồn kho, các giao dịch khác sẽ phải chờ hoặc nhận thông báo lỗi thiếu hàng ngay lập tức nếu số lượng khả dụng không đủ, đảm bảo không bao giờ xảy ra lỗi âm kho (Overselling).

3. Hệ thống có thể tích hợp thêm các cổng thanh toán nội địa như VNPay, MoMo không?

Có. Nhờ thiết kế theo mẫu thiết kế Strategy Pattern tại tầng nghiệp vụ thanh toán (PaymentService), các nhà phát triển có thể dễ dàng bổ sung thêm các adapter mới cho VNPay, ZaloPay, MoMo mà không làm thay đổi logic nghiệp vụ cốt lõi hiện có.

4. Quy trình bảo trì và sao lưu dữ liệu được thực hiện như thế nào?

Dữ liệu đa phương tiện được lưu trữ an toàn trên hạ tầng đám mây Cloudinary với cơ chế nhân bản tự động. Cơ sở dữ liệu MySQL được thiết lập sao lưu định kỳ tự động bằng công cụ mysqldump kết hợp Cronjob hàng ngày.

5. Khả năng chịu tải tối đa của hệ thống hiện tại là bao nhiêu?

Theo kết quả kiểm thử thực nghiệm trên JMeter, hệ thống chịu được tải ổn định ở mức 420 yêu cầu/giây với 1,000 người dùng đồng thời và thời gian đáp ứng trung bình dưới 200ms. Khi cần tải cao hơn, hệ thống có thể mở rộng thông qua cân bằng tải Nginx và nhiều phiên bản (instances) Spring Boot backend.


Kết luận

Đồ án tốt nghiệp "Xây dựng website thương mại điện tử với Spring Boot và Angular" do sinh viên Lê Nguyễn Trường Giang thực hiện đã chứng minh tính khả thi, độ hoàn thiện kỹ thuật cao và giá trị thực tiễn vượt trội. Bằng cách áp dụng các tiêu chuẩn công nghệ hiện đại như Spring Boot 3, Angular 16, Spring Security JWT, WebSocket và PayPal Gateway, dự án không chỉ giải quyết triệt để các hạn chế về hiệu năng và bảo mật của các hệ thống cũ mà còn mở ra nền tảng vững chắc cho các mô hình kinh doanh số. Đây là công trình nghiên cứu ứng dụng có giá trị tham khảo học thuật cao và sẵn sàng đưa vào vận hành thương mại thực tế.