端口綁定(Port binding)
Export services via port binding
app通過綁定在特定端口上來提供服務(wù)更胖,app是完全自包含的悬槽,這要求app不需要靠注入任何環(huán)境中的特定的web容器來提供服務(wù)匿沛。并發(fā)(Concurrency)
Scale out via the process model
12 factor app通過進(jìn)程模型來擴(kuò)展港柜,且支持跨物理機(jī)的進(jìn)程擴(kuò)展痊项。而對(duì)進(jìn)程的管理使用操作系統(tǒng)自身的管理工具动壤,而不需要自己有守護(hù)進(jìn)程萝喘。易處理(Disposability)
Maximize robustness with fast startup and graceful shutdown
最大化健壯性的方法是要能快速啟動(dòng)并優(yōu)雅終止。優(yōu)雅終止需要能停止接受新的請(qǐng)求并把當(dāng)前請(qǐng)求處理完閉琼懊。對(duì)于消息處理隊(duì)列阁簸,還要能把當(dāng)前任務(wù)退回隊(duì)列。開發(fā)環(huán)境和線上環(huán)境等價(jià)(Dev/prod parity)
Keep development, staging, and production as similar as possible
要盡可能保持開發(fā)哼丈,預(yù)發(fā)布和產(chǎn)品的環(huán)境相似性启妹。傳統(tǒng)上這些差異包括時(shí)間差異,人員差異醉旦,工具差異饶米。12 factor apps要求這些差異盡量小。具體說來车胡,就是開發(fā)到上產(chǎn)品的時(shí)間間隔盡量小檬输,開發(fā)和運(yùn)維人員盡量相同,開發(fā)環(huán)境和產(chǎn)品環(huán)境所使用的軟件盡量要一致匈棘。
11.日志(log)
Treat logs as event streams
日志是事件流丧慈。12 factor app本身并不關(guān)心如何存儲(chǔ)記錄日志,而是把日志輸出到標(biāo)準(zhǔn)輸出主卫,由程序的運(yùn)行環(huán)境來管理這些輸出逃默。
12.進(jìn)程管理(admin processes)
Run admin/management tasks as one-off processes
后臺(tái)管理任務(wù)當(dāng)作一次性的進(jìn)程來運(yùn)行。