天天看點

雲原生十二要素應用​

      雲原生改變了應用研發的模式,也帶來了技術上的變革,促使我們需要考慮更多的營運治理的原則和方法。這裡我們簡要總結一下雲原生架構經典的設計原則“12要素”原則。​

(1)基準代碼∶一份基準代碼、多份部署。​

企業一般會采用代碼版本控制系統來跟蹤管理所有修訂版本的代碼庫,這樣就隻需要一份代碼,卻可以同時存在多份部署,如圖1所示。每份部署相當于運作了一個應用的執行個體。​

雲原生十二要素應用​

圖1一份基準代碼多份部署​

(2)依賴顯式聲明依賴關系。​

應用程式不會隐式依賴系統級類庫。它一定通過依賴清單确切地聲明所有依賴項。​

(3)配置在環境中存儲配置。​

十二要素應用推薦将應用的配置存儲于環境變量中,如圖2所示。這允許應用程式非常友善地在不同的部署間修改,而不需要改動一行代碼。​

雲原生十二要素應用​

圖2在環境中存儲配置​

(4)後端服務把後端服務當作附加資源。​

後端服務是指程式運作所需要的通過網絡調用的各種服務,符合規則的應用程式應該可以在不進行任何代碼改動的情況下,将本地資料庫切換至異地或者雲上的資料庫服務。​

(5)建構、釋出、運作∶嚴格分離建構、釋出和運作。​

基準代碼通過建構、釋出和運作三個階段轉化成一份部署。​

(6)程序以一個或多個無狀态程序運作應用。​

符合十二要素的應用程式的程序必須是無狀态且無共享的。任何需要持久化的資料都需要存儲在後端服務内。​

(7)端口綁定∶通過端口綁定提供服務。​

符合十二要素的應用程式可以自我加載而不依賴于任何網絡伺服器。​

(8)并發通過程序模型進行擴充。​

在十二要素應用中的程序主要借鑒了UNIX守護程序模型,不同的工作配置設定給不同類型的程序處理。​

(9)易處理∶快速啟動和優雅終止,最大化健壯性。​

十二要素應用的程序是可分解的,它可以瞬間開啟或者停止。這有利于快速、彈性伸縮應用,迅速部署變化的代碼或配置。​

(10)開發環境與線上環境等價∶盡可能保持開發、預釋出、線上環境相同。​

必須縮小本地和生産環境的差異,要求不同環境下的後端服務也要一緻。​

(11)日志把日志當作事件流。​

日志使得應用程式運作的動作變得透明。在十二要素應用中則不應該考慮存儲到自己的輸出流,不應該試圖去寫或者管理日志檔案。​

(12)管理程序把背景管理當作一次性程序運作。​

程序構成是指用來處理應用的正常業務的一組程序。這也是十二要素的要求∶一次性管理程序應該和正常的常駐程序使用同樣的環境。這些管理程序和任何其他程序一樣使用相同的代碼和配置,基于某個釋出版本運作。背景管理代碼應該随其他應用程式代碼一起釋出,進而避免同步問題。​