Bối cảnh và vấn đề nghiên cứu

Đồ án tốt nghiệp kỹ sư Công nghệ thông tin (chuyên ngành Công nghệ phần mềm) với đề tài "Xây dựng Website kinh doanh sản phẩm xanh" được thực hiện bởi sinh viên Nguyễn Minh Sơn (MSSV: 20110713) và Trần Minh Mẫn (MSSV: 20110301), dưới sự hướng dẫn của TS. Lê Văn Vinh tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh (tháng 7 năm 2024, mã số lưu trữ SKL013874).

Bối cảnh thực tiễn được tác giả nêu rõ xuất phát từ sự phát triển của khoa học kỹ thuật thúc đẩy chất lượng cuộc sống, kéo theo nhu cầu mua sắm và tiêu dùng các sản phẩm xanh, sạch, thân thiện với môi trường ngày càng được ưu tiên. Tuy nhiên, người tiêu dùng gặp khó khăn trong việc tiếp cận nguồn thông tin minh bạch về xuất xứ, tính năng, ưu nhược điểm của sản phẩm, cũng như việc cân nhắc mức giá phù hợp với ngân sách cá nhân. Bên cạnh đó, các phương thức mua sắm và thanh toán trực tuyến thuận tiện cho nhóm sản phẩm này vẫn chưa được đáp ứng đồng bộ.

Mục tiêu và nhiệm vụ nghiên cứu của đề tài được phân định thành hai nhóm:

  1. Nhiệm vụ lý thuyết:
    • Nghiên cứu cơ sở lý thuyết về kiến trúc phần mềm phân tán Microservice.
    • Tìm hiểu hệ sinh thái công nghệ Spring Boot cho phía máy chủ (Back-end) và thư viện ReactJS cho phía giao diện (Front-end).
  2. Nhiệm vụ thực hành:
    • Thiết kế và xây dựng hệ thống website thương mại điện tử hoàn chỉnh theo kiến trúc Microservice.
    • Xây dựng hệ thống giao diện lập trình ứng dụng (API) cho từng phân hệ nghiệp vụ bằng Spring Boot.
    • Thiết kế và quản lý cơ sở dữ liệu quan hệ bằng hệ quản trị MySQL.
    • Triển khai cơ chế xác thực và ủy quyền người dùng bằng JSON Web Token (JWT) kết hợp Spring Security.
    • Phát triển giao diện người dùng tương tác bằng ReactJS, tích hợp các thư viện React Query, Ant Design và TailwindCSS.
    • Tích hợp hệ thống gợi ý sản phẩm và các phương thức thanh toán trực tuyến (COD và PayPal).

Đối tượng nghiên cứu của đồ án là nhu cầu tiêu dùng, hành vi mua sắm trực tuyến sản phẩm xanh và quy trình nghiệp vụ thương mại điện tử (tìm kiếm, lọc, quản lý giỏ hàng, đặt hàng, xử lý đơn hàng, quản lý kho bãi, theo dõi đánh giá, phân tích thống kê).

Phạm vi nghiên cứu:

  • Không gian và nghiệp vụ: Nghiên cứu, khảo sát thực trạng 3 website kinh doanh tại Việt Nam (ECOESHOP, Xanh Việt Nam, Bao Bì Xanh); tập trung xây dựng đầy đủ các chức năng cho hai đối tượng người dùng chính là Khách hàng/Người dùng (User/Guest) và Quản trị viên (Admin).
  • Thời gian thực hiện: Từ ngày 10/03/2024 đến ngày 01/07/2024.

Cơ sở lý thuyết và phương pháp

Đề tài áp dụng các lý thuyết kiến trúc phần mềm phân tán và ngăn xếp công nghệ phát triển web hiện đại:

  1. Khung kiến trúc và giải pháp nền tảng:

    • Kiến trúc Microservice: Phân rã hệ thống nguyên khối (Monolithic) thành các dịch vụ độc lập có vòng đời phát triển và triển khai riêng biệt. Áp dụng các mẫu thiết kế: API Gateway, Client-side Discovery, Server-side Discovery, và mẫu Backend for Frontend (BFF).
    • Giao tiếp giữa các dịch vụ: Kết hợp giao tiếp đồng bộ qua giao thức RESTful HTTP và giao tiếp bất đồng bộ qua hệ thống Message Broker Apache Kafka (vận hành theo mô hình Producer, Broker, Consumer, chia partition trong Topics theo cơ chế Publish/Subscribe).
    • Giám sát và truy vết phân tán: Ứng dụng Zipkin (xây dựng dựa trên kiến trúc Dapper) để thực hiện Distributed Tracing; kết hợp Prometheus để thu thập dữ liệu chỉ số hệ thống (Metrics) qua endpoint /metrics và Grafana để trực quan hóa dữ liệu bằng ngôn ngữ truy vấn PromQL.
    • Hệ thống gợi ý (Recommendation System): Nghiên cứu cơ sở lý thuyết của 3 phương pháp tiếp cận: Lọc dựa trên nội dung (Content-based Filtering), Lọc cộng tác (Collaborative Filtering) và Lọc kết hợp (Hybrid Filtering).
  2. Ngăn xếp công nghệ phát triển:

    • Phía máy chủ (Back-end): Ngôn ngữ Java, Spring Framework, Spring Boot, Spring Data JPA (trừu tượng hóa tầng truy xuất dữ liệu), Spring Security (bảo mật, ủy quyền), Spring Cloud (quản lý phân tán, Discovery, Gateway), Spring Boot Actuator (cung cấp các endpoint giám sát tình trạng hệ thống /health, /info, /metrics), thư viện chuyển đổi đối tượng MapStruct, và thư viện xử lý token java-jwt.
    • Phía giao diện (Front-end): JavaScript, thư viện ReactJS (cơ chế Virtual DOM, luồng dữ liệu một chiều - One-way data flow, cấu trúc Component/Props/State), thư viện quản lý trạng thái máy chủ React Query (TanStack Query), thư viện thành phần giao diện Ant Design, CSS framework TailwindCSS, và thư viện truyền thông HTTP Axios.
    • Cơ sở dữ liệu: Hệ quản trị cơ sở dữ liệu quan hệ MySQL.
    • Triển khai và đóng gói: Môi trường ảo hóa Docker, quản lý đa container bằng Docker Compose qua tập tin cấu hình docker-compose.yml.
    • Quản lý quy trình và mã nguồn: Nền tảng YouTrack (theo dõi tiến độ theo bảng Scrum và Kanban), hệ thống quản lý phiên bản Git với kho lưu trữ GitHub và công cụ GitHub Desktop.
  3. Phương pháp nghiên cứu và mô hình hóa:

    • Phương pháp khảo sát hiện trạng: Phân tích ưu điểm, nhược điểm và tính năng của 3 nền tảng thương mại điện tử thực tế.
    • Phương pháp phân tích và thiết kế hệ thống hướng đối tượng: Sử dụng ngôn ngữ mô hình hóa UML để xây dựng sơ đồ trường hợp sử dụng (Use Case Diagram), đặc tả ca sử dụng, sơ đồ tuần tự (Sequence Diagram) và sơ đồ lớp chi tiết (Class Diagram).

Thiết kế và triển khai

Hệ thống được thiết kế theo kiến trúc Microservice với sự phân tách rõ ràng giữa tầng giao diện, cổng giao tiếp API Gateway và các dịch vụ nghiệp vụ độc lập:

  1. Phân chia dịch vụ nghiệp vụ (Microservices):
    • Authentication Service: Xử lý đăng ký, đăng nhập, cấp phát và thu hồi mã phiên JSON Web Token, quản lý vai trò và quyền hạn tài khoản.
    • User Service: Quản lý thông tin hồ sơ cá nhân (UserProfile), nhân viên (Staff), giỏ hàng (Cart, CartItem), đánh giá sản phẩm (Review), và danh sách sản phẩm theo dõi (UserFollowProduct).
    • Address Service: Xử lý phân cấp hành chính địa chỉ giao hàng của người dùng (Address, Province, District, Ward).
    • Product Service: Quản lý danh mục hàng hóa (Product, ProductCategory), hình ảnh sản phẩm (ProductImage), thương hiệu (Brand), đơn vị tính (Unit), các biến thể quy cách sản phẩm (Variant), và chương trình khuyến mãi (Sale, SaleProductCategory).
    • Inventory Service: Quản lý nghiệp vụ kho, kiểm soát số lượng tồn kho và lập phiếu nhập/xuất kho (Docket).
    • Order Service: Điều phối quy trình đặt hàng (Order, OrderItem), quản lý trạng thái đơn, lý do hủy đơn (OrderCancellationReason), phương thức thanh toán (PaymentMethod), ghi nhận giao dịch (Transaction), và hình thức vận chuyển (Delivery).
    • Infrastructure Service: Quản lý các tính năng hạ tầng phụ trợ, hệ thống thông báo (Notification) và phiên trao đổi trực tuyến (Chat).
Tên Microservice Trách nhiệm nghiệp vụ chính Các thực thể / Bảng dữ liệu quản lý
Authentication Service Xác thực người dùng, bảo mật API, phân quyền vai trò Identity, Role, IdentityRole, IdentityToken
User Service Hồ sơ người dùng, quản trị nhân viên, giỏ hàng, đánh giá, theo dõi UserProfile, Staff, Cart, CartItem, Review, UserFollowProduct
Address Service Quản lý sổ địa chỉ giao hàng và cấu trúc hành chính Address, Province, District, Ward
Product Service Quản lý sản phẩm, danh mục, thương hiệu, biến thể, khuyến mãi Product, ProductCategory, ProductImage, Brand, Unit, Variant, Sale, SaleProductCategory
Inventory Service Quản lý tồn kho hàng hóa, chứng từ nhập xuất Docket
Order Service Tiếp nhận đơn hàng, thanh toán, vận chuyển, xử lý giao dịch Order, OrderItem, OrderCancellationReason, PaymentMethod, Transaction, Delivery
Infrastructure Service Quản lý thông báo hệ thống, hỗ trợ tin nhắn trực tuyến Notification
  1. Thiết kế giải thuật gợi ý: Hệ thống triển khai thuật toán Lọc dựa trên nội dung (Content-based Filtering) nhằm trích xuất đặc trưng của sản phẩm xanh (danh mục, thuộc tính, thương hiệu) để tính toán độ tương đồng và gợi ý các sản phẩm phù hợp cho người dùng.

  2. Kiểm thử hệ thống: Quy trình kiểm thử được lập kế hoạch chi tiết từ ngày 17/06/2024 đến 21/06/2024, thực hiện kiểm thử theo từng module chức năng, kiểm thử luồng dữ liệu trên các sơ đồ tuần tự (Sequence Diagram), kiểm tra tính toàn vẹn dữ liệu qua API Gateway và khắc phục các lỗi phát sinh trước khi hoàn thiện báo cáo.

Nội dung chính theo từng chương

Chương 1: Cơ sở lý thuyết

Chương 1 hệ thống hóa toàn bộ các nền tảng lý luận và công nghệ phục vụ đồ án:

  • Trình bày tổng quan về kiến trúc Microservice, phân tích nhược điểm của kiến trúc Monolithic (khó mở rộng, khó bảo trì, khó kiểm thử, codebase lớn) và chỉ ra các ưu điểm của Microservice (khả năng mở rộng độc lập, dễ bảo trì, tái sử dụng, triển khai nhanh).
  • Phân tích cơ chế hoạt động của API Gateway, các mô hình Client-side Discovery và Server-side Discovery; các phương thức giao tiếp giữa các dịch vụ thông qua RESTful HTTP API và giao tiếp hướng sự kiện (Event-Driven) sử dụng Apache Kafka.
  • Trình bày công cụ truy vết Zipkin, giải pháp giám sát Prometheus kết hợp bảng hiển thị Grafana.
  • Giới thiệu chi tiết ngăn xếp công nghệ Front-end (ReactJS, Virtual DOM, Ant Design, React Query, TailwindCSS, Axios) và Back-end (Spring Boot, Spring Data JPA, Spring Security, Spring Cloud, Spring Boot Actuator, MySQL, MapStruct, Java-jwt).
  • Trình bày lý thuyết về các mô hình hệ thống gợi ý (Content-based Filtering, Collaborative Filtering, Hybrid Filtering) và các công cụ đóng gói, triển khai (Docker, Docker Compose), công cụ quản lý dự án YouTrack và kho mã nguồn GitHub.

Chương 2: Khảo sát hiện trạng và mô hình hoá yêu cầu

Chương này tập trung phân tích thực trạng các nền tảng thương mại điện tử chuyên biệt về sản phẩm xanh hiện có trên thị trường nhằm xác định yêu cầu nghiệp vụ:

Tiêu chí khảo sát Website ECOESHOP Website Xanh Việt Nam Website Bao Bì Xanh
Tính năng chính Tìm kiếm, giỏ hàng, xem/viết đánh giá, đặt in theo mẫu, mục tin tức Tìm kiếm, giỏ hàng, xem/viết đánh giá, chia sẻ Facebook, mục tin tức Tìm kiếm/lọc/sắp xếp, giỏ hàng, CSKH (Zalo, Messenger, Phone), bài viết
Ưu điểm Bố cục rõ ràng, màu sắc hài hòa, danh mục đa dạng, đơn vị sản phẩm linh hoạt Bố cục rõ ràng, hình ảnh sắc nét, mô tả sản phẩm chi tiết Giao diện trẻ trung, hệ thống danh mục đa dạng, bố cục dễ sử dụng
Nhược điểm Không có đăng ký/đăng nhập, không xem được lịch sử đơn, thiếu bộ lọc/thông báo Không có đăng ký/đăng nhập, không có lịch sử đơn, chưa xử lý hàng hết bán Giao diện trang sản phẩm rối mắt, font chữ chưa cân đối, đánh giá sơ sài

Dựa trên kết quả khảo sát, tác giả xác định bảng yêu cầu chức năng (gồm các chức năng cho Guest, User, Admin) và yêu cầu phi chức năng, từ đó xây dựng biểu đồ Use Case tổng thể, biểu đồ Use Case phân hệ và tài liệu đặc tả chi tiết cho từng ca sử dụng.

Chương 3: Phân tích và thiết kế hệ thống

Nội dung chương 3 chi tiết hóa toàn bộ kiến trúc kỹ thuật của hệ sinh thái:

  • Xây dựng lược đồ kiến trúc tổng thể của hệ thống Microservice và lược đồ lớp (Class Diagram) tổng thể cũng như cho từng dịch vụ thành phần: Authentication Service, User Service, Product Service, Order Service, Address Service, Inventory Service, Infrastructure Service.
  • Thiết kế hệ thống sơ đồ tuần tự (Sequence Diagram) chi tiết cho toàn bộ các luồng nghiệp vụ: xác thực (đổi mật khẩu, vô hiệu hóa tài khoản), quản lý nhân viên, tương tác giỏ hàng, quy trình đặt hàng, hủy đơn hàng, quản lý sản phẩm, quản lý biến thể dạng bán, quản lý danh mục, quản lý kho, quản lý địa chỉ, quy trình thanh toán và quản trị phiên Chat.
  • Thiết kế mô hình cơ sở dữ liệu quan hệ (Database per Service) gồm các bảng dữ liệu chuyên biệt cho từng dịch vụ.
  • Thiết kế giải thuật gợi ý sản phẩm dựa trên lọc nội dung (Content-based Filtering).
  • Thiết kế chi tiết giao diện người dùng (UI) trên cả hai phân hệ: Giao diện Quản trị viên (trang tổng quan Dashboard, danh sách quản lý, modal chi tiết/xác nhận/đánh giá/lịch sử giao dịch) và Giao diện Khách hàng (trang chủ, đăng ký/đăng nhập/xác thực tài khoản, danh mục sản phẩm, chi tiết sản phẩm, giỏ hàng, thanh toán PayPal, quản lý sổ địa chỉ, đơn hàng và lịch sử giao dịch).

Chương 4: Cài đặt và kiểm thử

Chương 4 mô tả quá trình hiện thực hóa hệ thống và đánh giá chất lượng phần mềm:

  • Thiết lập kế hoạch kiểm thử và xây dựng quy trình kiểm thử từng bước cho các module độc lập và toàn hệ thống tích hợp.
  • Ghi nhận kết quả kiểm thử chức năng trên các giao diện quản trị và giao diện người dùng, đồng thời phân tích các rủi ro kỹ thuật và vấn đề phát sinh trong quá trình vận hành hệ thống phân tán để đưa ra biện pháp hiệu chỉnh.

Kết quả và đóng góp

Đồ án đã xây dựng hoàn chỉnh hệ thống website thương mại điện tử chuyên kinh doanh sản phẩm xanh với các kết quả cụ thể:

  1. Phía Quản trị viên (Admin):

    • Cung cấp trang tổng quan (Dashboard) trực quan phục vụ thống kê doanh số, theo dõi biến động đơn hàng và tình trạng sản phẩm bán ra.
    • Cung cấp bộ công cụ quản lý toàn diện đối với: sản phẩm (danh mục, thương hiệu, đơn vị tính, biến thể, hình ảnh), kho hàng (phiếu nhập xuất), đơn hàng (cập nhật trạng thái, lý do hủy), người dùng, nhân viên, mã giảm giá/khuyến mãi và phản hồi đánh giá.
  2. Phía Khách hàng (User/Guest):

    • Cung cấp quy trình đăng ký, đăng nhập tài khoản thông thường và hỗ trợ xác thực thông qua tài khoản Google.
    • Hoàn thiện luồng mua sắm trực tuyến: Tìm kiếm, lọc sản phẩm theo danh mục/thương hiệu, quản lý giỏ hàng, đặt hàng, quản lý sổ địa chỉ cá nhân và theo dõi lịch sử đơn hàng.
    • Tích hợp linh hoạt các phương thức thanh toán: Trả tiền mặt khi nhận hàng (COD) và cổng thanh toán trực tuyến quốc tế PayPal.
    • Cung cấp tính năng đánh giá sản phẩm sau mua, theo dõi sản phẩm yêu thích và nhận thông báo từ hệ thống.
  3. Đóng góp về mặt kỹ thuật:

    • Ứng dụng thành công mô hình kiến trúc Microservice vào bài toán thương mại điện tử, giúp phân tách độc lập các nghiệp vụ phức tạp, nâng cao khả năng bảo trì và mở rộng hệ thống.
    • Kết hợp các công cụ giám sát hiện đại (Prometheus, Grafana, Zipkin) và giải pháp truyền thông điệp bất đồng bộ (Apache Kafka) nhằm nâng cao tính ổn định và độ tin cậy của hệ thống phân tán.

Hạn chế và hướng nghiên cứu tiếp

Hạn chế và các vấn đề tồn tại của đề tài (được ghi nhận trong báo cáo):

  • Việc triển khai kiến trúc Microservice đòi hỏi chi phí quản lý hạ tầng và độ phức tạp cao hơn so với mô hình nguyên khối truyền thống.
  • Các giải thuật gợi ý sản phẩm mới dừng lại ở mức độ triển khai giải thuật Content-based Filtering cơ bản, chưa khai thác sâu được dữ liệu hành vi phức tạp của người dùng trong thời gian thực.
  • Quy trình xử lý lỗi và đồng bộ dữ liệu giao dịch giữa các service độc lập khi xảy ra sự cố mạng phân tán vẫn cần tiếp tục tối ưu.

Hướng phát triển tiếp theo của tác giả:

  • Tiếp tục nâng cấp và hoàn thiện hệ thống gợi ý bằng cách kết hợp thuật toán Lọc cộng tác (Collaborative Filtering) hoặc mô hình kết hợp (Hybrid Filtering) khi quy mô dữ liệu người dùng và lượt đánh giá tăng lên.
  • Tối ưu hóa hiệu năng của các dịch vụ backend, nâng cao tính sẵn sàng và khả năng chịu tải của hệ thống trên môi trường đám mây.
  • Bổ sung thêm các cổng thanh toán nội địa và hoàn thiện ứng dụng trên các nền tảng di động.

Giá trị tham khảo

Báo cáo đồ án tốt nghiệp là tài liệu tham khảo có giá trị học thuật và ứng dụng thực tiễn dành cho:

  • Sinh viên chuyên ngành Công nghệ thông tin, Công nghệ phần mềm và Hệ thống thông tin: Cung cấp tài liệu mẫu về quy trình phân tích, thiết kế và hiện thực hóa một hệ thống thương mại điện tử phân tán sử dụng kiến trúc Microservice với Spring Boot và ReactJS.
  • Người phát triển hệ thống web phân tán: Tham khảo phương pháp tổ chức cấu trúc Database per Service, cách thức cấu hình API Gateway, Service Discovery, cũng như mô hình triển khai giám sát hệ thống với Prometheus, Grafana, Zipkin và Kafka.
  • Các nhà nghiên cứu và lập trình viên quan tâm đến lĩnh vực thương mại điện tử xanh: Tham khảo các mô hình dữ liệu chi tiết cho sản phẩm đa biến thể và phương pháp tiếp cận thiết kế giao diện hướng trải nghiệm người dùng xanh.

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

  1. Kiến trúc phân tán của website gồm những Microservice nào và sử dụng cơ chế truyền thông điệp gì?
    Hệ thống bao gồm 7 service nghiệp vụ chính: Authentication Service, User Service, Address Service, Product Service, Inventory Service, Order Service, và Infrastructure Service. Các service giao tiếp đồng bộ qua RESTful HTTP API thông qua API Gateway và truyền thông điệp bất đồng bộ qua hệ thống Message Broker Apache Kafka.

  2. Hệ thống sử dụng các công cụ nào để giám sát (Monitoring) và truy vết (Tracing) dịch vụ?
    Đề tài sử dụng Zipkin để thực hiện truy vết phân tán (Distributed Tracing) dựa trên chuẩn Dapper của Google. Hệ thống giám sát (Monitoring) sử dụng Spring Boot Actuator để mở endpoint /metrics, kết hợp với Prometheus để thu thập dữ liệu chỉ số và Grafana để trực quan hóa dữ liệu chỉ số hệ thống bằng PromQL.

  3. Cơ sở dữ liệu của hệ thống được tổ chức như thế nào?
    Mỗi Microservice quản lý một cơ sở dữ liệu riêng biệt trên hệ quản trị MySQL (mô hình Database per Service) với các bảng dữ liệu tương ứng như: Identity, Role (Authentication); UserProfile, Staff, Cart, Review (User); Address, Province, District, Ward (Address); Product, ProductCategory, Variant, Sale (Product); Docket (Inventory); Order, Transaction, PaymentMethod (Order); và Notification (Infrastructure).

  4. Website hỗ trợ các phương thức xác thực và thanh toán nào cho khách hàng?
    Về xác thực, hệ thống hỗ trợ đăng ký/đăng nhập thông thường kết hợp mã hóa JSON Web Token (JWT) và đăng nhập nhanh thông qua tài khoản Google. Về thanh toán, hệ thống hỗ trợ hai hình thức: Trả tiền mặt khi nhận hàng (COD) và thanh toán trực tuyến qua cổng PayPal.

  5. Hệ thống gợi ý sản phẩm trong khóa luận được thiết kế dựa trên thuật toán nào?
    Trong phần thiết kế, nhóm tác giả triển khai hệ thống gợi ý dựa trên thuật toán Lọc dựa trên nội dung (Content-based Filtering), đưa ra các gợi ý sản phẩm tương đồng dựa trên phân tích các đặc trưng, thuộc tính và danh mục của sản phẩm xanh mà người dùng quan tâm.

Kết luận

Đồ án tốt nghiệp "Xây dựng Website kinh doanh sản phẩm xanh" của sinh viên Nguyễn Minh Sơn và Trần Minh Mẫn đã hoàn thành các mục tiêu nghiên cứu và thực hành theo đúng đề cương được duyệt. Nhóm tác giả đã vận dụng hiệu quả kiến trúc phân tán Microservice kết hợp cùng hệ sinh thái Spring Boot, ReactJS, MySQL, Docker và Apache Kafka để xây dựng một nền tảng thương mại điện tử chuyên biệt cho sản phẩm xanh. Toàn bộ tài liệu đồ án cung cấp bức tranh chi tiết từ khâu khảo sát hiện trạng, mô hình hóa nghiệp vụ, thiết kế lược đồ hệ thống đến cài đặt và kiểm thử thực tế. Đây là công trình kỹ thuật có tính ứng dụng cao, đóng góp một giải pháp phần mềm hoàn chỉnh phục vụ nhu cầu tiêu dùng bền vững vì cộng đồng.