当前位置: 首页 > news >正文

12 要素 12 Factor

I. 基准代码

一份基准代码,多份部署

一个应用,一个基准代码git仓库,多个环境版本部署(prod,staging,develop)

II. 依赖

显式声明依赖关系

docker的dockerfile,php的composer.json,python的requirements.txt等依赖关系声明

III. 配置

在环境中存储配置

每个环境都有对应的env文件配置

IV. 后端服务

把后端服务当作附加资源

数据库(MySQL,CouchDB),消息/队列系统(RabbitMQ,Beanstalkd),SMTP 邮件发送服务(Postfix),以及缓存系统(Memcached)

V. 构建,发布,运行

严格分离构建和运行

  • 构建阶段  是指将代码仓库转化为可执行包的过程。构建时会使用指定版本的代码,获取和打包 依赖项,编译成二进制文件和资源文件
  • 发布阶段  配置 会将构建的结果和当前部署所需 配置 相结合,并能够立刻在运行环境中投入使用 
  • 运行阶段 (或者说“运行时”)是指针对选定的发布版本,在执行环境中启动一系列应用程序 进程



VI. 进程

以一个或多个无状态进程运行应用

12-Factor 应用的进程必须无状态且 无共享 。 任何需要持久化的数据都要存储在 后端服务 内,比如数据库

VII. 端口绑定

通过端口绑定提供服务

通过端口绑定来提供服务 ,并监听发送至该端口的请求

VIII. 并发

通过进程模型进行扩展

将不同的工作分配给不同的 进程类型 ,比如web任务,和常驻内存的worker,开发者可以根据类型进行构建扩容

IX. 易处理

快速启动和优雅终止可最大化健壮性

12-Factor 进程 无状态且 无共享,可以瞬间开启或停止。

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

尽可能的保持开发,预发布,线上环境相同

12-Factor 应用的开发人员应该反对在不同环境间使用不同的后端服务,本地环境,测试环境,预发布环境与线上环境应尽可能的接近

XI. 日志

把日志当作事件流

通过统一的日志收集系统,日志进入大数据处理系统,索引系统,时序数据库进行存储并最后归档

XII. 管理进程

后台管理任务当作一次性进程运行

执行一些管理或维护应用的一次性任务,一次性管理进程应该和正常的 常驻进程 使用同样的环境,如项目中的Command命令

可参考:

The Twelve-Factor App (简体中文)

12 Factor App in Action (12 要素应用实战) - 知乎

http://www.lryc.cn/news/242593.html

相关文章:

  • 十大排序之冒泡排序与快速排序(详解)
  • 【SpringBoot篇】阿里云OSS—存储文件的利器
  • Leetcode—58.最后一个单词的长度【简单】
  • Apach Ozone部署
  • 【nlp】3.2 Transformer论文复现:1. 输入部分(文本嵌入层和位置编码器)
  • 自动化部署 / 扩容openGauss —— Ansible for openGauss
  • Go 实现网络代理
  • Redis报错:JedisConnectionException: Could not get a resource from the pool
  • 【广州华锐互动】Web3D云展编辑器能为展览行业带来哪些便利?
  • Vue项目实战之一----实现分类弹框效果
  • Vue解析器
  • Spring Cloud 版本升级遇坑记:OpenFeignClient与Gateway的恩怨情仇
  • 面试:Docker相关问题
  • 移动端浏览器 jquery 获取 pdf blob文件流 预览pdf
  • Redis并发问题解决方案
  • 读取两个文件夹里不同名的文件,处理映射不对应的文件
  • SpringCloud原理-OpenFeign篇(四、请求原理)
  • 什么是工业物联网(IOT)?这样的IOT平台你需要吗?——青创智通
  • MTK Pump Express 快速充电原理分析
  • leetcode刷题记录——1991. 找到数组的中间位置
  • 跨域攻击分析和防御(上)
  • GEE:梯度提升树(Gradient Boosting Tree)分类教程(样本制作、特征添加、训练、精度、参数优化、贡献度、统计面积)
  • ubuntu22.04 arrch64版在线安装redis
  • 篮桥云课-摆玩具
  • 【python】python进阶知识点
  • LeetCode算法题解(动态规划)|LeetCode322. 零钱兑换、LeetCode279. 完全平方数
  • Python Web开发基础知识篇
  • 企业计算机服务器中了360勒索病毒怎么办,360勒索病毒解密文件恢复
  • LeetCode无重复字符的最长字符串的Java实现
  • opencv-图像平滑