12-Factor App 的相关概念

12-Factor App是一套为构建 SaaS 应⽤提供行之有效的⽅法论,也适⽤于任意语言和后端服务的开发的应⽤程序 

中文文档:https://12factor.net/zh_cn/

基准代码(Codebase)

可使用SVN或Git等版本控制系统加以管理,有且仅有一套基准代码与应用保持⼀一对应的关系。

基准代码有且仅有一套,但可以同时存在多份部署。可以结合不同的配置文件,部署到生产环境、测试环境、开发环境等,或给不同用户搭建集群。

依赖(Dependencies)

应⽤程序必须显式声明依赖关系,可使用maven等工具管理依赖,确切地声明所有groupId 、artifactId,plugins等依赖项。

实际使用时为了防止出现同名类的引用冲突,建议使用扫描工具扫描一下是否存在同名类,是否需要处理。

也可针对应用或定期扫描,或在系统运行时管理依赖,即进行服务治理。

配置(Config)

在环境中活其他存储配置,可在外置于配置文件或使用配置中心维护配置信息。

后端服务(Backing services)

把后端服务当作附加资源,例如数据库或reids缓存,无关存储在本地还是远程。

构建,发布,运⾏(Build, release, run)

每⼀个发布版本必须对应⼀个唯一的发布 ID,每次尽量使用完整的包进行发布,保留发布过程。

12-Facfor 应用严格区分构建、发布、运⾏三个步骤。严格分离构建和运⾏,可使用jenkins自动化构建和打包。部署⼯具通常都提供了发布管理工具。

进程(Processes)

进程必须⽆状态且无共享,以⼀个或多个⽆状态进程运⾏应⽤。方便扩展或重启。

当资源比较昂贵的时候,也可适当存入一些状态,如用户的缓存大对象信息,可以使用用户ID做一些一致性hash的处理,使得用户的请求落到指定的服务器上面。

任何需要持久化的数据都要存储在后端数据库等服务内。

端口绑定(Port Binding)

通过端口绑定提供服务 。tomcat、nginx等容器可用于绑定端口。

并发(Concurrency)

通过进程模型进行扩展。要求程序可以部署在多机房多台机器上共同运行。

易处理(Disposability)

快速启动和优雅终止可最大化健壮性。保证系统高可用。

进程应当追求最小启动时间,⼀旦接收终止信号会优雅的终⽌,在面对突然死亡时保持健壮。

开发环境与线上环境等价(Dev / Prod parity)

灰度、集成测试、上线时。尽可能的保持开发,预发布,线上环境相同。

持续部署必须缩⼩本地与线上差异,后端服务保持开发与线上等价,反对在不同环境间使⽤不同的后端服务。

日志(Logs)

把⽇志当作事件流,如ELK等工具进行日志抓取等,把重要信息尽可能结构化展现和分析。

管理进程(Admin processes)

后台管理任务当作⼀次性进程运⾏。方便运营人员操作。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值