12 factor

使用标准化流程自动配置,从而使新的开发者花费最少的学习成本加入这个项目。 和操作系统之间尽可能的划清界限,在各个系统中提供最大的可移植性。 适合部署在现代的云计算平台,从而在服务器和系统管理方面节省资源。 将开发环境和生产环境的差异降至最低,并使用持续交付实施敏捷开发。 可以在工具、架构和开发流程不发生明显变化的前提下实现扩展。
Jul
02
12 factor admin-processes

12 factor admin-processes

XII. 管理进程后台管理任务当作一次性进程运行进程构成(process formation)是指用来处理应用的常规业务(比如处理 web 请求)的一组进程。与此不同,开发人员经常希望执行一些管理或维护应用的一次性任务,例如: 运行数据移植(Django 中的 manage.py migrate, Rails 中的
2 min read
Jul
02
12 factor logs

12 factor logs

XI. 日志把日志当作事件流日志 使得应用程序运行的动作变得透明。在基于服务器的环境中,日志通常被写在硬盘的一个文件里,但这只是一种输出格式。 日志应该是 事件流 的汇总,将所有运行中进程和后端服务的输出流按照时间顺序收集起来。尽管在回溯问题时可能需要看很多行,日志最原始的格式确实是一个事件一行。日志没有确定开始和结束,但随着应用在运行会持续的增加。 12-factor应用本身从不考虑存储自己的输出流。 不应该试图去写或者管理日志文件。相反,每一个运行的进程都会直接的标准输出(stdout)事件流。
2 min read
Jul
02
12 factor dev-prod-parity

12 factor dev-prod-parity

X. 开发环境与线上环境等价尽可能的保持开发,预发布,线上环境相同从以往经验来看,开发环境(即开发人员的本地 部署)和线上环境(外部用户访问的真实部署)之间存在着很多差异。这些差异表现在以下三个方面: 时间差异: 开发人员正在编写的代码可能需要几天,几周,甚至几个月才会上线。人员差异: 开发人员编写代码,运维人员部署代码。工具差异: 开发人员或许使用
3 min read
Jul
02
12 factor disposability

12 factor disposability

IX. 易处理快速启动和优雅终止可最大化健壮性12-Factor 应用的 进程 是 易处理(disposable)的,意思是说它们可以瞬间开启或停止。 这有利于快速、弹性的伸缩应用,迅速部署变化的 代码 或 配置 ,稳健的部署应用。 进程应当追求 最小启动时间 。 理想状态下,进程从敲下命令到真正启动并等待请求的时间应该只需很短的时间。
2 min read
Jul
02
12 factor concurrency

12 factor concurrency

VIII. 并发通过进程模型进行扩展任何计算机程序,一旦启动,就会生成一个或多个进程。互联网应用采用多种进程运行方式。例如,PHP 进程作为 Apache 的子进程存在,随请求按需启动。Java 进程则采取了相反的方式,在程序启动之初 JVM 就提供了一个超级进程储备了大量的系统资源(CPU 和内存),并通过多线程实现内部的并发管理。上述
2 min read
Jul
02
12 factor port-binding

12 factor port-binding

VII. 端口绑定通过端口绑定(Port binding)来提供服务互联网应用有时会运行于服务器的容器之中。例如 PHP 经常作为 Apache HTTPD 的一个模块来运行,正如 Java 运行于 Tomcat 。 12-Factor 应用完全自我加载 而不依赖于任何网络服务器就可以创建一个面向网络的服务。互联网应用 通过端口绑定来提供服务
2 min read
Jul
01
12 factor processes

12 factor processes

VI. 进程以一个或多个无状态进程运行应用运行环境中,应用程序通常是以一个和多个 进程 运行的。 最简单的场景中,代码是一个独立的脚本,运行环境是开发人员自己的笔记本电脑,进程由一条命令行(例如python my_script.py)。另外一个极端情况是,复杂的应用可能会使用很多 进程类型 ,也就是零个或多个进程实例。 12-Factor 应用的进程必须无状态且 无共享
2 min read
Jul
01
12 factor build-release-run

12 factor build-release-run

V. 构建,发布,运行严格分离构建和运行基准代码 转化为一份部署(非开发环境)需要以下三个阶段: 构建阶段 是指将代码仓库转化为可执行包的过程。构建时会使用指定版本的代码,获取和打包 依赖项,编译成二进制文件和资源文件。发布阶段 会将构建的结果和当前部署所需 配置 相结合,并能够立刻在运行环境中投入使用。运行阶段 (或者说“
2 min read
Jul
01
12 factor backing-services

12 factor backing-services

IV. 后端服务把后端服务(backing services)当作附加资源后端服务是指程序运行所需要的通过网络调用的各种服务,如数据库(MySQL,CouchDB),消息/队列系统(RabbitMQ,Beanstalkd),SMTP 邮件发送服务(Postfix),以及缓存系统(Memcached)。 类似数据库的后端服务,通常由部署应用程序的系统管理员一起管理。除了本地服务之外,
2 min read
Jul
01
12 factor config

12 factor config

III. 配置在环境中存储配置通常,应用的 配置 在不同 部署 (预发布、生产环境、开发环境等等)间会有很大差异。这其中包括: 数据库,Memcached,以及其他 后端服务 的配置第三方服务的证书,如 Amazon S3、Twitter
3 min read