CodeReady
Quay lại danh sách case study

Di dời Hệ thống Monolith sang Micro-Frontend cho Đội ngũ Đa Quốc Gia

Tách một ứng dụng Monolith React lớn thành các micro-app độc lập được phát triển bởi nhiều team khác nhau.

Bối cảnh

Công ty mở rộng quy mô, từ 1 team phát triển lên 5 team độc lập cùng làm việc trên một codebase Monolith React, dẫn đến xung đột code thường xuyên và thời gian build kéo dài hơn 20 phút.

Vấn đề cần xử lý

Codebase quá lớn gây nghẽn cổ chai trong quá trình phát hành, các team giẫm chân lên nhau khi sửa các module chung.

Hướng xử lý đề xuất

Áp dụng kiến trúc Micro-Frontend sử dụng Webpack 5 Module Federation. Xây dựng một Host Shell ứng dụng chính và các Remote Apps cho từng tính năng kinh doanh do các team tự quản lý và deploy độc lập.

Câu trả lời mẫu khi phỏng vấn

Chúng tôi đã chọn Module Federation vì nó cho phép chia sẻ dependency trực tiếp tại runtime mà không cần đóng gói lại toàn bộ. Tôi thiết lập một design system chung dạng npm package và quy chuẩn hóa các giao tiếp giữa các micro-app thông qua custom events.

Trade-off

Tăng độ phức tạp trong cấu hình build hệ thống, đòi hỏi CI/CD pipeline phức tạp hơn và quản lý version chặt chẽ để tránh lỗi bất đồng bộ thư viện giữa các micro-app.

Kết quả kỳ vọng

Thời gian build của từng team giảm xuống dưới 2 phút, các team có thể phát hành tính năng độc lập hàng ngày mà không phụ thuộc vào nhau.

Bài học khi trả lời phỏng vấn

Kiến trúc micro-frontend chỉ nên áp dụng khi quy mô tổ chức đủ lớn; nếu không, chi phí vận hành sẽ vượt trội hơn lợi ích mang lại.