關於我們的基礎設施
MoldPlan 基礎架構背後的工程決策 — 容器編排、自動化部署、可觀測性與多租戶隔離。
為什麼我們自建平台
MoldPlan 部署在每個客戶的廠區內,工廠的數據留在工廠。我們管理的每一套環境,都透過同一條自動化流水線完成佈建、部署和監控。
這篇文章分享一些讓這一切成為可能的工程決策。
容器編排
我們使用 HashiCorp Nomad 做容器編排。
MoldPlan 的部署通常是每個客戶一台高規格主機。Nomad 提供了容器編排、健康檢查、滾動更新和服務發現,運維複雜度很低。一個執行檔、一份設定檔,就能管好所有服務。
我們的服務 — API、Worker、資料庫、訊息佇列、身分驗證服務 — 全部以 Nomad Job 的形式運行,定義明確的資源限制、健康檢查與重啟策略。
service {
name = "moldplan-api"
port = "http"
check {
type = "http"
path = "/health"
interval = "10s"
timeout = "2s"
}
}
簡潔、可讀、穩定運行。
基礎設施即程式碼 — 超過 40 個 Role
我們的基礎設施全部定義在 Ansible 中,涵蓋 DNS、反向代理、資料庫、監控堆疊、憑證管理、防火牆規則、身分驗證服務。
我們維護超過 40 個可重用的 Ansible Role,組織成一個共享函式庫,可以跨客戶環境、開發環境和我們自己的內部基礎設施使用。一條部署指令就能將一套環境從裸機帶到生產就緒:
./deploy.sh -e production -c customer-name -a all
那個 all 會自動展開成正確的部署順序 — 先資料庫、再身分驗證、然後閘道、最後應用服務。每個 Role 在下一個開始之前都會完成自己的健康驗證。
可觀測性
我們管理的每套環境都運行完整的可觀測性堆疊:
- Prometheus 從每個服務、節點和 Nomad Job 收集指標
- Grafana 提供運維儀表板和客戶面向的健康視圖
- Loki 以結構化標籤聚合所有容器的日誌
- Alertmanager 依據嚴重程度和時間將告警路由給對的人
監控是 Ansible 部署流水線的一部分。當新服務部署時,它的 metrics 端點會自動被發現,儀表板會自動建立,告警規則會立即生效。零手動設定。
真正隔離的多租戶架構
每個客戶獲得:
- 專屬的 Nomad 叢集 — 運行在客戶廠區內的專用硬體上
- 隔離的網路 — 透過 Tailscale mesh VPN,各環境獨立連線
- 獨立的資料庫 — 每套環境各自的 SQL Server、MongoDB 和 PostgreSQL
- 獨立的身分驗證 — 每個客戶有自己的 Keycloak Realm,支援 OAuth2/OIDC
- 客戶專屬憑證 — 自動更新,支援多種模式(下載、本地產生、或完整生命週期管理)
我們可以從一個中央控制面板管理數十套獨立的客戶環境,彼此完全互不知曉。
部署流水線
我們的 CI/CD 運行在 GitLab 上,採用模組化元件架構。當程式碼推送時:
- 變更偵測 判斷哪些服務受到影響
- Docker 映像檔 建置後推送到容器倉庫
- Ansible Playbook 將更新的服務部署到目標環境
- 部署後檢查 驗證健康狀態、連線能力和服務可用性
從 commit 到上線通常只需幾分鐘。每次部署都是程式碼化的,回滾也很簡單 — 指向前一個映像檔標籤,重新執行即可。
網路層
將地端客戶環境連接到我們的管理面板需要謹慎處理。我們使用 Tailscale 建立加密的 mesh 網路,涵蓋我們管理的每一套環境。
在此之上,Caddy 作為反向代理,自動管理 TLS 憑證。Consul 提供服務發現,讓服務透過名稱找到彼此。CoreDNS 處理內部 DNS 解析。
我們團隊的開發者可以安全地存取任何客戶環境中的任何服務,透過名稱直接連線。
憑證生命週期
我們的 cert-renewal 服務將 TLS 憑證管理完全自動化,支援三種模式:
- 下載模式 — 從 Azure Blob Storage 取得萬用字元憑證
- 產生模式 — 使用客戶專屬 CA 在本地產生憑證
- 更新模式 — 完整生命週期管理,包含更新與重新部署
憑證自動輪替。反向代理熱載入新憑證。到期監控會在任何憑證過期前 30 天發出告警。
金鑰管理
我們使用 Ansible Vault 管理基礎設施金鑰,HashiCorp 工具處理服務層級的設定。每個敏感值都在靜態時加密,只在部署時解密。
客戶憑證、資料庫密碼、API 金鑰、OAuth 客戶端密鑰 — 全部透過統一的工作流程管理,部署操作人員只需執行統一的工作流程。
這些帶給我們什麼
把基礎建設做到這個程度,日常維運會變得出奇地平靜:
- 新客戶上線 執行一次 Playbook,從裸機到生產環境約一小時
- 更新 用一條指令推送到任何環境,上班時間執行,零停機
- 事件 通常由監控系統率先偵測到
- 除錯 透過安全通道遠端進行,完整存取日誌、指標和儀表板
製造業軟體的穩定性直接影響工廠產出,基礎建設的品質決定了我們能提供的服務水準。
展望未來
我們持續在進化這個平台。目前的重點方向:
- AI 智慧診斷 — 自動化的生產問題根因分析
- 邊緣運算 — 在工廠現場運行 ML 模型,實現即時預測
- 物件儲存遷移 — 從 SMB 檔案分享遷移到 S3 相容儲存
基礎建設是讓我們能在產品功能上快速迭代的地基。
對我們的基礎架構有疑問?我們很樂意聊這些。與我們聯繫。