Skip to content

Thực hành phát triển hệ thống microservices thương mại điện tử thực phẩm tươi sống

Tổng quan

Dự án thực chiến này yêu cầu bạn hoàn thành một hệ thống microservices thương mại điện tử thực phẩm tươi sống dựa trên một PRD thực tế, xây dựng từ đầu. Khác với các dự án dịch vụ đơn lẻ trước đó, backend của dự án này được chia thành nhiều dịch vụ độc lập theo nghiệp vụ, thông qua API Gateway thống nhất对外. Bạn sẽ học cách thiết kế ranh giới dịch vụ, cách xử lý vấn đề nhất quán dữ liệu cross-service.

Đây là phần thực hành tổng hợp của Stage 2. Kiến trúc microservices rất phổ biến trong thực tế công việc, sau khi nắm vững tư duy cơ bản về phân tách dịch vụ và định tuyến gateway, bạn có thể ứng phó với thiết kế hệ thống backend phức tạp hơn.

Kiến thức tiên quyết

Trước khi bắt đầu dự án này, bạn nên đã nắm được các nội dung sau:

Mục tiêu học tập

Sau khi hoàn thành bài thực hành này, bạn sẽ có thể:

  1. Đọc PRD và trích xuất danh sách công việc phát triển hệ thống microservices
  2. Phân tách ranh giới dịch vụ theo lĩnh vực nghiệp vụ (xác thực, sản phẩm, tồn kho, đơn hàng)
  3. Thiết kế và triển khai định tuyến API Gateway
  4. Xử lý các vấn đề cross-service như trừ tồn kho và nhất quán đơn hàng
  5. Hoàn thành liên hợp đầu cuối, bàn giao nguyên mẫu microservices có thể demo

Giới thiệu dự án

Sản phẩm bạn cần xây dựng là một hệ thống microservices thương mại điện tử thực phẩm tươi sống:

Hệ thống conTrách nhiệm
Trang người dùngDuyệt sản phẩm, đặt hàng, xem đơn hàng
Trang quản trịQuản lý sản phẩm, quản lý tồn kho, quản lý đơn hàng

Backend được phân tách theo nghiệp vụ thành các dịch vụ sau:

Dịch vụTrách nhiệm
API GatewayĐiểm vào thống nhất, chuyển tiếp định tuyến, kiểm tra xác thực
Auth ServiceĐăng ký người dùng, đăng nhập, cấp JWT
Catalog ServiceQuản lý thông tin sản phẩm
Inventory ServiceQuản lý số lượng tồn kho
Order ServiceTạo đơn hàng, quản lý trạng thái

Đường dẫn PRD

Tài liệu yêu cầu của dự án này nằm trên GitHub: Xem PRD

Phần 1: Phân tích yêu cầu

1.1 Đọc PRD

Mở tài liệu PRD, tập trung trả lời các câu hỏi sau:

  • Dịch vụ được phân tách như thế nào? Ranh giới trách nhiệm của mỗi dịch vụ là gì?
  • Frontend và trang quản trị lần lượt có những trang nào?
  • Chiến lược trừ tồn kho sau khi đặt hàng là gì? Xử lý thành công / thất bại / timeout mỗi loại như thế nào?
  • Phiên bản đầu tiên những khả năng phức tạp nào (như giao dịch phân tán, hàng đợi tin nhắn) tạm thời không làm?

WARNING

Nếu các câu hỏi trên chưa có câu trả lời rõ ràng, đừng bắt đầu viết code. Hiểu sai yêu cầu là nguyên nhân phổ biến nhất dẫn đến phải làm lại.

1.2 Xác nhận kiến trúc hệ thống

mermaid
flowchart TD
  prd["PRD"] --> fe["Trang frontend"]
  fe --> gw["API Gateway"]
  gw --> auth["Auth Service"]
  gw --> catalog["Catalog Service"]
  gw --> inventory["Inventory Service"]
  gw --> order["Order Service"]
  order --> inventory

Phần 2: Xây dựng khung dự án

2.1 Tạo cấu trúc dự án

Tham khảo prompt:

text
Vui lòng dựa trên PRD hiện tại, giúp tôi tạo cấu trúc dự án của hệ thống microservices thương mại điện tử thực phẩm tươi sống.

Yêu cầu:
1. Tạo khung frontend trang người dùng và trang quản trị
2. Tạo năm thư mục: api-gateway, auth-service, catalog-service, inventory-service, order-service
3. Mỗi dịch vụ trước tiên chỉ làm điểm vào có thể chạy tối thiểu
4. Trước tiên không kết nối cơ sở dữ liệu thực tế và thanh toán

2.2 Xác minh cấu trúc dự án

Kiểm tra từng mục:

  • [ ] Cấu trúc thư mục của năm dịch vụ rõ ràng
  • [ ] API Gateway có thể khởi động và chuyển tiếp yêu cầu
  • [ ] API kiểm tra sức khỏe của mỗi dịch vụ có thể sử dụng
  • [ ] Trang frontend trang người dùng và trang quản trị có thể truy cập

Phần 3: Phát triển lặp

3.1 Triển khai theo module

  1. API Gateway: Cấu hình định tuyến, middleware kiểm tra JWT
  2. Auth Service: Đăng ký, đăng nhập, cấp JWT
  3. Catalog Service: CRUD sản phẩm, truy vấn danh sách
  4. Inventory Service: Truy vấn tồn kho, trừ tồn kho
  5. Order Service: Tạo đơn hàng, chuyển trạng thái, liên kết tồn kho
  6. Trang quản trị: Quản lý sản phẩm, quản lý tồn kho, quản lý đơn hàng

3.2 Tự kiểm tra module

Mục kiểm traPhương pháp xác minh
Định tuyến gatewayAPI của mỗi dịch vụ có được chuyển tiếp chính xác qua gateway không
Cách ly phân quyềnAPI trang người dùng và trang quản trị có cách ly không
Nhất quán dữ liệuDữ liệu sản phẩm và tồn kho có đồng bộ không
Chuỗi giao dịchSau khi đặt hàng, trừ tồn kho, trạng thái đơn hàng có nhất quán không
Xử lý thất bạiKhi tồn kho không đủ hoặc timeout có cơ chế bù đắp không

Phần 4: Liên hợp và Triển khai

4.1 Kiểm thử đầu cuối

Ít nhất xác minh các kịch bản sau:

  • Duyệt sản phẩm → Thêm vào giỏ hàng → Đặt hàng → Xem đơn hàng
  • Quản trị viên → Thêm sản phẩm → Cập nhật tồn kho → Xem đơn hàng

Sản phẩm bàn giao

Sau khi hoàn thành dự án này, bạn cần nộp các nội dung sau:

  • [ ] Liên kết demo trực tuyến có thể truy cập
  • [ ] Liên kết kho mã nguồn (bao gồm README)
  • [ ] Tài liệu PRD
  • [ ] Ảnh chụp màn hình các trang cốt lõi (danh sách sản phẩm, trang đặt hàng, trang đơn hàng, back-office quản trị)
  • [ ] Video demo 60 giây

Tiêu chí chấm điểm

ChiềuYêu cầu cơ bảnYêu cầu nâng cao
Căn chỉnh PRDTrang, chức năng, phân tách dịch vụ cơ bản khớp với PRDCó thể giải thích rõ ràng lý do phân tách dịch vụ
Chuỗi sản phẩmDuyệt → Đặt hàng → Trừ tồn kho → Xem đơn hàng có thể chạy quaTimeout đơn hàng hoặc tồn kho không đủ có cơ chế bù đắp
Kiến trúc dịch vụMỗi dịch vụ có thể khởi động độc lập, truy cập thống nhất qua gatewayGiao tiếp giữa dịch vụ có xử lý lỗi và thử lại
Khả năng back-officeQuản lý sản phẩm, tồn kho, đơn hàng có thể thao tácTrang quản trị có thống kê dữ liệu
Độ hoàn thiện kỹ thuậtFrontend, gateway, dịch vụ, chuỗi cơ sở dữ liệu đã kết nốiCó Docker Compose hoặc điều phối tương tự

Tài liệu tham khảo