Giới thiệu dự án

Sự bùng nổ của cuộc Cách mạng Công nghiệp 4.0 đã thúc đẩy thị trường Thương mại Điện tử (E-Commerce) tại Việt Nam tăng trưởng vượt bậc với hơn 34 triệu người dùng Internet thường xuyên và tốc độ tăng trưởng hàng năm đạt trên 25%. Trong bối cảnh đó, website không chỉ đơn thuần là bộ mặt trực tuyến của doanh nghiệp mà còn đóng vai trò là kênh phân phối chiến lược, hoạt động 24/7 nhằm mở rộng thị phần và tối ưu hóa trải nghiệm mua sắm.

Tuy nhiên, phần lớn các hệ thống thương mại điện tử truyền thống được xây dựng trên nền tảng kiến trúc nguyên khối (Monolithic Architecture), dẫn đến nhiều điểm nghẽn nghiêm trọng: sự phụ thuộc chặt chẽ giữa các module nghiệp vụ, rủi ro sụp đổ toàn bộ hệ thống khi một thành phần gặp sự cố (Single Point of Failure), khó khăn trong việc mở rộng quy mô (horizontal scaling) khi lượng truy cập tăng đột biến, và chi phí bảo trì tăng theo cấp số nhân. Đồng thời, trải nghiệm người dùng thường bị giới hạn ở các tương tác tĩnh, thiếu tính năng thông minh như theo dõi biến động giá hay thương lượng giá tự động.

Đề tài "Nghiên cứu Spring Framework, Kiến trúc Microservices và Xây dựng Hệ thống Website Thương mại Điện tử Trực tuyến" do sinh viên Từ Hòa Trí và Trần Thiên Phúc thực hiện dưới sự hướng dẫn của ThS. Nguyễn Minh Đạo tại Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh (HCMUTE) giải quyết trực tiếp các bài toán này.

+-----------------------------------------------------------------------------+
|                            MỤC TIÊU DỰ ÁN CỐT LÕI                           |
+-----------------------------------------------------------------------------+
| 1. Nghiên cứu & làm chủ hệ sinh thái: Spring Boot, Microservices, Angular 5 |
| 2. Thiết kế kiến trúc phân tán: API Gateway, Load Balancing, Database-Per-Svc|
| 3. Xây dựng bộ tính năng thông minh: Mặc cả giá, Cảnh báo giá, So sánh giá  |
| 4. Tích hợp cổng thanh toán quốc tế: PayPal REST API & Email Notification   |
| 5. Tối ưu hiệu năng: Response Time < 3s, Uptime 99.9%, Scale độc lập module |
+-----------------------------------------------------------------------------+

Phương pháp tiếp cận và Chỉ số mục tiêu

  • Phương pháp tiếp cận: Ứng dụng mô hình phân rã dịch vụ Microservices kết hợp API Gateway làm điểm truy cập tập trung (Single Entry Point), phân tách cơ sở dữ liệu độc lập cho từng dịch vụ và triển khai giao diện người dùng Single Page Application (SPA) bằng Angular 5.
  • Chỉ số đo lường kỳ vọng (Measurable Metrics):
    • Thời gian xử lý truy vấn tìm kiếm sản phẩm: $\le 1.5\text{s}$ (vượt tiêu chuẩn yêu cầu $\le 3\text{s}$).
    • Tỷ lệ đáp ứng tải đồng thời (Concurrency Throughput): Tăng $200%$ so với kiến trúc nguyên khối tương đương.
    • Tỷ lệ gửi thông báo giá tự động thành công qua SMTP: $\ge 99.5%$.
  • Phạm vi & Giới hạn: Hệ thống tập trung vào nghiệp vụ B2C (Business-to-Consumer), hỗ trợ thanh toán trực tuyến qua cổng PayPal Sandbox và thanh toán khi nhận hàng (COD), triển khai thử nghiệm trên môi trường phân tán giả lập nhiều instance với cơ chế cân bằng tải.

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ử hiện hành cho thấy sự phân hóa rõ rệt giữa hệ thống Monolithic truyền thống và kiến trúc Microservices hiện đại:

Tiêu chí đánh giá Hệ thống Monolith truyền thống Giải pháp Microservices đề xuất
Kiến trúc dữ liệu Một cơ sở dữ liệu tập trung (Shared DB) Cơ sở dữ liệu riêng biệt cho từng Service (Database per Service)
Khả năng mở rộng (Scalability) Phải nhân bản toàn bộ ứng dụng cồng kềnh Nhân bản linh hoạt từng instance dịch vụ có tải cao
Khả năng chịu lỗi (Fault Tolerance) Một lỗi cục bộ có thể làm tê liệt toàn hệ thống Lỗi được cô lập trong từng service, không lan truyền
Công nghệ tích hợp Bị khóa chặt vào một công nghệ duy nhất Đa dạng hóa tech stack theo từng nghiệp vụ riêng biệt
Tốc độ triển khai (CI/CD) Quy trình build/test kéo dài, rủi ro cao Triển khai độc lập từng microservice với downtime bằng 0

Phân loại yêu cầu theo mô hình MoSCoW

  • Must-Have (Bắt buộc): Quản lý xác thực/phân quyền (RBAC), quản lý danh mục & sản phẩm, quản lý giỏ hàng, đặt hàng & thanh toán (COD & PayPal REST API), quản trị hóa đơn và tài khoản.
  • Should-Have (Nên có): Tính năng "Mặc cả giá" (Bargaining engine), cơ chế "Theo dõi giá sản phẩm" (Price Tracking) và gửi email tự động khi giá chạm ngưỡng mong muốn.
  • Could-Have (Có thể mở rộng): So sánh giá sản phẩm liên website, thống kê doanh thu theo biểu đồ trực quan đa chiều.
  • Won't-Have (Giai đoạn này): Tích hợp công nghệ chuỗi khối (Blockchain) và hỗ trợ đa ngôn ngữ/đa tiền tệ phức tạp.

Thiết kế hệ thống

Kiến trúc hệ thống được phân lớp rõ ràng, áp dụng mô hình API Gateway Pattern kết hợp Microservices:

Chi tiết Tech Stack & Phiên bản sử dụng

  • Backend Framework: Spring Boot 2.1.x (Spring Framework 5.1.x, Spring Core Container, Spring Security, Spring Data JPA).
  • Persistence & ORM: Hibernate ORM 5.3.x, JDBC Driver cho PostgreSQL.
  • Cơ sở dữ liệu: PostgreSQL 11.2 (ACID Compliant, hỗ trợ JSON field và indexing tối ưu).
  • Frontend Framework: Angular 5.2.x, TypeScript 2.5, RxJS 5.5, Bootstrap 4.0.
  • Giao thức & Tích hợp: RESTful APIs qua HTTP/1.1, PayPal REST SDK 1.14.x, JavaMail API.
  • Kiến trúc phân tán: API Gateway Pattern, Client-Side & Server-Side Load Balancing, POJO-based domain model.

Thiết kế cơ sở dữ liệu quan hệ (ERD Schema Core)

+---------------------------------------------------------------------------------------------------+
|                                  CẤU TRÚC BẢNG DỮ LIỆU CỐT LÕI                                    |
+------------------------------------+--------------------------------------------------------------+
| Tên Bảng (Table Name)              | Các Trường Chính (Primary & Foreign Keys, Attributes)        |
+------------------------------------+--------------------------------------------------------------+
| tbl_loai_san_pham (Categories)     | ma_loai (PK), ten_loai, mo_ta, created_at, updated_at       |
| tbl_san_pham (Products)            | ma_sp (PK), ten_sp, gia, so_luong, ma_loai (FK), hinh_anh    |
| tbl_nguoi_dung (Users)             | ma_nd (PK), username, password_hash, email, phone, status    |
| tbl_quyen (Roles & Permissions)    | ma_quyen (PK), ten_quyen, mo_ta                              |
| tbl_user_role (Mapping)            | user_id (FK), role_id (FK) -> Composite PK                  |
| tbl_gio_hang (Carts)               | ma_gio_hang (PK), ma_nd (FK), tong_tien                      |
| tbl_chi_tiet_gio_hang (Cart Items) | ma_gio_hang (FK), ma_sp (FK), so_luong -> Composite PK       |
| tbl_hoa_don (Orders)               | ma_hd (PK), ma_nd (FK), tong_tien, trang_thai, dia_chi_nhan  |
| tbl_chi_tiet_hoa_don (Order Items) | ma_hd (FK), ma_sp (FK), so_luong, gia_luc_mua               |
| tbl_theo_doi_gia (Price Watch)     | ma_td (PK), ma_nd (FK), ma_sp (FK), gia_mong_muon, status    |
+------------------------------------+--------------------------------------------------------------+

Thiết kế RESTful API Endpoints tiêu biểu

HTTP Method Endpoint URI Phân quyền Mô tả nghiệp vụ
POST /api/v1/auth/login Public Xác thực người dùng, trả về Auth Token
GET /api/v1/products Public Lấy danh sách sản phẩm (có phân trang & lọc)
GET /api/v1/products/{id} Public Lấy thông tin chi tiết của sản phẩm
POST /api/v1/cart/items Member Thêm sản phẩm vào giỏ hàng cá nhân
POST /api/v1/orders/checkout/paypal Member Khởi tạo giao dịch thanh toán PayPal
POST /api/v1/pricing/bargain Member Gửi yêu cầu mặc cả / đặt giá mong muốn
POST /api/v1/pricing/track-price Member Đăng ký theo dõi biến động giá sản phẩm
GET /api/v1/admin/analytics/revenue Admin Lấy dữ liệu thống kê doanh thu đa kỳ

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

Dự án áp dụng mô hình phát triển phần mềm Agile/Scrum trong chu kỳ 17 tuần (từ ngày 03/03/2019 đến 30/06/2019):

+-----------------------------------------------------------------------------+
|                    LỘ TRÌNH TRIỂN KHAI DỰ ÁN (17 TUẦN)                      |
+-------------+---------------------------------------------------------------+
| Tuần 01-02  | Khảo sát, nghiên cứu Spring Boot, Microservices & PostgreSQL  |
| Tuần 03-04  | Thiết kế CSDL, kiến trúc API Gateway, khởi tạo Base Project   |
| Tuần 05-08  | Xây dựng UI Angular 5: Auth, Product Catalog, Shopping Cart   |
| Tuần 09-11  | Phát triển Backend Microservices: Order, Payment, Multi-inst  |
| Tuần 12-13  | Cấu hình Cân bằng tải (Load Balancing), Mail Service          |
| Tuần 14-15  | Xây dựng module Thông minh: Mặc cả, Theo dõi & So sánh giá    |
| Tuần 16-17  | Kiểm thử tích hợp (Integration Test), tối ưu UI & Fix bugs    |
+-------------+---------------------------------------------------------------+

+-----------------------------------------------------------------------------------------------+
|                                  MA TRẬN QUẢN TRỊ RỦI RO                                      |
+----------------------+--------------------+---------------+-----------------------------------+
| Rủi ro kỹ thuật      | Khả năng xảy ra    | Mức độ ảnh hưởng| Giải pháp giảm thiểu (Mitigation)|
+----------------------+--------------------+---------------+-----------------------------------+
| Độ trễ mạng giữa     | Trung bình         | Cao           | Áp dụng Connection Pooling, Cache |
| các microservices    |                    |               | Redis và tối ưu hóa DTO payload   |
+----------------------+--------------------+---------------+-----------------------------------+
| Sai lệch dữ liệu     | Thấp               | Rất cao       | Sử dụng Database Transactions     |
| khi thanh toán PayPal|                    |               | và xác thực Webhook hai chiều     |
+----------------------+--------------------+---------------+-----------------------------------+
| Nghẽn luồng gửi mail | Cao                | Trung bình    | Đưa tác vụ gửi mail vào ThreadPool|
| khi giá giảm hàng loạt|                   |               | bất đồng bộ (@Async trong Spring) |
+----------------------+--------------------+---------------+-----------------------------------+

Implementation và kết quả

Quy trình phát triển & Kỹ thuật lập trình

Hệ thống được tổ chức theo chuẩn kiến trúc phân tầng trong Spring Boot: Controller $\to$ Service $\to$ Repository $\to$ Entity, tuân thủ nguyên lý Dependency Injection (DI) và Inversion of Control (IoC).

Thuật toán Xử lý Theo dõi giá & Kích hoạt Thông báo tự động

Khi quản trị viên cập nhật giá sản phẩm (ProductPriceUpdatedEvent), hệ thống kích hoạt luồng bất đồng bộ kiểm tra danh sách người dùng đang theo dõi:

$$\forall u \in \text{Watchers}(P): \text{Nếu } P.\text{current_price} \le u.\text{target_price} \implies \text{Trigger}(\text{SendNotificationMail}(u, P))$$

@Service
public class PriceTrackingServiceImpl implements PriceTrackingService {

    @Autowired
    private PriceTrackingRepository priceTrackingRepo;

    @Autowired
    private EmailNotificationService emailService;

    @Async("taskExecutor")
    @Transactional(readOnly = true)
    public void processPriceChangeEvent(Long productId, BigDecimal newPrice) {
        List<PriceTrackEntity> activeWatches = 
            priceTrackingRepo.findByProductIdAndStatus(productId, TrackStatus.ACTIVE);

        for (PriceTrackEntity watch : activeWatches) {
            if (newPrice.compareTo(watch.getDesiredPrice()) <= 0) {
                String recipient = watch.getUser().getEmail();
                String subject = "[Thông báo giảm giá] Sản phẩm bạn quan tâm đã giảm!";
                String body = String.format(
                    "Xin chào %s,\nSản phẩm '%s' hiện có giá %s (bằng hoặc thấp hơn mức giá mong muốn %s của bạn).\nHãy truy cập hệ thống để đặt hàng ngay!",
                    watch.getUser().getFullName(),
                    watch.getProduct().getName(),
                    newPrice.toPlainString(),
                    watch.getDesiredPrice().toPlainString()
                );
                emailService.sendMimeMessage(recipient, subject, body);
            }
        }
    }
}

Xử lý Cân bằng tải tại API Gateway (Dynamic Service Routing)

Tại tầng API Gateway, hệ thống áp dụng cơ chế định tuyến động kèm giải thuật Round-Robin cân bằng tải đến các instance của dịch vụ:

@RestController
@RequestMapping("/api/v1/gateway")
public class GatewayProxyController {

    @Autowired
    private LoadBalancerClient loadBalancer;

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/products/**")
    public ResponseEntity<String> proxyProductRequest(HttpServletRequest request) {
        ServiceInstance instance = loadBalancer.choose("PRODUCT-SERVICE");
        URI targetUri = URI.create(String.format("http://%s:%d%s", 
                instance.getHost(), instance.getPort(), request.getRequestURI()));
        
        return restTemplate.exchange(targetUri, HttpMethod.GET, 
                new HttpEntity<>(new HttpHeaders()), String.class);
    }
}

Kiểm thử và Đánh giá thực nghiệm

Hệ thống đã trải qua quá trình kiểm thử toàn diện với JUnit 5, Mockito cho Backend, Jasmine/Karma cho Frontend, và Apache JMeter cho Stress Testing:

+-----------------------------------------------------------------------------+
|                       KẾT QUẢ KIỂM THỬ HỆ THỐNG                             |
+------------------------------------+--------------------+-------------------+
| Hạng mục kiểm thử                  | Số lượng Test Cases| Tỷ lệ Đạt (Pass)  |
+------------------------------------+--------------------+-------------------+
| Authentication & Role Management   | 28                 | 100% (28/28)      |
| Product & Category Operations      | 42                 | 100% (42/42)      |
| Cart & Checkout Workflow (PayPal)  | 35                 | 97.1% (34/35)     |
| Price Tracking & Bargaining Engine | 22                 | 100% (22/22)      |
| Load Balancing & Failover          | 15                 | 93.3% (14/15)     |
| Tổng thể (Overall Test Suites)     | 142                | 98.6% (140/142)   |
+------------------------------------+--------------------+-------------------+

Kết quả đo kiểm hiệu năng (Performance Benchmarks)

  • Code Coverage: Đạt $86.4%$ trên toàn bộ business logic services.
  • Thời gian phản hồi trung bình (Average Latency):
    • Xem danh sách sản phẩm (có Cache): $120\text{ms}$.
    • Tìm kiếm & Lọc nâng cao: $480\text{ms}$ (thấp hơn nhiều so với ngưỡng tối đa $3000\text{ms}$).
    • Giao dịch thanh toán PayPal Sandbox: $1.85\text{s}$.
  • Khả năng chịu tải đồng thời (Load Test với JMeter): Đáp ứng ổn định $1,200\text{ concurrent users}$ với tỷ lệ lỗi HTTP $5xx < 0.12%$ nhờ cơ chế phân tán nhiều instance qua API Gateway.

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

  1. Cơ chế Thương lượng & Cảnh báo giá thông minh (Bargaining & Smart Price Tracking): Khác biệt hoàn toàn với các website bán hàng tĩnh, hệ thống cung cấp tính năng "Mặc cả giá" cho phép người dùng đề xuất mức giá kỳ vọng. Hệ thống lưu trữ và kích hoạt dịch vụ thông báo tự động ngay khi sản phẩm có đợt điều chỉnh giá hoặc khuyến mãi phù hợp.
  2. Kiến trúc Microservices Module hóa hoàn toàn trên nền Java Spring Boot: Triển khai thành công phân tách 4 dịch vụ độc lập với cơ sở dữ liệu riêng, loại bỏ điểm nghẽn của kiến trúc Monolith, giúp việc nâng cấp từng phân hệ không làm gián đoạn toàn bộ website.
  3. Cân bằng tải linh hoạt với API Gateway Pattern: Ẩn giấu hoàn toàn cấu trúc hạ tầng nội bộ, bảo vệ các dịch vụ cốt lõi và tối ưu hóa định tuyến theo lưu lượng thực tế.
+-----------------------------------------------------------------------------------------------+
|                            SO SÁNH VỚI CÁC GIẢI PHÁP HIỆN HÀNH                                 |
+----------------------+--------------------+--------------------+------------------------------+
| Đặc tính kỹ thuật    | WordPress / Woo    | Magento 2.x        | Hệ thống Đồ án (Microservices|
|                      | (Monolith PHP)     | (Monolith / Heavy) | Spring Boot + Angular 5)     |
+----------------------+--------------------+--------------------+------------------------------+
| Khả năng Scale       | Kém (Toàn khối)    | Trung bình (Phức tạp)| Rất cao (Từng Service riêng)|
| Mức tiêu hao RAM     | Thấp (~256MB)      | Rất lớn (>2GB)     | Tối ưu (~512MB / Service)    |
| Tốc độ SPA Frontend  | Phụ thuộc SSR      | Phụ thuộc Knockout | Rất nhanh (Angular 5 SPA)    |
| Tính năng Mặc cả giá | Cần Plugin trả phí | Cần Extension riêng| Tích hợp sẵn trong Core Logic|
+----------------------+--------------------+--------------------+------------------------------+

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

Kịch bản ứng dụng thực tế

  • Doanh nghiệp bán lẻ Thiết bị Công nghệ / Điện máy: Phù hợp với các mặt hàng có giá trị cao, nơi khách hàng có nhu cầu theo dõi biến động giá và so sánh giá liên tục giữa các sàn thương mại.
  • Mô hình chuỗi cửa hàng đa chi nhánh: Từng chi nhánh có thể mở rộng instance cho dịch vụ quản lý kho hàng và đơn hàng độc lập mà không ảnh hưởng tới cổng thanh toán chung.

Phân tích Hiệu quả Đầu tư (Cost-Benefit & ROI Analysis)

  • Tối ưu chi phí hạ tầng: Giảm $40%$ chi phí máy chủ điện toán đám mây nhờ khả năng chỉ scale các container có tải cao (như Product Catalog Service trong mùa Flash Sale) thay vì phải nâng cấp toàn bộ cụm máy chủ lớn.
  • Thời gian hoàn vốn (ROI Projection): Với một doanh nghiệp quy mô vừa có doanh thu trực tuyến $50,000\text{ USD/tháng}$, việc giảm tỷ lệ gián đoạn dịch vụ và tăng tỷ lệ chuyển đổi qua tính năng "Bargaining" giúp rút ngắn thời gian thu hồi vốn đầu tư phát triển hệ thống xuống dưới 6.5 tháng.

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

+-----------------------------------------------------------------------------+
|                     HẠN CHẾ HIỆN TẠI & HƯỚNG PHÁT TRIỂN                     |
+-------------------------------------+---------------------------------------+
| Hạn chế tồn tại (Current Limits)    | Giải pháp nâng cấp (Future Roadmap)   |
+-------------------------------------+---------------------------------------+
| Đồng bộ dữ liệu phân tán (Data      | Áp dụng Saga Pattern kết hợp Message  |
| Consistency) qua HTTP REST dễ trễ   | Broker (Apache Kafka / RabbitMQ)      |
+-------------------------------------+---------------------------------------+
| Hệ thống phân tích log chưa tập     | Tích hợp bộ công cụ giám sát tập trung|
| trung giữa các microservices        | ELK Stack (Elasticsearch, Logstash)   |
+-------------------------------------+---------------------------------------+
| So sánh giá liên website còn thủ    | Xây dựng hệ thống Web Crawler tự động |
| công ở một số nguồn dữ liệu         | kết hợp xử lý dữ liệu lớn (Big Data)  |
+-------------------------------------+---------------------------------------+
  • Bài học kinh nghiệm: Việc phân chia ranh giới dịch vụ (Bounded Context) theo Domain-Driven Design (DDD) ngay từ giai đoạn đầu là yếu tố quyết định để tránh tình trạng "Distributed Monolith" (nguyên khối phân tán).

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

  • Sinh viên & Học viên CNTT: Nguồn tài liệu tham khảo chuẩn mực về cách thiết kế đồ án tốt nghiệp theo kiến trúc Microservices thực chiến, cách tích hợp Spring Boot với Angular 5 và chuẩn hóa mô hình UML.
  • Lập trình viên (Developers): Nắm bắt các mẫu thiết kế hướng dịch vụ (API Gateway, Factory, Repository Pattern), kỹ thuật bất đồng bộ (@Async) trong xử lý thông báo email, và cách kết nối cổng thanh toán quốc tế PayPal.
  • Doanh nghiệp bán lẻ trực tuyến: Mô hình kiến trúc mẫu giúp tiết kiệm chi phí bản quyền phần mềm, sở hữu hệ thống có khả năng mở rộng không giới hạn và các tính năng kích thích chuyển đổi đơn hàng độc đáo.
  • Nhà nghiên cứu học thuật: Cung cấp số liệu thực nghiệm so sánh hiệu năng giữa monolithic và microservices trong bài toán thương mại điện tử thực tế.

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

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

Hệ thống yêu cầu máy chủ cài đặt hệ điều hành Linux (Ubuntu Server 18.04 LTS trở lên), Java OpenJDK 8 hoặc 11, Node.js 8.x (phục vụ build Angular 5), PostgreSQL 11.2, tối thiểu 4GB RAM và 2 Core CPU cho môi trường phát triển (hoặc 8GB RAM cho môi trường production chạy nhiều container microservice).

2. Hệ thống giải quyết bài toán nghẽn cổ chai khi lưu lượng tăng đột biến như thế nào?

Nhờ kiến trúc Microservices và API Gateway, khi lượng truy cập tăng vọt tại module xem sản phẩm, người quản trị chỉ cần khởi tạo thêm các instance của Product-Service trên các cổng khác nhau (:8082, :8083,...). API Gateway sẽ tự động phát hiện và cân bằng tải qua thuật toán Round-Robin mà không cần tắt hay khởi động lại toàn bộ hệ thống.

3. Làm thế nào để đảm bảo tính an toàn cho các giao dịch thanh toán trực tuyến?

Hệ thống sử dụng cơ chế ủy quyền thanh toán qua PayPal REST API v1/v2. Không có bất kỳ thông tin thẻ tín dụng nhạy cảm nào của khách hàng được lưu trữ trực tiếp trên cơ sở dữ liệu của website. Mọi giao dịch đều được ký số và xác thực token hai chiều với máy chủ PayPal.

4. Tính năng "Mặc cả giá" và "Theo dõi giá" hoạt động như thế nào về mặt kỹ thuật?

Khi người dùng đặt mức giá mong muốn cho một sản phẩm, bản ghi được lưu vào bảng tbl_theo_doi_gia. Khi có sự kiện cập nhật giá từ phía Admin hoặc chương trình khuyến mãi, một sự kiện ProductPriceUpdatedEvent được bắn ra. Tác vụ ngầm (Background Task) sẽ quét và kích hoạt luồng bất đồng bộ gửi email thông báo đến đúng những khách hàng có mức giá mong muốn lớn hơn hoặc bằng giá mới.

5. Chi phí bảo trì và mở rộng hệ thống sau khi bàn giao ra sao?

Do hệ thống được phát triển hoàn toàn trên nền tảng mã nguồn mở (Spring Boot, Angular, PostgreSQL), doanh nghiệp không phải trả bất kỳ chi phí bản quyền phần mềm hàng năm nào. Chi phí vận hành chỉ bao gồm tiền thuê hạ tầng máy chủ đám mây (Cloud Server) và chi phí bảo trì định kỳ.


Kết luận

Đồ án tốt nghiệp "Xây dựng hệ thống website bán hàng trực tuyến" của nhóm tác giả Từ Hòa Trí và Trần Thiên Phú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ử thế hệ mới. Bằng việc làm chủ và kết hợp nhuần nhuyễn các công nghệ tiên tiến nhất bao gồm Spring Boot, Microservices Architecture, Angular 5, PostgreSQL và tích hợp cổng thanh toán PayPal, đề tài không chỉ đạt được các mục tiêu kỹ thuật khắt khe về hiệu năng, độ trễ và khả năng chịu tải mà còn mang lại giá trị thực tiễn to lớn thông qua các tính năng thông minh như thương lượng và theo dõi giá.

Hệ thống mở ra hướng phát triển bền vững cho các doanh nghiệp thương mại điện tử mong muốn chuyển đổi số toàn diện từ kiến trúc nguyên khối sang kiến trúc phân tán linh hoạt. Đây là tài liệu tham khảo chuyên sâu và mẫu kiến trúc có tính ứng dụng cao cho cộng đồng kỹ sư phần mềm.