现如今软件会作为一种服务来交付,被称为网络应用服务或软件即服务(Saas)。12-Factor为构建SaaS应用提供了方法论:
· 使用标准化流程自动配置,从而使新开发者花费最少的学习成本加入此项目。
· 和操作系统之间尽可能的划清界限,在各个系统中提供最大的可移植性。
· 适合部署在现代的云计算平台,从而在服务器和系统管理方面节省资源。
· 将开发环境和生产环境的差异降至最低,并使用持续交付实施敏捷开发。
· 可以在工具、架构和开发流程不发生明显变化的前提下实现扩展。
12-Factor应用程序是一组用于创建应用程序的最佳实践,包括实施,部署,监视和管理。 这是一种定义服务应遵循的12-Factor的方法,以便为云环境构建可移植,灵活的应用程序。 提供软件即服务(SaaS)的Web应用程序通常被视为12-Factor应用程序的常见示例。它已经成为衡量组件的关键标准,以确定它们是否真正为云原生部署做好了准备。
12-Factor应用程序可以用任何编程语言实现,并使用任何支持服务,如数据库,消息传递和缓存。12-Factor应用程序具有开发个人微服务的理想特性。12个因素确保应用程序可以利用云基础架构来提供灵活性和可伸缩性优势。它通常用于为构建为微服务的应用程序定义适当的特性。使用微服务方法构建的应用程序通常需要与微服务架构之外的数据源集成。
==================12-Factor =====================
1. Codebase(代码库/基准代码):在版本控制中一份基准代码,多份部署。
2. Dependencies(依赖):显式声明和隔离依赖
3. Config(配置):在环境中存储配置
4. Backing services(支持服务):将支持服务视为附加资源
5. Build, release, run(构建-发布-运行):严格分离构建和运行阶段
6. Processes(进程):将应用程序作为一个或多个无状态进程执行
7. Port binding(端口绑定):通过端口绑定钩子/导出服务
8. Concurrency(并发):通过进程/流程模型扩展
9. Disposability(易处理性):通过快速启动和正常关闭最大限度地提高稳健性
10. Dev/prod parity(开发和生产等价):尽可能的保持开发,预发布,线上环境相同
11.Logs(日志):将日志视为事件流
==Admin processes(管理进程):将管理/管理任务作为一次性进程运行
下面进一步介绍每个Factor:
A. Codebase代码库/基准代码
为应用程序中的所有代码使用一个代码库,该代码存储在修订(revision c