【譯】十二因子應用(四)

祝坤榮發表於2019-01-19

IV 後端服務

將後端服務視為可拔插的資源

後端服務是一種在應用在網路上正常執行時消費的任意一種服務。包括資料庫(如MySQL或CouchDB),訊息/佇列系統(如RabbitMQ或Beantalkd),發郵件的SMTP服務(如Postfix),快取系統(如Memcached)。

資料庫這種後端服務傳統上與應用執行時部署一起唄同樣的系統管理員管理。除了這些本地管理的服務,應用也會有一些被第三方管理的服務。如SMTP服務(Postmark),度量資料收集服務(如New Relic或Loggly),二進位制儲存服務(如Amazon S3),甚至API存取服務(Twitter,GoogleMap,或Last.fm)。

12因子應用的程式碼對待這些本地和第三方服務來說沒有差別。應用端,都是可拔插的資源,通過URL或其他配置好的定位/鑑權服務。一份12因子應用的部署可以不經過任何程式碼修改將本地MySQL資料庫替換成第三方的服務(如Amazon RDS)。同樣的,本地SMTP服務可以被替換成第三方SMTP服務(如Postmark)而不需要改動程式碼。在這兩個case,只有處理資源的配置檔案需要變動。

每一個後端服務服務都是一個資源。如MySQL是一個資源,兩個MySQL資料庫(在應用層做sharding)就是兩個獨立的資源。12因子應用將這些資料庫看做可拔插資源,在部署時是鬆耦合的。

資源可以按意願在部署時進行拔插。如,如果應用的資料庫由於硬體問題出現故障,應用管理員可以快速從一個最近的備份中進行恢復。當前的生產庫可以被解除安裝,新資料庫被掛載上 – 不需要程式碼變動。

相關文章