Tóm tắt: đổi "tốc độ tổ chức" lấy "độ phức tạp kỹ thuật".
Ưu điểm:
- team tự chủ — mỗi team sở hữu một mảnh từ đầu đến cuối
- deploy độc lập — release riêng, không chờ nhau
- scale được tổ chức nhiều team trên cùng sản phẩm
- tự do tech stack và nâng cấp dần (migrate khỏi legacy từng phần)
- tách biệt lỗi nếu thiết kế đúng
Nhược điểm:
- payload lớn do duplicate dependency nếu chia sẻ không tốt
- phức tạp vận hành — nhiều pipeline, versioning, orchestration
- khó giữ UI/UX nhất quán → cần design system chung
- debug và observability xuyên nhiều mảnh khó hơn monolith
- overhead không đáng nếu team/app nhỏ
Lưu ý: chỉ chọn micro-frontend khi điểm nghẽn của monolith (các team xung đột khi làm chung, deploy nghẽn cổ chai) đã lớn hơn chi phí phức tạp mà nó mang lại — đừng chọn vì hype.
In short: you trade "organizational speed" for "technical complexity".
Pros:
- team autonomy — each team owns a piece end-to-end
- independent deployment — release without waiting on others
- organizational scaling across many teams on one product
- freedom of tech stack and incremental migration away from legacy
- fault isolation when designed well
Cons:
- larger payloads from duplicate dependencies if sharing isn't done well
- operational complexity — many pipelines, versioning, orchestration
- hard to keep UI/UX consistent → needs a shared design system
- cross-piece debugging and observability are harder than a monolith
- overhead that isn't worth it for a small team or app
Note: adopt micro-frontends only when the monolith's problems (teams conflicting with each other, deployment bottlenecks) already outweighs the added complexity — don't pick them for hype.