> 原文出處:http://12factor.net/zh_cn/
如今,軟件通常會作為一種服務來交付,它們被稱為網絡應用程序,或軟件即服務(SaaS)。12-Factor 為構建如下的 SaaS 應用提供了方法論:
* 使用**標準化**流程自動配置,從而使新的開發者花費最少的學習成本加入這個項目。
* 和操作系統之間盡可能的**劃清界限**,在各個系統中提供**最大的可移植性**。
* 適合**部署**在現代的**云計算平臺**,從而在服務器和系統管理方面節省資源。
* 將開發環境和生產環境的**差異降至最低**,并使用**持續交付**實施敏捷開發。
* 可以在工具、架構和開發流程不發生明顯變化的前提下實現**擴展**。
這套理論適用于任意語言和后端服務(數據庫、消息隊列、緩存等)開發的應用程序。
## 背景
本文的貢獻者者參與過數以百計的應用程序的開發和部署,并通過?[Heroku](http://www.heroku.com/)?平臺間接見證了數十萬應用程序的開發,運作以及擴展的過程。
本文綜合了我們關于 SaaS 應用幾乎所有的經驗和智慧,是開發此類應用的理想實踐標準,并特別關注于應用程序如何保持良性成長,開發者之間如何進行有效的代碼協作,以及如何?[避免軟件污染](http://blog.heroku.com/archives/2011/6/28/the_new_heroku_4_erosion_resistance_explicit_contracts/)?。
我們的初衷是分享在現代軟件開發過程中發現的一些系統性問題,并加深對這些問題的認識。我們提供了討論這些問題時所需的共享詞匯,同時使用相關術語給出一套針對這些問題的廣義解決方案。本文格式的靈感來自于 Martin Fowler 的書籍:*[Patterns of Enterprise Application Architecture](http://books.google.com/books/about/Patterns_of_enterprise_application_archi.html?id=FyWZt5DdvFkC)*?,?*[Refactoring](http://books.google.com/books/about/Refactoring.html?id=1MsETFPD3I0C)*?。
## 讀者應該是哪些人
任何 SaaS 應用的開發人員。部署和管理此類應用的運維工程師。