12因子應用程式宣言是一種構建軟件即服務(SaaS)應用程式的方法,這些應用程式具有可擴展性,可維護性,並且可在現代雲平台上部署。這套方法是由Heroku的工程師開發的,旨在使應用程式具有部署到web時的可攜性和彈性。

介紹12因子應用程式

在網頁開發的早期,應用程式經常以單體風格構建,與其執行環境緊密結合。這種方式導致了許多問題,尤其是當應用程式需要擴展或遷移到不同環境時。12因子應用程式的方法論就是為了解決這些挑戰,強調以聲明的方式進行設置自動化,與操作系統保持良好的合同,並使開發與生產之間的差異最小化。

十二因子

  1. 程式碼庫:一個在版本控制中追蹤的程式碼庫,許多部署。這條原則主張每個服務都應有一個程式碼庫,該程式碼庫可以在任何環境中部署。

  2. 依賴性:明確宣告並隔離依賴性。應用程式應明確宣告所有依賴性,不依賴於系統範疇內包的隱含存在。

  3. 配置:在環境中儲存配置。這個因子推動將配置與程式碼分離,因為配置在部署間變化很大,而程式碼則不是。

  4. 支援服務:將支援服務視為附加資源。這意味著應用程式的部署應能夠換出本地 MySQL 資料庫為第三方服務,而不用修改應用程式的程式碼。

  5. 建立,發佈,運行:嚴格分離建立和運行階段。這個因子強調需要嚴格分離建立階段(將程式碼轉換成可執行包的階段),發佈階段(將可執行文件與配置結合的階段)和運行階段(實際運行應用程式的階段)。

  6. 進程:作為一個或多個無狀態進程來執行應用程式。這個原則認為,應用程式應該以無狀態的方式執行,並且任何需要保留的資料都應該儲存在有狀態的支援服務,如資料庫。

  7. 端口綁定:通過端口綁定導出服務。應用程式應完全自包含,不應依賴於服務器在運行環境中的注入來創建面向web的服務。

  8. 併發:通過進程模型進行擴展。該因子意味著應用程式應能通過增加更多並發進程來實現水平擴展。

  9. 廢棄:通過快速啟動和優雅關閉來最大化魯棒性。這個原則主張縮短啟動時間並優雅地關機,以最大程度地提高魯棒性。

  10. 開發/生產同態:保持開發,暫存和生產盡可能相似。這個因子的目標是減少開發與生產之間的差距,確保連續部署以達到最大的敏捷性。

  11. 日誌:將日誌視為事件流。應用程式不應對其輸出流的路由或儲存感到憂慮。相反,每個正在運行的進程都將其事件流無緩存地寫入stdout。

  12. 管理流程:作為一次性流程運行管理/管理任務。這個原則認為,應該在與應用程式的常規長期運行進程相同的環境中運行管理任務。

結論

12因子應用程式的方法提供了一個構建軟體的框架,該軟體顯示了現代雲平台所必需的關鍵特性。它解決了可擴展性,可靠性和可攜性的問題,使開發團隊更容易有效地構建和管理應用程式。隨著網頁開發的世界不斷演進,12因子應用程式的原則繼續是構建強大、可擴展的雲原生應用程式的重要參考。