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因子应用将这些数据库看做可拔插资源,在部署时是松耦合的。

资源可以按意愿在部署时进行拔插。如,如果应用的数据库由于硬件问题出现故障,应用管理员可以快速从一个最近的备份中进行恢复。当前的生产库可以被卸载,新数据库被挂载上 - 不需要代码变动。


祝坤荣
1k 声望1.5k 粉丝

科幻影迷,书虫,硬核玩家,译者