前言
今天看“如何实现现代应用的快速落地”公开课,提到十二要素,之前文章也提到多次,这里统一汇总下:
十二要素
如今,软件通常会作为一种服务来交付,它们被称为网络应用程序,或“软件即服务”(SaaS)。“十二要素应用程序”(12-Factor App)为构建如下的SaaS应用提供了方法论:
- 使用标准化流程自动配置,从而使新的开发者花费最少的学习成本加入这个项目;
- 和操作系统之间尽可能的划清界限,在各个系统中提供最大的可移植性;
- 适合部署在现代的云计算平台,从而在服务器和系统管理方面节省资源;
- 将开发环境和生产环境的差异降至最低,并使用持续交付实施敏捷开发;
- 可以在工具、架构和开发流程不发生明显变化的前提下实现扩展;
这套理论适用于任意语言和后端服务(数据库、消息队列、缓存等)开发的应用程序。
1. 基准代码
一份基准代码,多份部署基准代码和应用之间总是保持一一对应的关系:
一旦有多个基准代码,就不能称为一个应用,而是一个分布式系统。分布式系统中的每一个组件都是一个应用,每一个应用可以分别使用12-Factor进行开发。
多个应用共享一份基准代码是有悖于12-Factor原则的。解决方案是将共享的代码拆分为独立的类库,然后使用依赖管理策略去加载它们。尽管每个应用只对应一份基准代码,但可以同时存在多份部署。所有部署的基准代码相同,但每份部署可以使用其不同的版本。
2. 依赖
显式声明依赖关系<