雲計算時代應用設計十二要素
什麼樣的軟體才是可用性和可維護性好的軟體?
什麼樣的代碼才能避免後續開發的上手障礙?
什麼樣的實行才能穩定的運作在分布式的環境中?
heroku (一家 paas 服務提供者,2010 年被 salesforce 收購)平台創始人 adam winggins,對我們在雲時代的應用設計設計和實作提出了十二種風格,對設計高效的應用,特别是在 paas 和 saas都有很好的參考意義。
一、代碼
每個子系統都用一個代碼庫管理,使用版本管理,實作獨立的部署。
二、依賴
顯式聲明依賴,通過環境來嚴格隔離不同依賴。
三、配置
在環境變量中儲存配置資訊,而避免放在源碼或配置檔案中。
四、後端服務
後端服務作為可挂載資源來使用,這樣系統跟外部依賴盡量松耦合。
五、生命周期
區分不同聲明周期的運作環境,包括建立、釋出、部署,各個步驟要互相隔離。
六、程序
以一個或多個無狀态的程序來運作應用,即盡量實作無狀态,不要在程序中儲存資料。
七、端口
通過端口綁定來對外提供服務。
八、并發
通過程序控制來擴充,即以多程序模型進行擴充。
九、可丢棄性
快速啟動,優雅關閉,并盡量魯棒(随時 kill,随時 crash)。
十、開發與生産環境的差異性
盡量保持從開發到生産部署環境的相似性。
十一、日志
将日志當作事件流來進行統一的管理和維護(使用 logstash 等工具)。
十二、管理
将管理作為一次性的系統服務來使用。
本文作者:yeasy
來源:51cto