12-Factor应用方法论

12-Factor应用方法论是由Heroku的创始人Adam Wiggins提出的,旨在指导开发者构建应用以适应现代云平台,实现高的可移植性、伸缩性和可维护性。这个方法论特别适合设计和开发软件即服务(SaaS)应用。

以下是12-Factor应用方法论的详细说明:

  1. 基准代码 (Codebase) 一份基准代码,多份部署。一个应用的代码应该被版本控制,且任何部署都应该从这里获取代码。

  2. 依赖 (Dependencies) 明确声明并隔离依赖。一个应用不应该依赖系统级的包。所有的依赖都应通过依赖声明(如Maven或npm)进行管理。

  3. 配置 (Config) 在环境中存储配置。配置信息(如数据库连接串)应该从代码中提取出来,并存放在环境变量中。

  4. 后端服务 (Backing Services) 将后端服务视作附加资源。后端服务如数据库、消息队列等,应该可以随时被连接或断开,而不影响应用的运行。

  5. 构建、发布、运行 (Build, Release, Run) 严格分离构建和运行。构建阶段产生一个可执行的“发布”(包括代码编译成二进制以及引入配置),之后在运行阶段启动这个发布。

  6. 进程 (Processes) 以一个或多个无状态的进程运行应用。这些进程应该尽量无状态和无共享,并通过后端服务暂存任何需要的持久化数据。

  7. 端口绑定 (Port Binding) 通过端口绑定提供服务。应用应该自己提供服务对外的HTTP服务,而不依赖于外部的web服务器。

  8. 并发 (Concurrency) 通过进程模型进行扩展。任何类型的工作都应该能够映射到无状态进程上,从而提升并发性和伸缩性。

  9. 易处理 (Disposability) 极速启动和优雅终止增进健壮性。应用的进程应该能够迅速启动及优雅停止,从而实现更加快速的部署和弹性的伸缩性。

  10. 开发环境与线上环境等价 (Dev/Prod Parity) 保持开发、测试、生产环境尽可能相同。这减少了在开发至生产的推移中产生问题的可能性。

  11. 日志 (Logs) 将日志当作事件流。应用不应该对日志的管理负责,日志可以被路由、分析和存储由系统环境决定。

  12. 管理进程 (Admin Processes) 管理型进程也需要放在应用的版本控制中。管理型任务如数据库迁移,应该纳入代码库并以与常规应用进程相同的方式来执行。

12-Factor应用方法论侧重于软件开发的最佳实践,确保了应用在任意云平台上都能有良好的可迁移性和减小与底层硬件的耦合度。它强调了环境无关性、声明式自动化和最小化依赖性。这个方法论适用于任何使用服务化架构的应用,且特别符合容器化和微服务架构的特点。

通常根据不同环境变更profiles.active的最佳实践是使用环境变量或命令行参数,这使得不需要改变代码就可以轻松地部署到任何环境中。这种方式也符合12-Factor应用方法论中的配置建议,即通过环境来管理配置变化。

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

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

相关文章

【数据结构】AVL 树

文章目录 1. AVL 树的概念2. AVL 树节点的定义3. AVL 树的插入4. AVL 树的旋转5. AVL 树的验证6. AVL 树的删除7. AVL 树的性能 前面对 map / multimap / set / multiset 进行了简单的介绍【C】map & set,在其文档介绍中发现,这几个容器有个共同点是…

汽车电子行业知识:什么是数字钥匙?

文章目录 1. 什么是数字钥匙?2. 数字钥匙有哪些类型?3. 汽车数字钥匙4. 数字钥匙包含哪些技术5. 汽车数字钥匙的发展趋势 1. 什么是数字钥匙? 数字钥匙通常指的是一种安全工具,它使用数字代码或密码来授权对特定系统或服务的访问。…

【御控物联】JavaScript JSON结构转换(13):对象To数组——多层属性重组

文章目录 一、JSON结构转换是什么?二、案例之《JSON对象 To JSON数组》三、代码实现四、在线转换工具五、技术资料 一、JSON结构转换是什么? JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换,生成新的JS…

Samba服务安装以及小米摄像头同步

Samba服务安装以及小米摄像头同步 安装Samba添加samba用户创建共享文件夹配置文件修改启动并配置开机启动防火墙以及端口修改小米摄像头同步常见问题1.找不到nas存储设备2.同步只能创建文件夹,不同步数据 安装Samba sudo yum install samba添加samba用户 #如果要添…

用 ipset 和 iptables 保护 sip 端口

这里假设 sip 端口是 5060 和 5080 cat china.sh,and ./china.sh #!/bin/bash apt install -y ipset ipset destroy china ipset create china hash:net maxelem 65536 ipset flush china wget --no-check-certificate -O- http://ftp.apnic.net/apnic/stats/apnic…

火鸟门户拖拽专题可视拖拽面板快速创建网站,无需懂代码,形式灵活,功能强大

可视化拖拉面板简介 可视化拖拽面板是一种消耗代码即可创建网站的工具。它提供了一个分析的界面,用户可以通过拖拽预先设计的组件来构建页面。这种方式可以大大降低网站开发的效率,让不懂代码的人也能轻松创建自己的网站。 可视化拖拉面板的优势 可视…

「51媒体网」媒体邀约现场采访的优势有哪些?

传媒如春雨,润物细无声的,大家好,我是51媒体网胡老师。 媒体邀约现场采访的优势主要表现在以下几个方面: 实时报道与传播:现场采访能够让媒体了解活动的真实性,此外,到场报道媒体可以实时迅速将…

文献学习-25-综合学习和适应性教学:用于病理性胶质瘤分级的多模态知识蒸馏

Comprehensive learning and adaptive teaching: Distilling multi-modal knowledge for pathological glioma grading Authors: Xiaohan Xing , Meilu Zhu , Zhen Chen , Yixuan Yuan Source: Medical Image Analysis 91 (2024) 102990 Key words: 知识蒸馏、模态缺失、胶质瘤…

交易所上币:区块链项目上线交易所流程

一、了解交易所/申请上币 在区块链项目上线交易所之前,首先需要对交易所进行充分的了解,包括交易所的基本信息、交易规则、飞BTC5186上币标准等。还需要了解交易所的申请上币流程,以便为后续的操作做好准备。 1.1 选择合适的交易所 在众多的交易所中 飞(BTC5186),如何选择一个…

【C++】 vector <string> 的超详细解析!!!

目录 一、前言 二、 vector <string> 的个人理解和总结 三、vector <string> 的初始化 四、vector <string> 的输入 \ 输出 五、vector <string> 中的注意事项 六、常考面试题 七、共勉 一、前言 在【C】中&#xff0c;vector 是一个动态数组…

xshell7连接ubuntu18.04

&#x1f3a1;导航小助手&#x1f3a1; 1.查看ubuntu IP2.开启openssh-server3.静态IP设置4.Xshell连接 1.查看ubuntu IP 输入下面命令查看IP ifconfig -a可以看到网卡是ens33&#xff0c;IP为192.168.3.180。 2.开启openssh-server 1、执行下句&#xff0c;下载SSH服务 s…

学习JavaScript Bom(文档对象模型)

一.Bom 是什么&#xff1f; DOM&#xff08;文档对象模型&#xff09;和 BOM&#xff08;浏览器对象模型&#xff09;&#xff08;关于浏览器操作的API&#xff09;是 JavaScript 编程中常用的两种操作对象模型。DOM 操作 HTML 文档&#xff0c;而 BOM 则负责处理浏览器窗口和工…

物联网学习2、MQTT 发布/订阅模式介绍

MQTT 发布/订阅模式 发布订阅模式&#xff08;Publish-Subscribe Pattern&#xff09;是一种消息传递模式&#xff0c;它将发送消息的客户端&#xff08;发布者&#xff09;与接收消息的客户端&#xff08;订阅者&#xff09;解耦&#xff0c;使得两者不需要建立直接的联系也不…

Mac - Keychron K3 Pro 功能键改键 -via 改键配置 For Mac

前言 Keychron K3 Pro键盘连接Mac使用&#xff0c;顶部一排功能键&#xff0c;默认是Mac的多媒体功能键。F1&#xff5e;F12功能键&#xff0c;需要按&#xff1a;Fn F1&#xff5e;F12。 而在我的日常工作中&#xff0c;常用的是F1&#xff5e;F12&#xff0c;期望F1~F12功…

PHP函数、文件包含简介

一、函数 函数本质就是一段代码 在函数的代码中&#xff0c;通常是用于完成一个需要重复执行的操作 同故宫使用函数&#xff0c;可以将哪些需要重复执行的操作&#xff0c;定义成一个函数名&#xff0c;当需要执行这些操纵的时候&#xff0c;直接调用这个函数名就可以 通过函数…

GWO-CNN-BiLSTM多输入回归预测|灰狼群算法优化的卷积-双向长短期神经网络|Matlab

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、算法介绍&#xff1a; 四、完整程序下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平台编译&…

超声波清洗机能洗哪些东西?适合洗眼镜超声波清洗机排行榜

在现代生活的忙碌节奏中&#xff0c;寻找高效而又便捷的清洁解决方案成为了众多家庭的追求。超声波清洗机&#xff0c;作为一种革新的清洁设备&#xff0c;以其深入细微、温和而高效的清洗方式&#xff0c;赢得了广泛的关注和好评。它能够操作简便地清洁各种物品&#xff0c;从…

《编程菜鸟学 Python 数据分析》让工作自动化起来!

随着我国企业数字化和信息化的深入&#xff0c;企业对办公自动化的效率和灵活性要求越来越高。Python作为一种开源的软件应用开发方式&#xff0c;通过提供强大丰富的库文件包&#xff0c;极大地简化了应用开发过程&#xff0c;降低了技术门槛。Python开发有哪些优势、挑战以及…

【A-006】基于SSH的新闻发布系统(含论文)

【A-006】基于SSH的新闻发布系统&#xff08;含论文&#xff09; 开发环境&#xff1a; Jdk7(8)Tomcat7(8)MySQLIntelliJ IDEA(Eclipse) 数据库&#xff1a; MySQL 技术&#xff1a; SpringStruts2HiberanteJSPJquery 适用于&#xff1a; 课程设计&#xff0c;毕业设计&…

fpga_hdmi

HDMI简介: 高清晰度多媒体端接口&#xff0c;通常用来连接一些音视频设备&#xff0c;进行高质量的传输&#xff0c;能够同时传输音频信号和视频信号。而且在传输速度上具有较大的优势。 通过hdmi接口进行数据传输时&#xff0c;不需要切换模块&#xff0c;或者提前设置转换。…