Skip to content

Thực chiến: hệ thống microservices e-commerce thực phẩm

Tổng quan

Project thực chiến này yêu cầu bạn dựa trên 1 PRD thật, làm từ 0 một hệ thống microservices e-commerce thực phẩm tươi sống. Khác project single-service trước đó, backend ở đây được tách thành nhiều service độc lập theo business, kết nối ra ngoài thống nhất qua API Gateway. Bạn sẽ học cách design service boundary, cách xử lý vấn đề nhất quán data giữa các service.

Đây là phần thực chiến tổng hợp Stage 2. Kiến trúc microservices rất phổ biến trong thực tế — sau khi nắm tư duy tách service và routing qua gateway, bạn có thể đối mặt với design hệ thống backend phức tạp hơn.

Kiến thức tiền đề

Trước khi bắt đầu, bạn nên đã nắm:

Mục tiêu học

Sau project bạn sẽ:

  1. Đọc PRD và extract task list cho hệ thống microservices
  2. Tách service boundary theo business domain (auth, sản phẩm, kho, đơn hàng)
  3. Design và implement routing API Gateway
  4. Xử lý vấn đề trừ kho và nhất quán đơn hàng giữa các service
  5. Hoàn thành end-to-end debug, deliver được prototype microservices

Giới thiệu project

Product bạn cần build là hệ thống microservices e-commerce thực phẩm tươi sống:

Hệ conTrách nhiệm
Client appXem sản phẩm, đặt đơn, xem đơn hàng
Admin appQuản lý sản phẩm, quản lý kho, quản lý đơn hàng

Backend tách theo business thành các service:

ServiceTrách nhiệm
API GatewayEntry thống nhất, routing forward, verify auth
Auth ServiceĐăng ký user, login, cấp JWT
Catalog ServiceQuản lý thông tin sản phẩm
Inventory ServiceQuản lý số lượng kho
Order ServiceTạo đơn, quản lý trạng thái

PRD Entry

PRD project trên GitHub: Xem PRD

Phần 1: Phân tích nhu cầu

1.1 Đọc PRD

Mở doc PRD, tập trung trả lời:

  • Service tách thế nào? Boundary trách nhiệm của từng service là gì?
  • Client và admin có những page nào?
  • Strategy trừ kho sau khi đặt đơn là gì? Success / fail / timeout xử lý ra sao?
  • V1 chưa làm năng lực phức tạp nào (distributed transaction, message queue)?

WARNING

Chưa rõ các câu trên thì đừng viết code. Hiểu nhu cầu không rõ là nguyên nhân phổ biến nhất dẫn tới rework.

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

mermaid
flowchart TD
  prd["PRD"] --> fe["Page 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: Dựng khung project

2.1 Gen project structure

Prompt mẫu:

text
Dựa PRD hiện tại, gen cho tôi khung project hệ thống microservices e-commerce thực phẩm tươi sống.

Yêu cầu:
1. Gen khung frontend client và admin
2. Gen 5 thư mục: api-gateway, auth-service, catalog-service, inventory-service, order-service
3. Mỗi service đầu tiên chỉ làm entry tối thiểu chạy được
4. Chưa nối database thật và payment

2.2 Verify project structure

Check từng item:

  • [ ] 5 thư mục service rõ structure
  • [ ] API Gateway start được và forward request được
  • [ ] Mỗi service có endpoint health check dùng được
  • [ ] Page client và admin truy cập được

Phần 3: Iterate dev

3.1 Đẩy từng module

  1. API Gateway: cấu hình routing, middleware verify JWT
  2. Auth Service: đăng ký, login, cấp JWT
  3. Catalog Service: CRUD sản phẩm, query list
  4. Inventory Service: query kho, trừ kho
  5. Order Service: tạo đơn, chuyển trạng thái, liên động với kho
  6. Admin: quản lý sản phẩm, quản lý kho, quản lý đơn hàng

3.2 Self-check module

CheckCách verify
Routing gatewayAPI các service có forward đúng qua gateway không
Phân quyềnAPI client và admin có cách ly không
Data nhất quánData sản phẩm và kho có đồng bộ không
Vòng lặp giao dịchSau khi đặt đơn, trừ kho và trạng thái đơn có nhất quán không
Xử lý failKhi kho không đủ hoặc timeout có cơ chế bù không

Phần 4: Debug & online

4.1 Test end-to-end

Ít nhất verify các scenario:

  • Xem sản phẩm → bỏ vào giỏ → đặt đơn → xem đơn
  • Admin → thêm sản phẩm → cập nhật kho → xem đơn

Sản phẩm bàn giao

Cuối project bạn cần submit:

  • [ ] Link demo online truy cập được
  • [ ] Link repo source code (kèm README)
  • [ ] Doc PRD
  • [ ] Screenshot page chính (danh sách sản phẩm, page đặt đơn, page đơn, admin)
  • [ ] Video demo 60s

Tiêu chuẩn chấm điểm

ChiềuCơ bảnNâng cao
Bám PRDPage, function, tách service cơ bản khớp PRDGiải thích rõ lý do tách service
Vòng lặp productXem sản phẩm → đặt đơn → trừ kho → xem đơn chạy đượcCó cơ chế bù khi đơn timeout hoặc kho không đủ
Kiến trúc serviceMỗi service start được độc lập, truy cập thống nhất qua gatewayGiao tiếp giữa service có xử lý lỗi và retry
Năng lực backendQuản lý sản phẩm, kho, đơn vận hành đượcAdmin có thống kê data
EngineeringChuỗi frontend, gateway, service, database đã thôngCó Docker Compose hoặc orchestration tương tự

Tài liệu tham khảo