X

曜彤.手记

随手写写,关于互联网技术、产品与创业

The Twelve-Factor App


如今,软件通常会作为一种服务来交付,它们被称为网络应用程序,或软件即服务(SaaS)。12-Factor 为构建如下的 SaaS 应用提供了方法论。这套理论适用于任意语言和后端服务(数据库. 消息队列. 缓存等)开发的应用程序。

一. 概述总结:

  1. 使用标准化流程自动配置,降低加入成本;
  2. 保证最大的系统可移植性
  3. 部署云计算平台,节省资源;
  4. 将开发环境和生产环境的差异降至最低,基于 CI/CD 实施敏捷开发;
  5. 保证在最低成改动本下实现高扩展性

二. 12个因素:

  1. 基准代码

使用版本控制系统管理代码,每个应用只对应一份基准代码,但可以同时进行多份部署(本地,线上)。

  1. 依赖

应用需要的所有依赖一定需要通过 依赖清单 ,确切完整的声明出来。

  1. 配置

配置文件在各部署环境间存在大幅差异,但配置项却应该完全一致。推荐将应用的配置存储于 环境变量 中。

  1. 后端服务

应用与后端服务应该保持“松耦合”,后端服务(数据库,消息队列等)可以 随时替换,而不用修改应用本身的代码。

  1. 构建,发布,运行

按照特定的流程进行发布,整个发布的流程不可逆。发布版本号不可逆。

  1. 进程

以一个或多个无状态进程运行应用,不可使用粘性 session(将用户 session 中的数据缓存至某进程的内存中,并将同一用户的后续请求路由到同一个进程)。需要持久化的数据放到后端服务中。

  1. 端口绑定

应用完全自我加载 而不依赖于任何网络服务器就可以创建一个面向网络的服务。互联网应用 通过端口绑定来提供服务 ,并监听发送至该端口的请求。

  1. 并发

进程结构基于 Unix 守护进程模型,进程间无共享,水平分区。意味着添加并发会变得简单而稳妥。这些进程的类型以及每个类型中进程的数量就被称作 进程构成

  1. 易处理

应用应该是可以被 快速启动和停止 的。同时在面对突然死亡时 保持健壮

  1. 开发环境与线上环境等价

应用想要做到持续部署(CD)就必须 缩小本地与线上环境差异,应用的开发人员应该反对在不同环境间使用不同的后端服务。

  1. 日志

将日志输出 当作事件流来处理,而不是直接存入文档。比如将日志输入到日志索引及分析系统等。

  1. 管理进程

后台管理任务(定时脚本等)当作一次性进程运行,使用同“常驻进程”一样的环境和配置。



这是文章底线,下面是评论
  暂无评论,欢迎勾搭 :)