平台工程師Platform Engineer
Description
●角色定位
您是讓所有產品團隊能快速、安全、可靠地交付軟體的人。您不是那個「幫大家部署」的人——您是建立工具和平台讓大家能自己部署的人。
H2U 有六個以上的產品,從年服務 200 萬人次的健檢平台、日流量 180 萬的媒體網站、到有 GPS 離線功能的行動 App,而且同時在做 cloud SaaS 和 on-prem 企業部署。這些產品跑在不同的技術棧上,如果沒有一個統一的基礎平台,每個產品各搞各的部署、各管各的監控,維運成本會指數成長。
您的工作就是讓這件事不會發生。
Report 給 Tech Lead。在 on-prem 部署工具建設方面,與 SA/Delivery Lead 密切協作。
●您會面對的環境
1. H2U pano/eXpert
(1)類型:企業 SaaS + on-prem
(2)部署環境:Cloud + 客戶機房
(3)技術特徵:Java/JDK 8→21 遷移、混合legacy 架構,未來AI 服務整合、積極開發中
2. 早安健康
(1)類型:媒體+電商
(2)部署環境:Cloud
(3)技術特徵:高流量、SEO 敏感、CDN 依賴
3. 運動筆記
(1)類型:社群平台
(2)部署環境:Cloud
(3)技術特徵:UGC、活動系統、多地區部署
4. 健行筆記
(1)類型:GPS App + Web
(2)部署環境:Cloud + App Store
(3)技術特徵:離線地圖、GPS 軌跡、App 發佈
基礎設施現況
1. 主要在 GCP 上運行(已從 AWS 遷移完成)
2. CI/CD 使用 GitHub Actions,部分產品已建好、部分還不完整
3. 容器化程度不一——有些產品已 Docker 化,有些還沒有
4. 監控和 alerting 尚未系統化
5. On-prem 部署工具和自動化目前幾乎沒有
6. 安全合規(個資法、資通安全管理法)的技術實作需要加強
●主要職責
A. CI/CD 與部署平台
1. 為所有產品建立統一的 CI/CD pipeline 標準——不是每個產品一套完全客製的流程,而是一個共用的 pipeline template 加上產品特定的 config。
2. 確保每次部署都是可重複、可回滾、有記錄的。自動化所有能自動化的步驟,減少「只有某個人知道怎麼部署」的知識風險。
3. 管理 staging / production 環境的一致性,降低「staging 上正常、production 上爆掉」的風險。
4. 為前端產品建立 preview deployment(PR 級別的預覽環境),讓 code review 可以看到實際畫面。
B. On-Prem 部署基礎建設
1. 與 SA/Delivery Lead 協作,建立可重複使用的 on-prem 部署工具包:
(1)IaC template(Terraform / Ansible)用於客戶環境建置
(2)Kubernetes manifest 或 Docker Compose 用於應用部署
(3)離線環境的 container registry 和 dependency mirror
(4)環境驗證腳本(部署前自動檢查客戶環境是否符合最低規格)
2. 目標:SA 帶工程師到客戶機房部署時,不需要從零手動配置,跑工具包就能完成 80% 的工作。
3. 設計版本升級的自動化流程——on-prem 客戶不能像 SaaS 一樣 push 就上線,需要有打包、分發、客戶端執行的完整機制。
C. 可觀測性(Monitoring / Logging / Alerting)
1. 為所有產品建立統一的監控平台——不是每個產品自己看自己的 log,是一個地方看所有產品的健康狀態。
2. 設計合理的 alert 策略:什麼該叫人、什麼自動處理、什麼可以等。目標是減少 alert fatigue,不是把所有 warning 都發到 Slack。
3. 建立 application-level monitoring:API response time、error rate、業務指標(如每日健檢報告產出量)。
4. 為 on-prem 客戶設計監控方案:如果客戶允許遠端監控,建立 data pipeline;如果不允許,設計定期巡檢的 health check 報告機制。
D. 安全與合規基礎
1. 建立 secret 管理機制(不是把密碼寫在 .env 裡 commit 到 git)。
2. 設計 SSL 憑證的自動化管理(多個 subdomain、跨產品)。
3. 建立依賴套件的安全掃描流程(在 CI 裡自動跑 vulnerability scan)。
4. 協助 Product Tech Lead 實作健康資料相關的安全要求:靜態加密、存取控制、稽核日誌。
5. 為 on-prem 客戶環境設計安全基線配置。
E. 開發者體驗(Developer Experience)
1. 減少 product engineer 在非開發工作上花的時間:等 build、查 deployment 失敗原因、找 log、配環境。
2. 維護內部的平台文件——不是寫了沒人看的 wiki,是工程師真的會照著做的 runbook。
3. 建立 self-service 機制:product engineer 能自己建 staging 環境、自己看 monitoring dashboard、自己觸發 deployment,不需要每次都來找你。
●必備條件
1. 基礎設施與自動化
(1)精通至少一個 IaC 工具(Terraform、Pulumi、或 CloudFormation),能從零建置雲端環境。
(2)精通容器化技術(Docker)和容器編排(Kubernetes),不是「會寫 Dockerfile」,是能設計 multi-service 的 K8s 部署架構。
(3)熟悉 CI/CD pipeline 設計(GitHub Actions 為主),能建立跨產品的 reusable workflow。
(4)扎實的 Linux 系統管理能力。
(5)熟悉網路基礎:DNS、SSL/TLS、reverse proxy(Nginx/Traefik)、防火牆規則。
2. 雲端平台
(1)有 GCP 實戰經驗(H2U 的主要平台),或 AWS/Azure 經驗能快速轉移。
(2)理解 managed service 的取捨——什麼時候用 Cloud SQL vs 自建、什麼時候用 GKE vs Cloud Run。
3. 可觀測性
(1)有建立 monitoring/logging/alerting stack 的經驗(Prometheus + Grafana、ELK、Datadog、或同等)。
(2)能設計有意義的 alert(不是「CPU > 80% 就叫」,是「業務指標異常才叫」)。
4. 安全基礎
(1)理解 secret management(Vault、GCP Secret Manager、或同等)。
(2)有 SSL 憑證管理和自動化 renewal 的經驗。
(3)有 CI 中跑安全掃描(dependency scan、container scan)的經驗。
5. 軟實力
(1)能跟 product engineer 溝通——理解他們的痛點,建出他們真的會用的工具,不是建出你覺得很酷但沒人用的平台。
(2)有文件撰寫習慣——你建的東西必須能被其他人理解和使用。
(3)能在「理想架構」和「現實資源」之間找到平衡——不是一步到位建出 Netflix 級別的平台,是用有限資源解決最痛的問題。
經驗
(1)3 年以上的 infrastructure / DevOps / platform engineering 經驗。
(2)有管理多個產品或服務的基礎設施的經驗。
(3)有在生產環境處理 incident 的經驗。