可靠的企业战略,数字化转型,智能化转型和企业架构智库

【软件架构】12因子应用

介绍


在现代,软件通常以服务的形式交付:称为web应用程序,或软件即服务。十二要素应用程序是一种构建软件即服务应用程序的方法,它包括:

使用声明式格式设置自动化,以减少新开发人员加入项目的时间和成本;
与底层操作系统有一个干净的契约,在执行环境之间提供最大的可移植性;
适合部署在现代云平台上,无需服务器和系统管理;
最小化开发和生产之间的差异,支持持续部署以获得最大的敏捷性;
并且可以在不需要对工具、架构或开发实践进行重大更改的情况下进行扩展。
12因素方法可以应用于任何编程语言编写的应用程序,以及使用任何支持服务组合(数据库、队列、内存缓存等)的应用程序。

背景


本文的贡献者直接参与了数百个应用程序的开发和部署,并通过我们在Heroku平台上的工作间接见证了数十万个应用程序的开发、运行和扩展。

本文综合了我们对各种软件即服务应用程序的经验和观察。它是对应用程序开发的理想实践的三角分析,特别关注应用程序随时间的有机增长的动态,开发应用程序代码库的开发人员之间的协作动态,以及避免软件侵蚀的成本。

我们的动机是提高对一些我们在现代应用程序开发中看到的系统问题的认识,为讨论这些问题提供一个共享的词汇表,并为这些问题提供一组广泛的概念性解决方案和相关术语。该格式的灵感来自Martin Fowler的《企业应用程序体系结构和重构的模式》一书。

谁应该阅读这份文件?


任何构建作为服务运行的应用程序的开发人员。部署或管理此类应用程序的Ops工程师。

12个因素

因素1 代码库。
一个代码库在修订控制中被跟踪,许多被部署


因素2。依赖关系
显式地声明和隔离依赖项


因素3。配置
在环境中存储配置


因素4、支持服务
将支持服务视为附加的资源


因素5.构建、发布、运行
严格区分构建和运行阶段


因素6。流程
将应用程序作为一个或多个无状态进程执行


因素7。端口绑定
通过端口绑定导出服务


因素8。并发性
通过流程模型向外扩展


因素9。一次性塑料
最大限度的鲁棒性与快速启动和优雅关机


因素10 Dev /刺激平价
保持开发、准备和生产尽可能相似


因素11。日志
将日志视为事件流


因素十二。管理流程
将行政/管理任务作为一次性流程运行

 

原文:https://12factor.net/

本文:

讨论:请加入知识星球或者微信圈子[首席架构师圈]