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

介绍

现在软件通常交付为一个服务:可以叫web应用,或软件即服务(SaaS)。12因子是一种构建SaaS应用的方法:

  • 用声明式的格式设置自动化,最小化新开发者加入项目的时间和成本。
  • 与下层操作系统有清晰的契约,其与执行环境间提供最大的可移植性。
  • 适合在现代云平台部署,消除对服务器与系统管理的需求。
  • 减少开发与生产的区别,为最大的敏捷性支持持续部署。
  • 可以在无任何明显对工具,架构或开发实践上的变更的情况下进行伸缩。

12因子方法可以应用在任何语言编写的应用,可以应用在任意后端服务(数据库,队列,内存缓存等)。

背景

这篇文档的内容在我们使用Heroku平台的工作中直接使用在上百个应用的开发与部署上,间接影响了数千应用的研发,运维,伸缩。

文档综合了我们所有的经验与对大量的软件即服务应用的观测。它综合了以下三点:理想的应用开发实践,关注应用的动态增长,开发者在应用代码库上的动态协作, 避免了软件被削弱的成本。

我们的目标是提出我们在现在应用开发中看到的系统性问题,提供一种讨论问题的共享词汇,提供一组广泛对此种问题使用的概念解决方案。这个格式是由Martin Fowler的书《企业应用架构模式》与《重构》激发的灵感。

I 代码库

一份被版本控制追踪的代码,多份部署

12因子应用会一直放在版本控制中,如Git,Mercurial或者Subversion。 一份版本追踪数据库即为众所周知的代码库(code repository),经常简写为code repo或者repo。

代码库是一个单独的仓库(在中央式的版本控制系统如Subversion),或一些共享一个根路径提交的仓库集(在一个去中心化的版本控制系统如Git)。

一份代码库映射到多次部署。

代码库与应用总是一一对应的:

  • 如果有多个代码库,那不是一个应用 -- 那是一个分布式系统。每个分布式系统中的组件是一个应用,每一个都可以独立遵守12因子。
  • 多个应用共享相同的代码是违反12因子的。这里解决的方案是将代码用库的形式共享,这样可以在依赖管理中被引入。

每个代码库只有一个应用,但每个应用会有多份部署。一个部署是应用的一个运行实例。一般会有一个生产环境,一个或多个开发环境。 并且,每个开发都有一份应用运行在他们的本地环境中,每一份这样的应用也都是一份部署。

代码库在所有的部署中都是相同的,不过每个部署都会有不同的版本生效。比如,一个开发有一些提交还没有部署到开发环境,开发环境还有一些提交没有部署到生产环境。但他们都共享同一份代码库,所以他们可以标识为是同一个应用的不同部署。

12因子应用文档(一)相关推荐

  1. android 开放平台开发,OPPO开放平台上线Android 12适配文档

    OPPO 近日悄然在开放平台添加了 Android 12 适配文档,该文档可帮助 App 开发者更好地兼容 Android 12. 虽然文档内还没有任何内容,但这标志着 OPPO 已经开始了 Andr ...

  2. android制作开放平台,OPPO 开放平台上线 Android 12 适配文档

    IT之家 5 月 17 日消息OPPO 近日悄然在开放平台添加了 Android 12 适配文档,该文档可帮助 App 开发者更好地兼容 Android 12. 虽然文档内还没有任何内容,但这标志着 ...

  3. mondrian olap 示例_Mondrian数据库olap应用文档

    Mondrian数据库olap应用文档 一 创建数据仓库 1)DW名称 主要是在相应数据库中建立相应的数据仓库,事实表,维表结构 2)选择数据源 主要是应用weblogic 控制台,建立数据库连接池. ...

  4. PostgreSQL 12 中文文档

    PostgreSQL 12是最新稳定版,目前最新bate版是13,英文文档:PostgreSQL 12 最新稳定版本(12)中文文档:http://www.postgres.cn/docs/12/

  5. 计算机基础知识应用文档,计算机基础知识与应用

    计算机基础知识与应用Tag内容描述: 1.计算机应用基础知识计算机应用基础知识点计算机应用基础知识话题计算机应用基础知识计算机基础知识电子商务单击第一章计算机基础知识1.1946年2月15日世界上第一 ...

  6. 12 快件文档“更新终止”从作者“xxx”收到

    报错截图: 业务操作:事务码LT01手工创建转储单TO过程中报错 报错原因:转储单的编码范围 当前编号 小于 系统后台表实际数据中的 最大值 导致系统逻辑出错. 使用事务码ST22查询报错信息 这个上 ...

  7. 计算机大赛应用文档制作,PPT制作应用大赛策划书

    PPT制作应用大赛策划书 一.比赛背景 当今,信息技术在人们日常生活中的作用越来越大.计算机已应用在通信.监控.科研.视频会议.网络教育.传媒.医疗.旅游.电子商务等领域,它改变了人们的生活,离我们的 ...

  8. macOS Catalina(10.15)如何访问iPhone(Ipad)的应用文档文件

    昨天周末我把iPhone升级到iOS13,体验一把黑暗模式.作为开发人员迟早要把XCode升级到11.1,升级它就要升级Mac.由于我的电脑只有128G,升级时提示硬盘空间不足.又遇到大容量U盘找不到 ...

  9. 计算机大赛应用文档制作,小学电脑制作比赛活动方案

    以下为<小学电脑制作比赛活动方案>的无排版文字预览,完整格式请下载 下载前请仔细阅读文字预览以及下方图片预览.图片预览是什么样的,下载的文档就是什么样的. 郑营完小电脑制作比赛活动方案 为 ...

最新文章

  1. 分享一个C#使用AT指令控制语音猫的例子
  2. 高性能IO之Reactor模式
  3. 3.3v转5v开关电源芯片LM2731
  4. 开发者们看过来,8ms开发工具平台给大家送福利了!只要你来,肯定有你感兴趣的,3.6-3.10日,只要在8ms平台上创建项目,就有机会白嫖彩屏开发板哦
  5. OpenCASCADE绘制测试线束:性能评估命令之VDrawSphere
  6. 初中英语多词性单词怎么办_高考英语阅读理解生僻单词太多怎么办?十大招数帮到你...
  7. tokudb 分形树_分形树Fractal tree介绍——具体如何结合TokuDB还没有太懂,先记住其和LSM都是一样的适合写密集...
  8. JSK-11 移除数组中的重复元素【入门】
  9. windows 搭建和配置 hadoop + 踩过的坑
  10. Python淘宝爬虫
  11. 服务器win2003系统升级,Windows server 2003 升级 到2008 R2
  12. ctf web 的一些writeup jwt以及黑客游戏
  13. 渗透测试技巧总结更新篇2
  14. 如何监控Redis性能指标
  15. python中chr函数的用法_【转】Python内置函数(10)——chr
  16. 链表就地逆置Java_单链表就地逆置(Java版)
  17. 基于CentOS 7配置Nginx反向代理
  18. 复数运算 P1103
  19. linux根目录下各文件夹的作用
  20. 21届应届生面试总结

热门文章

  1. mac安装EasyConnect、mac使用EasyConnect,mac安装EasyConnectPlugin失败
  2. 欧姆龙cp1h与三菱变频器modbus rtu通讯程序
  3. 东方博宜OJ题目全解(1006~1010)
  4. 50行Python代码绘制数据大屏,这个可视化框架真的太神了
  5. linux 磁盘分区备份,关于GPT磁盘的分区表备份
  6. php fpm在哪配置,php-fpm配置详解
  7. 阿里云--IOT Studio初学
  8. 白嫖服务器+傻瓜式部署 将你的新年、表白代码发布到网站 让ta仪式感拉满(10元成本购买域名)
  9. 【行研报告】金控数字化研究报告—附下载链接
  10. JavaScript笔记之二:DOM-BOM