简介
如今,软件通常会作为一种服务来交付,它们被称为网络应用程序,或软件即服务(SaaS)。12-Factor(12 原则,或 12 要素)为构建如下的 SaaS 应用提供了方法论:
- 使用标准化流程自动配置,从而使新的开发者花费最少的学习成本加入这个项目
- 和操作系统之间尽可能的划清界限,在各个系统中提供最大的可移植性
- 适合部署在现代的云计算平台,从而在服务器和系统管理方面节省资源
- 可以在工具、架构和开发流程不发生明显变化的前提下实现扩展
这套理论适用于任意语言和后端服务(数据库、消息队列、缓存等)开发的应用程序。
背景
12-Factor,是由 Heroku 创始人 Adam Wiggins 首次提出并开源,并由众多经验丰富的开发者共同完善,这综合了他们关于 SaaS 应用几乎所有的经验和智慧,是开发此类应用的理想实践标准,并特别关注于应用程序如何保持良性成长,开发者之间如何进行有效的代码协作,以及如何避免软件污染(software erosion)
面向群体
- 任何 SaaS 应用的开发人员
- 部署和管理此类应用的运维工程师
软件污染 - software erosion
- 几个星期前自己写的代码,现在已经看不懂了
- 写这份代码的人离职了
- 遗留系统,要加新功能
- 操作系统更新了
- 内存不够用了,必须迁移
- 等等
软件侵蚀是"软件随时间的缓慢恶化,最终导致它变得有故障[或]不可用",而且重要的是,"软件实际上并没有衰败,而是缺乏更新,到它所在的不断变化的环境
公司拥有大量现有软件系统,这些系统不能幸免于软件侵蚀和老化,因为随着时间的推移,维护不受控制
降低或消除对抗软件侵蚀的成本对于小型应用或原生应用以及大型生产应用都极具价值
参考: