Chuyển đến nội dung chính

第 10 課:什麼是微前端? — 效益、權衡與決策框架

微前端的定義。既然我們已經有了微服務,為什麼還需要微前端?好處:獨立部署、團隊自主、技術多樣性。權衡:複雜性、效能、使用者體驗一致性。決策框架。

🏗️ 建築 — 第 10 課 第 10 課:什麼是微前端? — 好處, 權衡和決策框架

微服務與微前端系統設計-從基礎到生產

第 4 部分:微前端 — 架構與原理

亞洲開發網

簡介

微前端將微服務的概念擴展到前端:將Web應用程式劃分為小部分,每個部分都由團隊獨立擁有、開發和部署。本文解釋了為什麼需要微前端以及何時應該(或不應該)使用它。

微前端概述-每個團隊都有一個垂直切片


1.什麼是微前端?

1.1 定義

“一種架構風格,其中可獨立交付的前端應用程式被組合成一個更大的整體。” — 卡姆·傑克遜,馬丁·福勒博客

Monolith Frontend:                   Micro Frontend:
┌─────────────────────────┐         ┌─────────────────────────┐
│     Single SPA          │         │    Shell Application    │
│ ┌─────────────────────┐ │         │ ┌──────┐ ┌──────┐ ┌──┐ │
│ │ Header              │ │         │ │Shared│ │Shared│ │  │ │
│ ├──────┬──────┬───────┤ │         │ │Header│ │Footer│ │  │ │
│ │Produ-│ Cart │ Order │ │         │ └──────┘ └──────┘ │  │ │
│ │cts   │      │       │ │         │ ┌──────┐ ┌──────┐ │  │ │
│ │      │      │       │ │    ──►  │ │Produc│ │ Cart │ │Or│ │
│ │      │      │       │ │         │ │t MFE │ │ MFE  │ │de│ │
│ │      │      │       │ │         │ │Team A│ │Team B│ │rC│ │
│ ├──────┴──────┴───────┤ │         │ └──────┘ └──────┘ └──┘ │
│ │ Footer              │ │         │   Deploy   Deploy  De  │
│ └─────────────────────┘ │         │   riêng    riêng  ploy │
└─────────────────────────┘         └─────────────────────────┘
1 team, 1 repo, 1 deploy            N teams, N repos, N deploys

1.2 微前端與元件庫

元件庫微前端
部署相同的應用程式主機獨立
團隊所有權共享敬業的團隊
技術堆疊類似可以不同
運行時載入建置時運行時
資料/狀態記憶體共享隔離

2. 為什麼我們需要微前端?

2.1 實際問題

您有 5 個團隊 致力於 1 個整體 SPA:

  • 持續的 PR 衝突(500 多個元件,共享狀態)
  • 長合併佇列→每週部署一次
  • 一個團隊想要升級 React 18,但需要遷移整個應用程式
  • 產品頁面上的錯誤→回滾整個應用程式(購物車、訂單也受到影響)

→ 微前端解決了組織規模問題。

2.2 主要好處

好處描述
獨立部署在不影響購物車的情況下發送產品頁面
團隊自治每個團隊都有端對端(UI → BFF → Service)
技術彈性A 團隊使用 React,B 團隊使用 Vue(如有必要)
增量升級升級每個MFE,無需大爆炸
故障隔離MFE A 中的錯誤不會導致 MFE B 崩潰
更快的發展更小的程式碼庫 = 更快的建置、測試、部署

3. 權衡與挑戰

3.1 當微前端不適合時

  • 小團隊(< 5 位開發人員):與收益相比,開銷太大
  • 簡單的應用程式:登陸頁面、部落格、簡單的儀表板
  • 緊密的使用者體驗耦合:應用程式需要零件之間的無縫使用者體驗
  • 效能關鍵:增加運行時開銷(載入、開機)

3.2 複雜性成本

Micro Frontend thêm complexity:
├── Infrastructure: CI/CD cho nhiều apps
├── Shared dependencies: versioning hell
├── UX Consistency: design system bắt buộc
├── Communication: cross-MFE events
├── Performance: bundle size, load time
├── Testing: integration testing across MFEs
└── Developer Experience: local dev setup phức tạp

4. 決策框架

Bạn nên dùng Micro Frontend khi:

✅ Team size: 15+ frontend developers
✅ Multiple teams working on same app
✅ Deploy frequency: team muốn deploy độc lập
✅ App complexity: 10+ distinct features/pages
✅ Tech migration: cần incremental migration

❌ Skip Micro Frontend khi:
❌ Team < 5 developers
❌ Single team, shared ownership
❌ App chưa đủ phức tạp
❌ Performance là yếu tố quyết định
❌ Team chưa có experience với Microservices

總結

微前端不是靈丹妙藥-它解決了組織規模問題。如果您沒有這個問題,就不要造成不必要的複雜性。


下一篇文章: 第 11 課:微前端整合策略 - 建置時與運行時