Chuyển đổi sang Composable Commerce: Từ Magento 2 → Microservices Golang

Cửa hàng Magento 2 của bạn có đang ngốn $125,000–$200,000/năm cho phí bản quyền Enterprise không? Đội ngũ kỹ sư của bạn có đang đốt 60% thời gian của mỗi sprint để chạy theo fix các vấn đề tương thích PHP và viết những đoạn override module chắp vá thay vì phát triển tính năng mới? Bạn có đang chạm ngưỡng chịu tải mỗi khi chạy flash-sale chỉ vì bạn bắt buộc phải scale toàn bộ hệ thống nguyên khối cùng một lúc?

Chào mừng bạn đến với cẩm nang toàn tập về Chuyển đổi sang Composable Commerce (Thương mại lắp ghép) — cách phẫu thuật tháo dỡ một khối monolith Magento 2 thành một nền tảng microservices chuẩn production được xây dựng trên Go 1.25, Kratos v2, Dapr PubSub, và Rush monorepo, mà không làm rơi rớt một đơn hàng nào trong quá trình chuyển đổi.

Về Series này

Nội dung này được đúc kết từ quá trình xây dựng một Nền tảng Composable Commerce thực tế — 21 Go microservices + 2 frontend đảm nhiệm toàn bộ hành trình thương mại: Duyệt (Browse) → Tìm kiếm (Search) → Giỏ hàng (Cart) → Thanh toán (Checkout) → Trả tiền (Pay) → Hoàn tất (Fulfill) → Vận chuyển (Ship) → Hoàn hàng (Return) — với 0 đồng phí bản quyền Magento và nắm toàn quyền sở hữu dữ liệu. Mọi quyết định kiến trúc trong series này đều được đúc kết từ một trong 24 Hồ sơ Quyết định Kiến trúc (ADRs) của chúng tôi.


🎯 Tư vấn Chuyển đổi

Đội ngũ của bạn đang lên kế hoạch thoát khỏi Magento hay đang đánh giá việc chuyển đổi sang kiến trúc composable commerce? Bạn cần một buổi Đánh giá Kiến trúc (Architecture Review) cho nền tảng hiện tại trước khi cam kết với một chiến lược chuyển đổi?

👉 Đặt lịch Tư vấn Kiến trúc 1:1 với Senior Architect Lê Tuấn Anh — Hơn 17 năm kinh nghiệm xây dựng các nền tảng e-commerce enterprise tại Việt Nam và Đông Nam Á.


📚 Chương trình Cốt lõi

Lược đồ EAV, khóa chính dạng số nguyên (integer primary keys), và sự phụ thuộc module PHP của Magento làm cho việc chuyển đổi trở nên đặc biệt hiểm nghèo. Series này mang đến cho bạn cẩm nang Strangler Fig 3 giai đoạn hoàn chỉnh kèm code Go có thể chạy được:

  1. Phần 0: Tóm tắt cho Quản lý — Tại sao $200K/Năm lại là một Cái Bẫy Chi phí thực sự của Magento Enterprise, và tại sao kiến trúc composable lại tự hoàn vốn ngay trong Năm 1.

  2. Phần 1: Bounded Contexts trong DDD — Phân rã các Module Magento Cách ánh xạ cấu trúc module của Magento thành 21 bounded context sử dụng Domain-Driven Design — không cần làm một cuộc đập đi xây lại kiểu Big Bang.

  3. Phần 2: Rush Monorepo — Quản lý 21 Go Services + 2 Frontends Tại sao chúng tôi chọn Microsoft Rush thay vì Nx/Turborepo cho một monorepo trộn lẫn Go + Next.js + React, và cách thiết lập nó.

  4. Phần 3: Golang + Kratos v2 — Đi sâu vào Framework Microservice Kratos v2 xử lý transport, tiêm phụ thuộc (dependency injection), và mô hình common library xuyên suốt 21 service như thế nào.

  5. Phần 4: Kiến trúc gRPC Internal + REST Gateway Giao tiếp giữa các service (service-to-service) bằng gRPC, phơi bày REST thông qua gRPC-Gateway, và chiến lược định tuyến API Gateway.

  6. Phần 5: Chuyển đổi Lược đồ EAV — Cạm bẫy Lớn nhất của Magento Gỡ rối catalog_product_entity_varchar, ánh xạ định danh integer → UUID, và các câu truy vấn trích xuất SQL chính xác và hiệu quả.

  7. Phần 6: Giai đoạn 1 — Strangler Fig: Chuyển đổi Read-Only + CDC Triển khai các Go service dưới dạng read-only (chỉ đọc) đằng sau API Gateway, triển khai đồng bộ CDC thời gian thực từ Magento MySQL, và sử dụng feature flag để điều hướng traffic với mức rủi ro bằng không.

  8. Phần 7: Giai đoạn 2 — Dual-Write: Dapr PubSub + Feature Flags Kích hoạt các API ghi (write APIs) trên microservices, triển khai đồng bộ hai chiều (bidirectional sync) qua Dapr PubSub + Transactional Outbox, và giải quyết xung đột bằng chính sách timestamp-wins.

  9. Phần 8: Giai đoạn 3 — Chuyển đổi Hoàn toàn: Zero Downtime + GitOps Quá trình chuyển dịch traffic tăng dần 25/50/75/100% cho mỗi service, Magento chuyển sang chế độ dự phòng nóng (hot-standby) với cửa sổ rollback 30 ngày, và mô hình triển khai ArgoCD GitOps.

  10. Phần 9: Transactional Outbox + Saga Pattern Giữa các Service Cách luồng saga Checkout → Order → Payment → Warehouse vận hành với đảm bảo giao nhận thành công sử dụng Transactional Outbox và Dapr PubSub Dead Letter Queue.

  11. Phần 10: Điểm lại các ADR — Giải thích 24 Quyết định Kiến trúc Mọi quyết định lớn — Dapr vs Kafka, database-per-service, gRPC vs REST, monorepo vs polyrepo — cùng với những sự đánh đổi dẫn đến từng lựa chọn.


🆚 Nền tảng này Thay thế cho cái gì

Tính năngMagento EnterpriseNền tảng này
Chi phí bản quyền$125,000–$200,000/năm$0
Thanh toán VNPay / MoMoDùng plugin bên thứ ba, thiếu ổn địnhTích hợp gốc, có circuit breaker, tự động failover
Khả năng chịu tải Flash saleScale toàn bộ monolith gấp 10 lầnChỉ scale riêng Order + Payment gấp 10 lần
Hệ thống WMS đa khoChỉ có ở bản Enterprise (add-on)Tích hợp sẵn: quản lý bin location, nhặt hàng theo lô (batch picking)
Độ tin cậy của sự kiện (Event)Webhook hay rớt, xử lý đồng bộ (synchronous hooks)Transactional Outbox + Dapr PubSub + DLQ
Quyền sở hữu dữ liệuVendor-hosted (bị phụ thuộc)Tự host, kiểm soát toàn diện 100%

🧭 Bạn Nên Bắt đầu Từ đâu?

Vị trí của bạnĐiểm khởi đầu Khuyến nghịTại sao
PM / BA / CTOPhần 0: Tóm tắt cho Quản lýBài toán kinh doanh, so sánh chi phí, ROI của chuyển đổi
Kỹ sư Backend (Magento)Phần 5: Chuyển đổi Lược đồ EAVCạm bẫy kỹ thuật mà hầu hết các team sẽ vấp phải đầu tiên
Kỹ sư GolangPhần 3: Tìm hiểu sâu về Kratos v2Đi sâu vào Framework với các dòng code service thực tế
Kiến trúc sư / Tech LeadPhần 1: Bounded Contexts trong DDDPhân rã domain trước khi bắt tay vào viết một dòng code nào
DevOps / SREPhần 8: Giai đoạn 3 Chuyển đổi + GitOpsQuá trình chuyển đổi zero-downtime và mô hình triển khai ArgoCD

Các Câu Hỏi Thường Gặp (FAQ)

Series này có mặc định rằng tôi đang chạy Magento 2 không?
Đúng vậy. Các hướng dẫn chuyển đổi này nhắm tới Magento 2.x (bản Open Source hoặc Commerce). Lược đồ EAV, primary keys dạng integer, và mô hình phụ thuộc module đều là các điểm đặc thù của Magento 2. Nếu bạn đang ở trên Magento 1, các mô hình DDD và Golang vẫn có thể áp dụng nhưng các câu truy vấn trích xuất SQL sẽ khác đi.
Nền tảng này sử dụng phiên bản Golang và framework nào?
Nền tảng Composable Commerce chạy trên Go 1.25 với Kratos v2 (go-kratos), framework microservice cấp độ production của Google được sử dụng ở Bilibili và nhiều hệ thống Go quy mô lớn khác. Cả 21 service chia sẻ chung một thư viện common (v1.10.0) nhằm tiêu chuẩn hóa các tác vụ outbox, idempotency (tính lũy đẳng), health checks, và quản lý cấu hình.
Rush là gì và tại sao không dùng workspace tiêu chuẩn của Go hoặc Nx?
Microsoft Rush là một trình quản lý đa ngôn ngữ (polyglot monorepo manager) có khả năng quản lý cả các Go service lẫn Node.js frontend (Next.js + React) nằm chung dưới một repo duy nhất với khả năng incremental build (biên dịch tăng dần), các quy tắc workspace, và quản lý bộ thay đổi (changeset management). Chúng tôi chọn Rush thay vì Nx nhờ khả năng xử lý vượt trội các repo đa ngôn ngữ (mixed-language repos) và hỗ trợ hàng đầu cho PNPM workspace ở phía frontend.
Quá trình chuyển đổi có thể thực hiện mà không cần ngắt hệ thống (zero downtime) không?
Có. Phương pháp tiếp cận Strangler Fig 3 giai đoạn (Read-Only → Dual-Write → Cutover) được thiết kế chuyên biệt cho zero downtime (không gián đoạn). Giai đoạn 1 chỉ điều hướng luồng dữ liệu đọc (reads) sang microservices; luồng ghi (writes) vẫn đi vào Magento. Giai đoạn 2 đưa vào chế độ dual-write (ghi song song) kèm feature flags giúp có thể lập tức rollback trong chưa tới 10 giây. Giai đoạn 3 chuyển dịch dần traffic 25% → 50% → 75% → 100% cho mỗi service, trong khi giữ nguyên hệ thống Magento ở chế độ hot standby để duy trì cửa sổ rollback an toàn kéo dài 30 ngày.