iT邦幫忙

2026 iThome 鐵人賽

DAY 2
0
Kubernetes

從零到一:使用 K8S + GitOps 打造異構技術棧的資料分析平台系列 第 2

[Day 2] 系統架構全覽:Java + Python + React 的異構方案 —— 解析異構技術棧如何截長補短,打造高效分析平台。

  • 分享至 

  • xImage
  •  

Day 2: 系統架構全覽:Java + Python + React 的異構方案

解析異構技術棧如何截長補短,打造高效分析平台。

1. 為什麼要「異構」?

很多團隊會堅持「單一語言棧」,理由是維護成本低,這我完全理解。但在 Wafer BI 的場景裡,我還是刻意選了異構,原因很實際:

  • 認證與權限是典型的企業級事務——強型別、事務一致性、生態系成熟。這是 Java / Spring Boot 3 的主場。
  • 大數據聚合運算要靠 Pandas、PyArrow、Delta Lake 這些武器。這是 Python / FastAPI 的主場。
  • 門戶層要輕量、非同步、middleware 好寫。Node.js / Express 剛剛好。
  • 前端要渲染數萬個資料點還不能卡。React + ECharts 當仁不讓。

微服務架構的其中一個好處,就是每個服務都可以用「最適合它的語言」。而 K8S 跟容器化,就是讓這群個性完全不同的傢伙能和平共處的關鍵。

2. 系統架構圖 (Mermaid)

graph TD
    User((使用者)) --> Ingress[Nginx Ingress]
    Ingress --> Frontend[Frontend: React + ECharts]
    Ingress --> Gateway[API Gateway: Node.js]
    Gateway --> AuthService[User Service: Spring Boot 3]
    Gateway --> DataService[Wafer BI Service: FastAPI]
    AuthService --> DB[(PostgreSQL)]
    DataService --> Delta[(Delta Lake)]

3. 模組職責說明

  • User Service (Java / Spring Boot 3 + JPA):負責身分驗證、JWT 簽發、用戶與群組權限管理,資料落在 PostgreSQL。
  • Wafer BI Service (Python / FastAPI):核心計算引擎,處理 Delta Lake 中的 Parquet 資料,提供晶圓熱圖、CDF、箱型圖、良率等統計 API。
  • API Gateway (Node.js / Express):統一門戶,處理跨域 (CORS)、Rate Limiting、JWT 驗證與路由轉發。
  • Frontend (React + ECharts):用 Canvas 渲染數萬個 Die 的熱圖,追求讓人「哇」出來的互動體驗。

4. 專案結構一覽

異構最直觀的證據,就是專案的 services/ 目錄——pom.xml(Java)、requirements.txt(Python)、package.json(Node.js)、vite.config.ts(React)全部同框。強迫症看了可能會有點癢,但這就是異構的浪漫 哈哈:

https://ithelp.ithome.com.tw/upload/images/20260804/20182549PVJfUFD2qB.png

▲ 專案結構:services/ 下 Java、Python、Node.js、React 異構服務並存

wafer-bi/
├── services/
│   ├── user-service/      # Java / Spring Boot 3(pom.xml)
│   ├── wafer-bi/          # Python / FastAPI(requirements.txt)
│   ├── api-gateway/       # Node.js / Express(package.json)
│   ├── frontend/          # React + Vite(vite.config.ts)
│   ├── license-service/   # Java(授權管理)
│   └── ai-mcp-service/    # Python(AI 助理,之後的彩蛋)
├── k8s/                   # K8S Manifests
├── helm/                  # Helm Chart
├── monitoring/            # Prometheus / Grafana 配置
└── docker-compose.yml     # 本地一鍵啟動

5. 異構的代價與對策

異構不是免費的午餐,先老實把代價列出來,後面的文章會一個一個拆解:

挑戰 對策 相關章節
各服務建置方式不同 統一用 Dockerfile 封裝 Day 3~4
跨服務認證 Gateway 統一驗 JWT Day 6
本地環境難以複製 Docker Compose 一鍵啟動 Day 7
部署文件爆炸 Helm Template 管理 Day 10
跨語言追蹤困難 OpenTelemetry 統一鏈路 Day 24

明天開始動手:先把 Java 服務裝進 Docker,讓 Spring Boot 3 搬進容器新家。


上一篇
[Day 1] 前言:為什麼要選這個題目?專案背景與願景 —— 介紹 Wafer BI 的誕生。
系列文
從零到一:使用 K8S + GitOps 打造異構技術棧的資料分析平台2
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言