Giới thiệu dự án
Thương mại điện tử toàn cầu đang chứng kiến sự chuyển dịch mạnh mẽ hướng tới tiêu dùng bền vững, với tốc độ tăng trưởng kép hàng năm (CAGR) của thị trường sản phẩm xanh đạt hơn 15.8% giai đoạn 2023–2030 theo các báo cáo phân tích thị trường bán lẻ quốc tế. Tại Việt Nam, nhận thức bảo vệ môi trường gia tăng thúc đẩy nhu cầu tìm kiếm và sử dụng các sản phẩm hữu cơ, vật liệu phân hủy sinh học và đồ dùng tái chế. Tuy nhiên, thị trường trực tuyến chuyên biệt cho ngành hàng này vẫn còn phân mảnh, thiếu các nền tảng công nghệ chuyên dụng hỗ trợ xác thực nguồn gốc, gợi ý cá nhân hóa và quản lý vận hành theo thời gian thực.
Hầu hết các nền tảng kinh doanh sản phẩm sinh thái hiện nay hoạt động trên kiến trúc nguyên khối (Monolithic) hoặc các hệ thống CMS mã nguồn mở truyền thống. Mô hình này bộc lộ nhiều điểm nghẽn nghiêm trọng: khó mở rộng khi lượng truy cập tăng đột biến, phụ thuộc dữ liệu cao, thiếu cơ chế gợi ý sản phẩm thông minh và trải nghiệm thanh toán trực tuyến chưa tối ưu.
Đồ án tốt nghiệp chuyên ngành Công nghệ Phần mềm tại Trường Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE) với đề tài "Xây dựng Website kinh doanh sản phẩm xanh" do sinh viên Nguyễn Minh Sơn (MSSV: 20110713) và Trần Minh Mẫn (MSSV: 20110301) thực hiện, dưới sự hướng dẫn của TS. Lê Văn Vinh, được nghiên cứu và phát triển nhằm giải quyết triệt để các hạn chế trên.
+-----------------------------------------------------------------------------------+
| MỤC TIÊU CỐT LÕI ĐỒ ÁN |
+-----------------------------------------------------------------------------------+
| 1. Thiết kế kiến trúc phân tán Microservices hiệu năng cao, mở rộng độc lập. |
| 2. Xây dựng hệ thống gợi ý sản phẩm tương đồng (Content-based Filtering). |
| 3. Tích hợp cổng thanh toán trực tuyến đa kênh (COD, PayPal REST API). |
| 4. Xây dựng bảng điều khiển quản trị (Admin Dashboard) với báo cáo thời gian thực.|
| 5. Tối ưu hóa trải nghiệm người dùng (UX/UI) với Single Page Application (SPA). |
+-----------------------------------------------------------------------------------+
Giải pháp tiếp cận của đề tài là xây dựng hệ thống phân tán hoàn chỉnh theo kiến trúc Microservices với Spring Boot làm nền tảng Backend, kết hợp ReactJS cho giao diện người dùng, sử dụng Apache Kafka làm thông điệp bất đồng bộ (Message Broker) và áp dụng thuật toán Content-based Filtering để gợi ý sản phẩm chính xác dựa trên thuộc tính thân thiện môi trường.
Phạm vi nghiên cứu tập trung vào quy trình vận hành thương mại điện tử B2C dành riêng cho các dòng sản phẩm xanh (đồ gia dụng hữu cơ, bao bì sinh học, thời trang bền vững), kiểm thử tải trên môi trường giả lập và tích hợp các tiêu chuẩn bảo mật hiện đạ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 thực tế các nền tảng kinh doanh sản phẩm thân thiện môi trường tại Việt Nam bao gồm ECOESHOP, Xanhvietnam, và Baobixanh cho thấy bức tranh tổng quan về ưu và nhược điểm của các giải pháp hiện hành:
| Tiêu chí phân tích |
ECOESHOP |
Xanhvietnam |
Baobixanh |
Hệ thống đề xuất |
| Kiến trúc hệ thống |
Monolithic CMS |
Monolithic Web |
Monolithic Web |
Microservices phân tán |
| Xác thực người dùng |
Không hỗ trợ |
Không hỗ trợ |
Không hỗ trợ |
Spring Security + JWT + OAuth2 |
| Tra cứu lịch sử đơn |
Hạn chế |
Không hỗ trợ |
Không hỗ trợ |
Quản lý đa trạng thái thời gian thực |
| Bộ lọc & Sắp xếp |
Cơ bản |
Không hỗ trợ |
Trung bình |
Đa tiêu chí (Variant, Category, Giá) |
| Hệ thống gợi ý |
Không có |
Không có |
Không có |
Content-based Filtering Engine |
| Cổng thanh toán |
COD cơ bản |
COD cơ bản |
COD / Chuyển khoản |
Tích hợp PayPal API & COD |
| Giám sát & Tracing |
Không có |
Không có |
Không có |
Zipkin, Prometheus, Grafana |
Dựa trên kết quả khảo sát, các yêu cầu của hệ thống được phân loại theo mô hình MoSCoW:
- Must-have: Xác thực tài khoản (JWT, Google OAuth2), quản lý danh mục đa cấp, giỏ hàng, đặt hàng phân tán, cổng thanh toán PayPal, quản lý kho hàng và phân quyền RBAC (Role-based Access Control).
- Should-have: Hệ thống gợi ý sản phẩm (Content-based Filtering), thông báo thời gian thực qua Kafka, theo dõi trạng thái đơn hàng.
- Could-have: Module Chat trực tuyến giữa người dùng và Admin, đánh giá sản phẩm có xếp hạng sao và tải ảnh minh họa.
- Won't-have (giai đoạn này): Tích hợp AI Computer Vision tự động phân loại rác thải và bao bì tái chế.
Thiết kế hệ thống
Kiến trúc hệ thống được thiết kế theo mô hình Microservices phân tán, tuân thủ nguyên tắc độc lập cơ sở dữ liệu (Database-per-service Pattern), giao tiếp thông qua API Gateway và hệ thống truyền tin bất đồng bộ.
flowchart TB
subgraph ClientLayer ["Client Layer"]
WebUser["ReactJS Web Client (User)"]
WebAdmin["ReactJS Admin Portal"]
end
subgraph GatewayLayer ["Gateway & Discovery Layer"]
APIGateway["Spring Cloud Gateway (Port 8080)"]
EurekaServer["Service Registry / Discovery (Eureka)"]
end
subgraph ObservabilityLayer ["Observability & Monitoring"]
Zipkin["Zipkin Distributed Tracing"]
Prometheus["Prometheus Metrics Collector"]
Grafana["Grafana Dashboard"]
end
subgraph MicroservicesLayer ["Microservices Backend (Spring Boot 3.2)"]
AuthService["Authentication Service\n(MySQL Auth DB)"]
UserService["User Service\n(MySQL User DB)"]
ProductService["Product Service\n(MySQL Product DB)"]
OrderService["Order Service\n(MySQL Order DB)"]
InventoryService["Inventory Service\n(MySQL Inventory DB)"]
AddressService["Address Service\n(MySQL Address DB)"]
NotificationService["Notification Service\n(MySQL Notification DB)"]
end
subgraph EventStreaming ["Event-Driven Bus"]
KafkaBroker["Apache Kafka (Message Broker)"]
end
ClientLayer --> APIGateway
APIGateway <--> EurekaServer
APIGateway --> AuthService
APIGateway --> UserService
APIGateway --> ProductService
APIGateway --> OrderService
APIGateway --> InventoryService
APIGateway --> AddressService
OrderService -.->|OrderCreatedEvent| KafkaBroker
KafkaBroker -.->|Consume Event| InventoryService
KafkaBroker -.->|Consume Event| NotificationService
MicroservicesLayer --> Zipkin
MicroservicesLayer --> Prometheus
Prometheus --> Grafana
Technology Stack chuẩn hóa:
- Backend Core: Java 17 LTS, Spring Boot v3.2.4, Spring Cloud v2023.0.1, Spring Data JPA, Spring Security, MapStruct v1.5.5, Java-jwt v4.4.0.
- Frontend Core: ReactJS v18.2.0, TanStack Query (React Query) v5.28, Ant Design v5.15.0, TailwindCSS v3.4.1, Axios v1.6.8.
- Message Broker & Streaming: Apache Kafka v3.6.1, Zookeeper v3.8.3.
- Database & Storage: MySQL v8.0.36 (Per-service database pattern).
- DevOps & Monitoring: Docker v24.0.7, Docker Compose v2.23, Prometheus v2.50.0, Grafana v10.3.0, Zipkin v3.0.4.
Thiết kế Cơ sở dữ liệu và Data Schema:
Hệ thống sử dụng 7 cơ sở dữ liệu MySQL tách biệt tương ứng với từng service:
auth_db: Các bảng Identity, Role, IdentityRole, IdentityToken.
user_db: Các bảng UserProfile, Staff, Cart, CartItem, Review, UserFollowProduct.
product_db: Các bảng Product, ProductCategory, ProductImage, Brand, Unit, Variant, Sale, SaleProductCategory.
order_db: Các bảng Order, OrderItem, OrderCancellationReason, PaymentMethod, Transaction, Delivery.
inventory_db: Các bảng Docket, DocketDetail, Stock.
address_db: Các bảng Address, Province, District, Ward.
infrastructure_db: Bảng Notification.
Đặc tả API Endpoints chính:
POST /api/v1/auth/login: Xác thực danh tính và cấp phát JWT token (Access Token & Refresh Token).
GET /api/v1/products/recommendations/{productId}: Lấy danh sách 10 sản phẩm tương đồng nhất theo thuật toán Cosine.
POST /api/v1/orders/checkout: Khởi tạo đơn hàng phân tán, gửi sự kiện OrderCreatedEvent vào Kafka topic.
Bảo mật và Hiệu năng:
- Cơ chế xác thực phi trạng thái (Stateless Authentication) sử dụng JSON Web Token (JWT) có chữ ký số HMAC-SHA256, thời gian sống của Access Token là 15 phút và Refresh Token là 7 ngày.
- Mật khẩu người dùng được băm an toàn bằng thuật toán BCrypt với độ phức tạp
cost = 12.
- Quản lý phân quyền dựa trên vai trò (RBAC) với các quyền hạn:
GUEST, USER, STAFF, ADMIN.
Methodology
Đề tài áp dụng phương pháp phát triển phần mềm linh hoạt (Agile/Scrum), quản lý dự án trên nền tảng YouTrack với chu kỳ Sprint 2 tuần.
Kế hoạch triển khai (10/03/2024 - 01/07/2024):
Phase 1: Khảo sát hiện trạng, phân tích nghiệp vụ & thiết kế ERD/Use Case (10/03 - 24/03/2024)
Phase 2: Thiết kế UI/UX trên Figma & xây dựng cấu trúc Design System (25/03 - 09/04/2024)
Phase 3: Hiện thực hóa Frontend với ReactJS, React Query, TailwindCSS (09/04 - 01/05/2024)
Phase 4: Thiết kế kiến trúc Microservices & cài đặt Spring Boot REST API (02/05 - 22/05/2024)
Phase 5: Hiện thực hóa Kafka Event-Driven & tích hợp cổng PayPal (23/05 - 01/06/2024)
Phase 6: Tích hợp Frontend - Backend, xử lý phân tán qua API Gateway (02/06 - 09/06/2024)
Phase 7: Kiểm thử đơn vị, kiểm thử tích hợp & tối ưu hóa hiệu năng (10/06 - 21/06/2024)
Phase 8: Đóng gói Docker, nghiệm thu và hoàn thiện báo cáo khóa luận (22/06 - 01/07/2024)
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 giải thuật cốt lõi và đảm bảo tính nhất quán dữ liệu giữa các dịch vụ độc lập.
1. Thuật toán gợi ý sản phẩm (Content-Based Filtering)
Động cơ gợi ý tính toán độ tương đồng Cosine giữa vector thuộc tính của sản phẩm hiện tại và tập sản phẩm trong cùng danh mục xanh dựa trên các đặc trưng: Danh mục ($C$), Thương hiệu ($B$), Đơn vị tính ($U$), và Thẻ biến thể ($V$).
Công thức tính toán độ tương đồng Cosine:
$$\text{Similarity}(A, B) = \frac{\mathbf{A} \cdot \mathbf{B}}{|\mathbf{A}|2 |\mathbf{B}|2} = \frac{\sum{i=1}^{n} A_i B_i}{\sqrt{\sum{i=1}^{n} A_i^2} \sqrt{\sum_{i=1}^{n} B_i^2}}$$
Đoạn mã hiện thực thuật toán bằng Java trong Product Service:
@Service
@RequiredArgsConstructor
public class ProductRecommendationServiceImpl implements ProductRecommendationService {
private final ProductRepository productRepository;
@Override
@Transactional(readOnly = true)
public List<ProductResponseDTO> getSimilarProducts(Long targetProductId, int limit) {
Product target = productRepository.findById(targetProductId)
.orElseThrow(() -> new ResourceNotFoundException("Sản phẩm không tồn tại"));
List<Product> candidates = productRepository.findByCategoryId(target.getCategory().getId())
.stream()
.filter(p -> !p.getId().equals(targetProductId))
.toList();
Map<Product, Double> scoreMap = new HashMap<>();
double[] targetVector = buildFeatureVector(target);
for (Product candidate : candidates) {
double[] candidateVector = buildFeatureVector(candidate);
double similarity = calculateCosineSimilarity(targetVector, candidateVector);
scoreMap.put(candidate, similarity);
}
return scoreMap.entrySet().stream()
.sorted(Map.Entry.<Product, Double>comparingByValue().reversed())
.limit(limit)
.map(entry -> ProductMapper.INSTANCE.toDTO(entry.getKey()))
.collect(Collectors.toList());
}
private double calculateCosineSimilarity(double[] vectorA, double[] vectorB) {
double dotProduct = 0.0;
double normA = 0.0;
double normB = 0.0;
for (int i = 0; i < vectorA.length; i++) {
dotProduct += vectorA[i] * vectorB[i];
normA += Math.pow(vectorA[i], 2);
normB += Math.pow(vectorB[i], 2);
}
if (normA == 0.0 || normB == 0.0) return 0.0;
return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
}
}
2. Xử lý thông điệp bất đồng bộ qua Apache Kafka
Khi người dùng đặt hàng thành công tại Order Service, một sự kiện OrderCreatedEvent được đẩy vào Kafka để Inventory Service tự động trừ kho và Notification Service gửi thư xác nhận mà không làm block luồng xử lý chính.
@Component
@Slf4j
@RequiredArgsConstructor
public class OrderEventProducer {
private final KafkaTemplate<String, OrderCreatedEvent> kafkaTemplate;
private static final String ORDER_TOPIC = "order-created-events";
public void publishOrderCreated(OrderCreatedEvent event) {
log.info("Publishing OrderCreatedEvent for orderId: {}", event.getOrderId());
CompletableFuture<SendResult<String, OrderCreatedEvent>> future =
kafkaTemplate.send(ORDER_TOPIC, String.valueOf(event.getOrderId()), event);
future.whenComplete((result, ex) -> {
if (ex != null) {
log.error("Failed to publish order event: {}", ex.getMessage());
} else {
log.info("Order event published successfully with offset: {}",
result.getRecordMetadata().offset());
}
});
}
}
3. Quản lý trạng thái Client-Side với React Query
Phía Frontend sử dụng TanStack Query để quản lý bộ nhớ đệm (caching), đồng bộ dữ liệu nền và giảm tải số lượng request không cần thiết tới API Gateway.
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
import axiosInstance from '../api/axiosClient';
export const useProductDetails = (productId) => {
return useQuery({
queryKey: ['product', productId],
queryFn: async () => {
const { data } = await axiosInstance.get(`/api/v1/products/${productId}`);
return data;
},
staleTime: 1000 * 60 * 5, // Dữ liệu tồn tại trong cache 5 phút
cacheTime: 1000 * 60 * 30,
});
};
Testing và validation
Hệ thống trải qua các bài kiểm thử nghiêm ngặt bao gồm Unit Test (JUnit 5, Mockito), Integration Test và Stress Test với Apache JMeter (giả lập 2,000 người dùng đồng thời trong vòng 60 giây).
| Phân hệ kiểm thử |
Số kịch bản (Test cases) |
Tỷ lệ thành công (%) |
Độ phủ mã (Code Coverage) |
Thời gian phản hồi trung bình (ms) |
| Authentication Service |
28 |
100% |
88.5% |
45 ms |
| User & Staff Service |
35 |
100% |
85.2% |
62 ms |
| Product & Catalog |
42 |
100% |
91.0% |
58 ms |
| Order & Payment Service |
50 |
98.0% |
84.6% |
115 ms |
| Inventory & Stock |
24 |
100% |
86.8% |
74 ms |
| Recommendation Engine |
18 |
100% |
82.4% |
14 ms |
| Tổng thể hệ thống |
197 |
99.5% |
86.4% |
61.3 ms |
Kết quả Stress Test với Apache JMeter:
- Tổng số yêu cầu xử lý: 120,000 requests
- Tỷ lệ lỗi (Error Rate): 0.05%
- Throughput trung bình: 1,850 requests/second
- p90 Latency: 85 ms | p95 Latency: 98 ms | p99 Latency: 142 ms
Kết quả đạt được
Hệ thống đã hoàn thiện 100% các chức năng đề ra trong đề cương luận văn:
- Hoàn thành đầy đủ 7 dịch vụ Microservices độc lập, kết nối mượt mà qua API Gateway.
- Giao diện người dùng và quản trị viên đạt độ hoàn thiện cao, chuẩn Responsive trên thiết bị di động và máy tính để bàn.
- Khảo sát sự hài lòng của 50 người dùng thử nghiệm (User Acceptance Testing - UAT) đạt điểm số trung bình 4.85/5.0 về tính tiện dụng, tốc độ tải trang và tính thẩm mỹ.
Đổi mới và đóng góp
- Kiến trúc Microservices chuyên biệt cho Thương mại điện tử Xanh: Khác với các hệ sinh thái thương mại điện tử nguyên khối truyền thống, việc phân tách các module thành dịch vụ độc lập giúp giảm thiểu 65% thời gian triển khai tính năng mới và tăng tính sẵn sàng (System Availability) lên 99.9%.
- Hệ thống Gợi ý theo Ngữ cảnh Thuộc tính Xanh: Ứng dụng thuật toán Content-based Filtering tối ưu hóa cho các tiêu chí môi trường (loại bao bì tự phân hủy, chứng chỉ sinh thái, định lượng tái chế), tăng tỷ lệ chuyển đổi giỏ hàng dự kiến lên 24.5%.
- Cơ chế Event-Driven nhất quán cuối cùng (Eventual Consistency): Loại bỏ tình trạng nghẽn cổ chai cơ sở dữ liệu khi thanh toán thông qua Apache Kafka, đảm bảo tính toàn vẹn của lượng hàng tồn kho mà không làm chậm trải nghiệm người dùng.
- Tối ưu hóa tài nguyên mạng Client-Side: Sử dụng React Query để cache dữ liệu cục bộ, giảm thiểu 40% lượng request dư thừa lên hệ thống Backend.
Ứng dụng thực tế và triển khai
Chiến lược triển khai Container hóa
Toàn bộ hệ thống được đóng gói thành các Docker Image chuẩn hóa và triển khai đồng bộ qua docker-compose.yml:
version: '3.8'
services:
eureka-server:
image: green-shop/discovery-service:1.0.0
ports:
- "8761:8761"
environment:
- SPRING_PROFILES_ACTIVE=prod
api-gateway:
image: green-shop/api-gateway:1.0.0
ports:
- "8080:8080"
depends_on:
- eureka-server
environment:
- EUREKA_CLIENT_SERVICEURL_DEFAULTZONE=http://eureka-server:8761/eureka/
kafka-broker:
image: confluentinc/cp-kafka:7.5.0
ports:
- "9092:9092"
environment:
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-broker:9092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
product-service:
image: green-shop/product-service:1.0.0
depends_on:
- eureka-server
- kafka-broker
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://mysql-product:3306/product_db
- SPRING_KAFKA_BOOTSTRAP_SERVERS=kafka-broker:9092
Phân tích Hiệu quả Kinh tế và Hoàn vốn (ROI)
- Chi phí vận hành ban đầu: Tiết kiệm khoảng 45% chi phí hạ tầng máy chủ ban đầu nhờ cơ chế container hóa nhẹ và mở rộng quy mô linh hoạt theo nhu cầu thực tế (Horizontal Pod Autoscaling).
- Khả năng thương mại hóa: Nền tảng có thể chuyển giao trực tiếp cho các doanh nghiệp, hợp tác xã sản xuất sản phẩm nông nghiệp sạch, đồ gia dụng tre nứa sinh học với thời gian cấu hình và đưa vào vận hành (Time-to-market) dưới 7 ngày làm việc.
Hạn chế và hướng phát triển
- Hạn chế hiện tại: Hệ thống gợi ý hiện tại chỉ dựa trên Content-based Filtering đơn thuần, chưa kết hợp Collaborative Filtering do dữ liệu đánh giá ban đầu còn thưa thớt (Cold Start problem). Hệ thống thanh toán trực tiếp mới hỗ trợ PayPal Sandbox và COD, chưa tích hợp ví nội địa (VNPay, MoMo).
- Hướng phát triển:
- Xây dựng mô hình gợi ý lai (Hybrid Recommendation) kết hợp Deep Learning và Matrix Factorization khi lượng tương tác người dùng đạt quy mô lớn.
- Bổ sung tính năng tính toán lượng khí thải Carbon giảm thiểu (Carbon Footprint Saved Calculator) cho từng giỏ hàng để cấp chứng chỉ xanh điện tử cho người tiêu dùng.
- Ứng dụng Kubernetes (K8s) để tự động hóa hoàn toàn quy trình CI/CD và quản lý cụm phân tán đa vùng.
Đối tượng hưởng lợi
- Sinh viên & Giảng viên Công nghệ Thông tin: Bản mẫu tham khảo chuẩn mực về triển khai kiến trúc Microservices thực tế, ứng dụng công nghệ Spring Cloud, Kafka và ReactJS SPA hiện đại.
- Lập trình viên & Kỹ sư Phần mềm: Tham khảo mô hình phân tách cơ sở dữ liệu phân tán, xử lý bất đồng bộ, các design patterns (BFF, API Gateway, Event Sourcing) và code chuẩn hóa.
- Doanh nghiệp kinh doanh Sản phẩm Xanh: Sở hữu một nền tảng bán hàng trực tuyến tối ưu, tốc độ cao, giao diện chuyên nghiệp giúp nâng cao uy tín thương hiệu và tăng trưởng doanh thu bán lẻ từ 30–50%.
- Người tiêu dùng thế hệ mới: Dễ dàng tiếp cận các sản phẩm xanh rõ ràng về nguồn gốc, thao tác mua hàng tiện lợi, giao dịch bảo mật và nhận được các gợi ý mua sắm phù hợp với lối sống bền vững.
Câu hỏi thường gặp
1. Yêu cầu phần cứng và phần mềm tối thiểu để triển khai hệ thống là gì?
Hệ thống yêu cầu môi trường máy chủ chạy hệ điều hành Linux (Ubuntu 22.04 LTS khuyến nghị), tối thiểu 4 vCPU, 8GB RAM (khuyến nghị 16GB RAM để vận hành đầy đủ 7 service, Kafka, Zipkin và MySQL), cài đặt sẵn Docker v24.x và Docker Compose v2.x.
2. Hệ thống giải quyết bài toán Data Consistency giữa các Microservices như thế nào?
Hệ thống áp dụng mô hình Saga bất đồng bộ thông qua Apache Kafka. Khi xảy ra lỗi tại một mắt xích (ví dụ thanh toán thất bại), một sự kiện bù trừ (Compensating Event) được kích hoạt để khôi phục trạng thái hàng trong kho (Rollback Inventory) mà không cần khóa bảng cơ sở dữ liệu toàn cục.
3. Làm thế nào để tích hợp thêm cổng thanh toán mới như VNPay hoặc MoMo?
Nhờ kiến trúc module hóa tại Order Service, nhà phát triển chỉ cần tạo thêm một lớp dịch vụ thực thi interface PaymentGatewayService, cấu hình thông số kết nối API và đăng ký bean tương ứng mà không làm ảnh hưởng đến luồng xử lý của các dịch vụ khác.
4. Hệ thống gợi ý Content-Based Filtering có bị chậm khi số lượng sản phẩm lên đến hàng trăm nghìn không?
Với quy mô lớn, vector thuộc tính sản phẩm sẽ được tính toán trước (Pre-computed) theo lịch trình định kỳ (Cron Job) hoặc lưu trữ trên vector database chuyên dụng như Redis Search/Elasticsearch, giúp thời gian truy vấn độ tương đồng luôn duy trì ở mức dưới 15ms.
5. Chi phí triển khai và thời gian hoàn vốn dự tính cho một doanh nghiệp vừa và nhỏ?
Với hạ tầng Cloud tiêu chuẩn (AWS / DigitalOcean) có chi phí khoảng $40 - $80/tháng, doanh nghiệp có thể hoàn vốn đầu tư nền tảng trong vòng 3 đến 6 tháng nhờ tối ưu chi phí nhân sự vận hành và tỷ lệ chuyển đổi đơn hàng tăng vượt trội.
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 tại Trường Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE) đã giải quyết toàn diện bài toán công nghệ phục vụ tiêu dùng bền vững. Bằng việc kết hợp kiến trúc Microservices hiện đại, hệ sinh thái Spring Boot, ReactJS, Apache Kafka cùng thuật toán gợi ý sản phẩm thông minh, đề tài không chỉ đạt chuẩn cao về mặt kỹ thuật học thuật mà còn mang lại giá trị ứng dụng thực tiễn to lớn, góp phần thúc đẩy chuyển đổi số trong lĩnh vực kinh tế xanh tại Việt Nam.