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

Bất kỳ đội ngũ kỹ thuật nào xây dựng hệ thống nghiêm túc trên Magento cuối cùng cũng sẽ đụng phải ba bức tường giống nhau: bức tường bản quyền, bức tường khả năng chịu tải (scaling), và bức tường tốc độ phát triển (developer velocity). Câu hỏi chỉ là bạn sẽ đụng phải chúng trước hay sau khi chúng bào mòn tiền bạc và khách hàng thực sự của bạn. ...

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

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

Bất kỳ team Magento nào khi quyết định chuyển dịch sang microservices cũng đều phải đối mặt với cùng một câu hỏi đầu tiên: cần bao nhiêu service? Ngành công nghiệp thường bảo là 4–6. “Service danh mục (Catalog), service đơn hàng (Order), service khách hàng (Customer), service tồn kho (Inventory), service thanh toán (Payment), và có thể thêm CMS nữa.” Mọi bài blog, mọi bài diễn thuyết ở hội thảo đều tựu trung ở danh sách này. Đó là một điểm khởi đầu hợp lý — nhưng nó hoàn toàn sai lầm khi áp dụng cho e-commerce nghiêm túc ở quy mô lớn. ...

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

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

Đối với các kỹ sư chuyển từ Magento PHP sang, việc chuyển dịch sang Go microservices không chỉ đơn thuần là đổi ngôn ngữ lập trình — mà nó là một cách thức tổ chức code khác biệt về mặt bản chất. Magento có controller, model, block, helper, và plugin. Còn Go với Kratos v2 sở hữu chính xác 5 lớp (layer), mỗi lớp mang một trách nhiệm được định nghĩa rạch ròi. ...

22 tháng 4, 2026 · 15 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 · 14 phút · Lê Tuấn Anh

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

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ý Xung đột

Ở 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 Downtime + ArgoCD GitOps

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 è cổ ra đóng tiền 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 Cho Lãnh Đạo

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 · 4 phút · Tuan Anh