Phần 0: Tại sao có thể tránh bẫy Magento $200K/Năm (2026)

Answer-first: Khởi đầu bằng tư duy Modular Monolith và sau đó dần dịch chuyển sang Composable Commerce (Thương mại lắp ghép) bằng 21 Go microservices, Kratos v2, và Dapr PubSub. Đây là lời giải triệt để cho bài toán thay thế Magento Enterprise. Nó mang lại năng lực thương mại cực cao (đa kho, saga thanh toán, tìm kiếm thời gian thực) với chi phí bản quyền bằng 0, giải quyết cả yêu cầu API-first cho Agentic Commerce trong hệ sinh thái AI (2026). ...

1 tháng 4, 2026 · 4 phút · Lê Tuấn Anh

Phần 1: Phân rã Magento thành 21 Go Microservices bằng DDD

Answer-first: Số lượng service bạn cần được quyết định bởi cấu trúc đội ngũ, đặc tả chịu tải (scaling profile), và ranh giới của các bất biến nghiệp vụ (business invariants) của bạn — chứ không phải bởi các khuôn mẫu sáo rỗng. Trong môi trường e-commerce năm 2026, với việc chuyển dịch sang Agentic Commerce và Composable APIs, việc thiết lập ranh giới rõ ràng càng trở nên cốt lõi. Nền tảng trong series này sử dụng 21 services để đáp ứng 10,000+ đơn hàng/ngày. ...

8 tháng 4, 2026 · 4 phút · Lê Tuấn Anh

Phần 3: Golang + Kratos v3 — Đi sâu vào Framework Microservice

Góc nhìn thực chiến (E-E-A-T): Trải qua nhiều dự án đập đi xây lại từ PHP nguyên khối sang Go, tôi nhận thấy sự tự do quá trớn trong Go thường là con dao hai lưỡi. Việc ép toàn bộ đội ngũ kỹ sư tuân thủ khuôn khổ 5 lớp nghiêm ngặt của Kratos v3 trong suốt giai đoạn 2026 đã cứu vớt dự án khỏi cảnh “code rác” lan tràn. Những gì trình bày dưới đây là bản thiết kế đã được tôi tinh chỉnh và chứng minh hiệu quả trên môi trường production với hàng ngàn RPS. ...

22 tháng 4, 2026 · 16 phút · Lê Tuấn Anh

Phần 4: gRPC Internal + REST Gateway — Vòng đời của Hợp đồng API

Mọi API hướng ra công chúng (public-facing) trong Nền tảng Composable Commerce đều bắt đầu từ một file .proto. Phần code — bao gồm các hàm handler gRPC viết bằng Go, TypeScript SDK, các route HTTP, kiểm tra tính hợp lệ của request (request validation), các mã lỗi — tất cả đều được tự động generate ra từ bản hợp đồng (contract) đó. Bài viết này sẽ ghi chép lại những quy ước đằng sau để hệ thống đó vận hành mượt mà. ...

29 tháng 4, 2026 · 15 phút · Lê Tuấn Anh

Phần 5: Chuyển đổi Schema EAV — Cái bẫy lớn nhất của Magento

Cấu trúc EAV schema chính là lý do khiến phần lớn các dự án chuyển đổi khỏi Magento chuốc lấy thất bại. Nhìn từ bên ngoài, nó có vẻ dễ xơi: dữ liệu của sản phẩm bị băm ra rải rác ở catalog_product_entity, catalog_product_entity_varchar, catalog_product_entity_int, catalog_product_entity_decimal, catalog_product_entity_datetime, và catalog_product_entity_text. Sáu cái bảng, viết một cái job ETL đơn giản, làm một cuối tuần là xong. Nhưng rồi bạn phát hiện ra rằng attribute_id = 75 mang ý nghĩa “tên sản phẩm” (product name) trong cái database của bạn, nhưng nó lại mang nghĩa “màu sắc” (color) trong cái database trên môi trường staging. Mỗi một mã ID thuộc tính (attribute ID) được sinh ra tự động ngay tại thời điểm cài đặt (install time) và nó hoàn toàn khác biệt giữa các môi trường với nhau. Bất kỳ script ETL nào dám cả gan gán cứng (hardcode) các mã attribute ID này sẽ lập tức đẻ ra một đống dữ liệu rác bẹp dí (corrupted data) khi mang lên chạy ở production. ...

6 tháng 5, 2026 · 15 phút · Lê Tuấn Anh

Phần 6: Giai đoạn 1 — Strangler Fig: Di dời Chỉ-đọc (Read-Only)

Giai đoạn 1 (Phase 1) là giai đoạn an toàn nhất trong toàn bộ cuộc di dời — đó là chủ ý thiết kế (by design). Sẽ không có bất kỳ thao tác ghi (write) dữ liệu nào chạm tới hệ thống microservice mới. Magento vẫn là nguồn sự thật duy nhất (source of truth) cho mọi sửa đổi dữ liệu. Việc duy nhất mà Giai đoạn 1 làm, đó là chứng minh rằng đống microservice của bạn có thể phục vụ các thao tác đọc (read) với tốc độ nhanh hơn và độ ổn định cao hơn Magento. ...

13 tháng 5, 2026 · 15 phút · Lê Tuấn Anh

Phần 7: Giai đoạn 2 — Ghi Kép (Dual-Write): Dapr PubSub + Xử lý

Ở Giai đoạn 1, cả hai hệ thống đều tồn tại song song nhưng chỉ có duy nhất một thằng được phép ghi dữ liệu: Magento. Sang Giai đoạn 2, cả hai hệ thống sẽ cùng thi nhau ghi dữ liệu cùng một lúc (simultaneously). Đây là giai đoạn phức tạp nhất về mặt kỹ thuật — và cũng là nơi mà phần lớn các dự án di dời tự tay làm hỏng (corrupt) dữ liệu của chính mình nếu họ không chuẩn bị sẵn một chiến lược phân xử xung đột (conflict resolution strategy) rõ ràng sòng phẳng. ...

20 tháng 5, 2026 · 14 phút · Lê Tuấn Anh

Phần 8: Giai đoạn 3 — Chuyển Đổi Hoàn Toàn (Full Cutover): Zero

Giai đoạn 3 (Phase 3) là hồi kết: 100% traffic chuyển hẳn sang hệ thống microservice, Magento chính thức lùi về làm một kho lưu trữ thụ động (passive archive), và toàn bộ nền tảng vận hành hoàn toàn trên các microservice Go thông qua quy trình GitOps. Sẽ không còn bóng dáng của PHP trong những luồng request quan trọng nữa. Và cũng chấm dứt luôn chuỗi ngày phải chi trả chi phí gia hạn giấy phép (license) cho Magento. ...

27 tháng 5, 2026 · 16 phút · Lê Tuấn Anh

Phần 9: Transactional Outbox & Saga đảm bảo giao sự kiện

Khi một khách hàng bấm nút đặt hàng trên nền tảng Composable Commerce, có tới 7 sự kiện bắt buộc phải diễn ra theo chuỗi vắt ngang qua 4 service hoàn toàn độc lập: Tạo Đơn hàng (Order created) → Duyệt Thanh toán (Payment authorized) → Giữ chỗ Tồn kho (Stock reserved) → Kích hoạt Giao nhận (Fulfillment triggered) → Bắn Thông báo (Notification sent) → Cộng Điểm thưởng (Loyalty points awarded) → Tạo Mã vận đơn (Shipping label generated). Bất kỳ mắc xích nào trong số này cũng có thể đứt. Mạng có thể rớt. Database có thể sập. Một cái cổng thanh toán (payment gateway) của bên thứ ba có thể bị timeout. ...

3 tháng 6, 2026 · 18 phút · Lê Tuấn Anh

Thực Tế Của C10M: Sống Sót Qua Lưu Lượng Khổng Lồ — Tóm Tắt Dành

Bất chấp những tiến bộ vượt bậc của công nghệ điện toán đám mây, các ứng dụng doanh nghiệp đối mặt với sự bùng nổ lưu lượng truy cập (traffic) sớm muộn cũng sẽ đâm sầm vào một bức tường khắc nghiệt: Database và Network layer. Cội nguồn của sự cố không nằm ở phần cứng, mà là ở Architecture (Kiến trúc). Chúng ta thường cố giải quyết bài toán “Hàng triệu Requests mỗi giây” (C10M) bằng cách cứ thế quăng thêm server vào (Vertical/Horizontal Scaling), chỉ để rồi bàng hoàng nhận ra những điểm thắt cổ chai về trạng thái, bão cache stampedes, và tính không nhất quán của dual-write đánh sập cả một hệ thống cluster khổng lồ. ...

9 tháng 6, 2026 · 5 phút · Lê Tuấn Anh