規範雲端原生應用程式的開發與部署,打造彈性、可擴展的現代化應用程式,透過遵循這些原則,開發者可以更好地應對雲端環境的挑戰,並提高應用程式的品質和可靠性。
12 因子的核心原則
- Codebase: 微服務的codebase都是相同的一份。
- Dependencies: 明確宣告並隔離應用程式的依賴。
- Config: 免依賴本地環境,使開發、測試和生產環境分離。
- Backing services: 將後端服務(如資料庫、訊息佇列)視為附加資源,本體在雲,且可輕易更換。
- Build, release, run: 將建構、發布和執行階段嚴格分開,透過CI/CD工具來自動化。
- Processes: 將應用程式作為一個或多個無狀態的進程運行,不依賴資料。
- Port binding: 透過埠綁定方式暴露服務。
- Concurrency: 以處理程序的方式進行水平擴展。
- Disposability: 啟動或關閉進程必須快速且無狀態。
- Dev/prod parity: 開發和生產環境應盡量保持一致。
- Logs: 將日誌視為事件流,透過Log對微服務進行監控(Prometheus, Jaeger…)。
- Admin processes: 一時性的管理任務應作為一次性的進程運行。
好處
- 可移植性: 應用程式可以在不同的平台上輕鬆部署。
- 可擴展性: 透過水平擴展來應對流量的變化。
- 可靠性: 應用程式更健壯,不易發生故障。
- 開發效率: 標準化的開發流程,加速開發速度。
- 易於管理: 透過環境變數管理設定,簡化管理。
應用場景
- 雲端原生應用程式: 適合部署在雲端平台上的應用程式。
- 微服務架構: 將大型應用程式拆分成小的、獨立的服務。
- 持續交付: 頻繁地將程式碼部署到生產環境。
如果你覺得這篇文章很棒,請你不吝點讚 (゚∀゚)