天天看點

雲計算時代應用設計十二要素

雲計算時代應用設計十二要素

什麼樣的軟體才是可用性和可維護性好的軟體?

什麼樣的代碼才能避免後續開發的上手障礙?

什麼樣的實行才能穩定的運作在分布式的環境中?

heroku (一家 paas 服務提供者,2010 年被 salesforce 收購)平台創始人 adam winggins,對我們在雲時代的應用設計設計和實作提出了十二種風格,對設計高效的應用,特别是在 paas 和 saas都有很好的參考意義。

一、代碼

每個子系統都用一個代碼庫管理,使用版本管理,實作獨立的部署。

二、依賴

顯式聲明依賴,通過環境來嚴格隔離不同依賴。

三、配置

在環境變量中儲存配置資訊,而避免放在源碼或配置檔案中。

四、後端服務

後端服務作為可挂載資源來使用,這樣系統跟外部依賴盡量松耦合。

五、生命周期

區分不同聲明周期的運作環境,包括建立、釋出、部署,各個步驟要互相隔離。

六、程序

以一個或多個無狀态的程序來運作應用,即盡量實作無狀态,不要在程序中儲存資料。

七、端口

通過端口綁定來對外提供服務。

八、并發

通過程序控制來擴充,即以多程序模型進行擴充。

九、可丢棄性

快速啟動,優雅關閉,并盡量魯棒(随時 kill,随時 crash)。

十、開發與生産環境的差異性

盡量保持從開發到生産部署環境的相似性。

十一、日志

将日志當作事件流來進行統一的管理和維護(使用 logstash 等工具)。

十二、管理

将管理作為一次性的系統服務來使用。

本文作者:yeasy

來源:51cto

繼續閱讀