### 以一個或多個無狀態進程運行應用
運行環境中,應用程序通常是以一個和多個?*進程*?運行的。
最簡單的場景中,代碼是一個獨立的腳本,運行環境是開發人員自己的筆記本電腦,進程由一條命令行(例如`python my_script.py`)。另外一個極端情況是,復雜的應用可能會使用很多?[進程類型](http://12factor.net/zh_cn/concurrency)?,也就是零個或多個進程實例。
**12-Factor 應用的進程必須無狀態且?[無共享](http://en.wikipedia.org/wiki/Shared_nothing_architecture)?。**?任何需要持久化的數據都要存儲在?[后端服務](http://12factor.net/zh_cn/backing-services)?內,比如數據庫。
內存區域或磁盤空間可以作為進程在做某種事務型操作時的緩存,例如下載一個很大的文件,對其操作并將結果寫入數據庫的過程。12-Factor應用根本不用考慮這些緩存的內容是不是可以保留給之后的請求來使用,這是因為應用啟動了多種類型的進程,將來的請求多半會由其他進程來服務。即使在只有一個進程的情形下,先前保存的數據(內存或文件系統中)也會因為重啟(如代碼部署、配置更改、或運行環境將進程調度至另一個物理區域執行)而丟失。
源文件打包工具([Jammit](http://documentcloud.github.com/jammit/),?[django-compressor](http://django-compressor.readthedocs.org/)) 使用文件系統來緩存編譯過的源文件。12-Factor 應用更傾向于在?[構建步驟](http://12factor.net/zh_cn/build-release-run)做此動作——正如?[Rails資源管道](http://guides.rubyonrails.org/asset_pipeline.html)?,而不是在運行階段。
一些互聯網系統依賴于 “[粘性 session](http://en.wikipedia.org/wiki/Load_balancing_%28computing%29#Persistence)”, 這是指將用戶 session 中的數據緩存至某進程的內存中,并將同一用戶的后續請求路由到同一個進程。粘性 session 是 12-Factor 極力反對的。Session 中的數據應該保存在諸如?[Memcached](http://memcached.org/)?或?[Redis](http://redis.io/)?這樣的帶有過期時間的緩存中。