12-factors

12-factors

简介

如今,软件通常会作为一种服务来交付,它们被称为网络应用程序,或软件即服务(SaaS)。12-Factor 为构建如下的 SaaS 应用提供了方法论:

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

这套理论适用于任意语言和后端服务(数据库、消息队列、缓存等)开发的应用程序。

背景

本文的贡献者参与过数以百计的应用程序的开发和部署,并通过 Heroku 平台间接见证了数十万应用程序的开发,运作以及扩展的过程。

本文综合了我们关于 SaaS 应用几乎所有的经验和智慧,是开发此类应用的理想实践标准,并特别关注于应用程序如何保持良性成长,开发者之间如何进行有效的代码协作,以及如何 避免软件污染 。

我们的初衷是分享在现代软件开发过程中发现的一些系统性问题,并加深对这些问题的认识。我们提供了讨论这些问题时所需的共享词汇,同时使用相关术语给出一套针对这些问题的广义解决方案。本文格式的灵感来自于 Martin Fowler 的书籍: Patterns of Enterprise Application Architecture , Refactoring 。

读者应该是哪些人?

任何 SaaS 应用的开发人员。部署和管理此类应用的运维工程师。

12-factors

I. 基准代码

一份基准代码,多份部署

II. 依赖

显式声明依赖关系

III. 配置

在环境中存储配置

IV. 后端服务

把后端服务当作附加资源

V. 构建,发布,运行

严格分离构建和运行

VI. 进程

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

VII. 端口绑定

通过端口绑定提供服务

VIII. 并发

通过进程模型进行扩展

IX. 易处理

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

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

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

XI. 日志

把日志当作事件流

XII. 管理进程

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/907053.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

huggingface 模型权重文件

文件类型文件名示例用途模型权重 pytorch_model.bin 或 model.safetensors 包含模型训练后的参数权重配置文件 config.json 包含模型架构和超参数配置词汇表文件 vocab.json, vocab.txt, tokenizer.json 分词器所需的词…

vscode设置单击选中带连字符的单词

1、打开 VSCode 设置打开设置搜索 wordSeparators,找到 Editor: Word Separators 选项。2、移除 - 字符默认值类似:`~!@#$%^&*()-=+[{]}\\|;:",.<>/?删除 -(连字符),使其变成:`~!@#$%^&*()=…

P4147 玉蟾宫(悬线法)

P4147 玉蟾宫#include <bits/stdc++.h> using namespace std;const int maxn = 1e3 + 10;int n,m; int a[maxn][maxn] = {{0,0}}; int l[maxn][maxn],r[maxn][maxn],h[maxn][maxn]; int ans;int main(){ios::syn…

全局平衡二叉树

发现自己在大力 DS 这个领域有一些欠缺,所以来补一下。 所谓全局平衡二叉树(GBST)就是 LCT 的静态版本。 我们对树先重剖,然后把每条重链上的点拎出来建一个 BST,满足这个 BST 的中序遍历就是这个重链从上到下遍历…

Transactional注解的方法里 spring怎么知道我用的是哪个jdbctemplate实例

> 这是一个非常好的问题,它触及了 Spring 框架中声明式事务管理(`@Transactional`)和底层资源管理(`JdbcTemplate`)如何协同工作的核心。 简单直接的回答是:**Spring 并不知道,也不关心你的方法内部使用的是…

根据参数查询

根据参数查询<!-- 根据参数查询--><select id="listByMap" resultMap="ResultMapManage" parameterType="map">select <include refid="Manage_field"/>…

关于非侵入式脑机接口面向C端一个应用想法

目前,脑机接口行业发展如火如荼,但应用仍高度集中在医疗领域,比如运动功能康复等。这类方向不仅技术相对成熟,也更易获得商业回报——毕竟无论是医院还是患者,都更愿意为“恢复健康”买单。然而,若希望脑机接口能…

Blelloch并行扫描算法

本文介绍了一个可以用于并行化串行累计操作的Blelloch算法,可以通过用空间换时间+并行计算的方法,来降低特定计算的时间复杂度。这里我们给出了算法原理的大致介绍,以及基于Numpy的算法代码实现。技术背景 由于现代…

mysql win10

mysql win10https://cloud.tencent.com/developer/article/2392929

「Java EE开发指南」如何用MyEclipse开发Java EE企业应用程序?(二)

「Java EE开发指南」如何用MyEclipse开发Java EE企业应用程序?(二)本教程介绍了Java EE企业应用程序开发入门所需的基本特性、概念和技术。您将学习如何:创建企业应用程序(EAR)项目 添加和删除模块 打包、部署和…

字符串转 python 对象 eval

s = [ { label: "苹果", value: "origin_event_data", icon: "icon-a", color: "#409EFF", bgColor: "#ECF5FF", borderColor:…

牛客刷题-Day1

动态规划1:线性dp、背包问题,区间 https://ac.nowcoder.com/acm/contest/24213?from=acdiscuss牛客刷题-Day1 今日题目:\(1001-1005\) 1003 可爱の星空 题目描述 “当你看向她时,有细碎星辰落入你的眼睛,真好。”…

TENGJUN防水TYPE-C 16PIN连接器技术解析:从结构设计到认证标准的全面解读 - 实践

TENGJUN防水TYPE-C 16PIN连接器技术解析:从结构设计到认证标准的全面解读 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font…

第三届人工智能与自动化控制国际学术会议(AIAC 2025)

第三届人工智能与自动化控制国际学术会议(AIAC 2025) 2025 3rd International Conference on Artificial Intelligence and Automation Control 第三届人工智能与自动化控制国际学术会议(AIAC 2025)将于2025年10月…

图纸安全外发平台全解析

内容概要 图纸安全外发平台是一个专为解决企业图纸外发难题而设计的系统。简单来说,图纸安全外发平台是什么?它就是一个集数据加密、访问控制于一体的在线平台,旨在保障设计图纸在传输过程中的安全性。其中,像Ftra…

webshell流量 - voasem

菜刀、蚁剑、冰蝎、哥斯拉是常见的webshell管理工具。 在攻防演练中,了解其常见webshell管理工具的流量特征对防守方来说十分重要。常见的webshell也在不断发展以绕过安全设备waf的检测,其流量特征也在不断演变,我们…

MMoE学习笔记:利用门控专家网络高效建模多任务关系

MMoE学习笔记:利用门控专家网络高效建模多任务关系MMoE学习笔记:利用门控专家网络高效建模多任务关系 引言 多任务学习(Multi-Task Learning, MTL)已成为大规模推荐系统、计算广告等工业应用领域的标准技术范式。它…

DE23-Lite的串口回环测试

DE23-Lite的串口回环测试DE23-Lite开发板提供了一个UART接口,用户能够通过主机与Agilex 3 FPGA进行串口通信。该接口通过USB Blaster III电路中的FT2232H芯片实现。将USB线连接到DE23-Lite板的Type-C接口和主机之间,…

基于pyspark的双十一美妆数据分析及可视化 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Linux下显卡驱动简单测试

Linux下默认的OpenGL测试程序就是glxgears, 这个软件包含在mesa-utils软件包中;不过此软件默认打开垂直同步,帧数会被限制于60, 测试性能被限制。 所以, 在运行时如下:> vblank_mode =0 glxgears [return] 即可…