开发、部署应用程序APP的【12要素原则】你顺便了解一下?

news2025/1/18 10:09:30

本文由 大侠(AhcaoZhu)原创,转载请声明。
链接: https://blog.csdn.net/Ahcao2008

Alt

开发、部署应用程序APP的【12要素原则】你顺便了解一下?

  • ☘️摘要
  • ☘️介绍
  • ☘️背景
  • ☘️谁应该阅读这份文件?
  • ☘️十二要素原则
    • 🌿I. 代码库 `Codebase`
    • 🌿II. 依赖关系 `Dependencies`
    • 🌿III. 配置 `Config`
    • 🌿IV. 后台服务 `Backing services`
    • 🌿V. 构建、发布、运行 `Build, release, run`
    • 🌿VI.流程 `Processes`
    • 🌿VII. 端口绑定 `Port binding`
    • 🌿VIII. 并发性 `Concurrency`
    • 🌿IX. 可处置性 `Disposability`
    • 🌿X. 开发/生产奇偶校验 `Dev/prod parity`
    • 🌿XI. 日志 `Logs`
    • 🌿XII. 管理流程 `Admin processes`
  • ☘️注释

☘️摘要

  • 全文介绍开发、部署应用程序APP的【12要素原则】。
  • 它来源于下列网站https://12factor.net/。
  • 作者本人既不了解这是个什么东东,也不知其作用,只是觉得好有道理的样子😀😂😊
  • 作者从来没有承认在进行所谓创作,我不生产博文,我只是网络界的搬运工。
  • 作者风格转变,属于此类文章偶发。不喜飘过,千万勿因看惯了作者垃圾文章、偶尔一篇精华有些不习惯而取关。【原创:AhcaoZhu大侠】

☘️介绍

在现代,软件通常作为服务交付:称为web应用程序或软件即服务。十二要素应用程序是一种构建软件即服务应用程序的方法,它:

  • 使用声明式格式的设置自动化,以最大限度地减少新开发人员加入项目的时间和成本;
  • 与底层操作系统有一个清晰的契约,在执行环境之间提供最大的可移植性; 适合部署在现代云平台上,避免了服务器和系统管理的需要;
  • 最小化开发和生产之间的分歧,实现持续部署以获得最大的敏捷性; 并且可以在不需要对工具、架构或开发实践进行重大更改的情况下进行扩展。
  • 十二因素方法可以应用于任何编程语言编写的应用程序,以及使用任何后台服务组合(数据库、队列、内存缓存等)的应用程序。

☘️背景

  • 本文档1的贡献者直接参与了数百个应用程序的开发和部署,并通过我们在Heroku平台上的工作间接见证了数十万个应用程序的开发、运营和扩展。

  • 本文综合了我们对各种各样的软件即服务应用程序的经验和观察。它是应用开发理想实践的三角测量法,特别关注应用随着时间的推移而有机增长的动态,开发人员在应用代码库上的合作动态,以及避免软件侵蚀的成本。

  • 我们的动机是提高人们对现代应用程序开发中出现的一些系统性问题的认识,为讨论这些问题提供共享词汇表,并为这些问题提供一组广泛的概念性解决方案以及相关术语。该格式的灵感来自Martin Fowler的《企业应用程序架构模式与重构》2一书。

☘️谁应该阅读这份文件?

  • 构建作为服务运行的应用程序的任何开发人员。
  • 部署或管理此类应用程序的运维工程师。

☘️十二要素原则

🌿I. 代码库 Codebase

一个代码库在修订控制中被跟踪,许多部署

One codebase tracked in revision control, many deploys

🌿II. 依赖关系 Dependencies

显式声明和隔离依赖项
Explicitly declare and isolate dependencies

🌿III. 配置 Config

将配置存储在环境中

Store config in the environment

🌿IV. 后台服务 Backing services

将后台服务视为附加资源

Treat backing services as attached resources

🌿V. 构建、发布、运行 Build, release, run

严格分离构建和运行阶段

Strictly separate build and run stages

🌿VI.流程 Processes

将应用程序作为一个或多个无状态进程执行

Execute the app as one or more stateless processes

🌿VII. 端口绑定 Port binding

通过端口绑定导出服务

Export services via port binding

🌿VIII. 并发性 Concurrency

通过流程模型向外扩展

Scale out via the process model

🌿IX. 可处置性 Disposability

最大限度的鲁棒性与快速启动和优雅的关闭

Maximize robustness with fast startup and graceful shutdown

🌿X. 开发/生产奇偶校验 Dev/prod parity

尽可能保持开发、准备和生产相类似

Keep development, staging, and production as similar as possible

🌿XI. 日志 Logs

将日志视为事件流

Treat logs as event streams

🌿XII. 管理流程 Admin processes

将 admin/management 任务作为一次性进程运行

Run admin/management tasks as one-off processes

☘️注释


  1. 指原文,参见: 网站https://12factor.net/ ↩︎

  2. 《企业应用程序架构模式与重构》Patterns of Enterprise Application Architecture and Refactoring,by Martin Fowler ↩︎

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

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

相关文章

2.进程与线程

2.进程与线程 2.1 进程与线程 进程: 程序由指令和数据组成,指令要执行,数据要读写,就需要将指令加载到cpu,数据加载到内存,进程就是用来加载指令、管理IO、管理内存的当一个程序被执行,从磁盘…

大数据环境准备(二) - VMware 虚拟机系统设置

VMware 虚拟机系统设置 1.对三台虚拟机完成主机名、固定IP、SSH免密登录等系统设置 1)配置固定IP地址 开启node1,修改主机名为node1 #切换root用户 su - #修改主机名 hostnamectl set-hostname node1关闭node1终端,重新打开; 同理开启nod…

Java页面布局

Java页面常用的布局主要有五种:FlowLayout、BorderLayout、GridLayout、CardLayout和NULL 1、FlowLayout 称为“流布局”,将组件按从左到右顺序、流动的安排到容器中,直到占满上方的空间时、则向下移动一行,Flow Layout是面板的…

13.多线程

1.实现多线程 1.1简单了解多线程【理解】 是指从软件或者硬件上实现多个线程并发执行的技术。 具有多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程,提升性能。 1.2并发和并行【理解】 并行:在同一时刻,有多个指令在多个CPU上…

Packet Tracer - 配置 IPv6 ACL

Packet Tracer - 配置 IPv6 ACL 拓扑图 地址分配表 设备 接口 IPv6 地址/前缀 默认网关 服务器 3 NIC 2001:DB8:1:30::30/64 FE80::30 目标 第 1 部分:配置、应用并验证一个 IPv6 ACL 第 2 部分:配置、应用并验证第二个 IPv6 ACL 第 1 部分…

node.js+vue鲜花销售网站

后台模块设计: ①用户管理功能。管理员在后台首页点击用户管理就会进入用户列表页面,系统会将数据库中的用户信息以列表的形式显示出来,管理员可以在这个页面进行用户的更新和删除操作,系统可以将最新更新的信息重新写入用户表中并…

Chrome浏览器更新字体看不清的最终解决方案

阿酷TONY / 2023-5-6 / 长沙 / 原创 / 实测解决 Chrome更新至版本Chrome 109.0.5414.120 字体看不清 浏览器症状:Chrome更新至版本Chrome 109.0.5414.120 字体看不清;会很细,在设置中选择自定义的字体,仍无法解决;…

当因果推理遇上时间序列,会碰撞出怎样的火花?

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 近年来因果推理和时间序列已经成为了数据科学领域备受瞩目的研究方向。因果推理可以帮助我们识别变量之间的因果关系,时间序列分析则可以便于我们理解变量随时间变化的规律。这两个方向都可以为我们…

javaScript---设计模式-封装与对象

目录 1、封装对象时的设计模式 2、基本结构与应用示例 2.1 工厂模式 2.2 建造者模式 2.3 单例模式 封装的目的:①定义变量不会污染外部;②能作为一个模块调用;③遵循开闭原则。 好的封装(不可见、留接口):①…

Cacti 前台命令注入漏洞

文章目录 文档说明漏洞描述影响版本漏洞原理命令执行简单分析客户端ip伪造分析 漏洞复现下载vulhub启动环境配置攻击 复现总结修复方案原创申明 文档说明 本文作者:SwBack 创作时间:2023/4/8 0:12 知乎:https://www.zhihu.com/people/back-88-87 CSDN:https://blog.csdn.net/q…

solidity--语言基础

solidity源文件结构 // SPDX-License-Identifier: MIT pragma solidity ^0.5.2; pragma abicoder v1; import "filename"; 注释 智能合约组成 状态变量 // SPDX-License-Identifier: GPL-3.0 pragma solidity >0.4.0 <0.9.0;contract SimpleStorage {uint stor…

SD卡打不开是怎么回事?SD卡打不开里面数据怎样恢复

SD卡已经成为了移动设备和数码相机中受欢迎的存储选项之一。但是使用过程中难免会遇到一些问题&#xff0c;例如SD卡突然打不开了&#xff0c;并且无法访问其中的数据。这种情况常常让人感到烦恼和无助。但是不要紧张&#xff0c;下面我们将介绍SD卡打不开里面数据怎样恢复的方…

Yuzuki Lizard V851S开发板 –编译 OPENCV 4.5.4

1.主要参考教程地址&#xff0c;实际操作结合多个教程。 https://blog.csdn.net/Flag_ing/article/details/109508374 2.放从OPENCV RELEASE 下载的解压出来的文件&#xff0c;里面还要放对应版本的contribute 解压文件 /root/opencv-4.5.4/root/opencv-4.5.4/build6在这里要…

深入理解Java虚拟机——内存分配与回收策略

1.前言 在读这篇博客之前&#xff0c;你需要了解分代收集理论中&#xff0c;收集器应该将Java堆划分出不同的区域**&#xff0c;**然后将回收对象依据其年龄&#xff08;年龄即对象熬过垃圾收集过程的次数&#xff09;分配到不同的区域之中存储。 例如appel式回收&#xff0c…

SSM整合详细教学(上)

SSM整合详细教学&#xff08;上&#xff09; 一、SSM整合1. SSM整合配置1.1 SSM整合流程1.2 SSM整合配置1.2.1 创建工程&#xff0c;添加依赖和插件1.2.2 Spring整合Mybatis1.2.3 Spring整合SpringMVC 2. 功能模块开发2.1 数据层开发(BookDao)2.2 业务层开发(BookService/BookS…

java注解,一篇文章就够了

开篇一张图 一、定义 注解是一种标记&#xff0c;使类或接口附加额外信息&#xff0c;帮助编译器和 JVM 完成一些特定功能。 Annotation(注解)也被称为元数据(Metadata)是JDK1.5及以后版本引入的&#xff0c;用于修饰包、类、接口、字段、方法参数、局部变量等。 如&#xf…

iOS与Android应用开发的对比:如何选择最佳开发平台?

第一章&#xff1a;引言 在移动应用开发领域&#xff0c;iOS和Android是最为流行的操作系统。选择最佳的开发平台可以使开发人员更有效地开发和发布应用程序。本文将分析iOS和Android应用开发的优缺点&#xff0c;并提供一些有关如何选择最佳开发平台的建议。 第二章&#xf…

【Git基础】常用git命令(四)

文章目录 1. 处理突发事件1.1 暂存修改1.2 git stash的一些命令 2. 指定不需要git管理的文件2.1 指定不需要git管理的文件2.2 .gitignore的规则 3. 如何解决项目之间的依赖3.1 如何使用git处理项目之间的依赖3.2 submodule的使用方式3.3 如何clone submodule3.4 submodule的陷阱…

小白如何做好项目管理?看这里

做好项目管理不是一件容易的事儿&#xff0c;只有掌握了正确的技巧&#xff0c;才能事半功倍地完成项目。 下面就按照项目管理的流程来讲一讲如何做好项目管理。 项目管理是指运用系统的理论方法&#xff0c;在有限的条件和资源下&#xff0c;对项目从开始到结束的全流程进行计…

电子会议桌牌系统——基站版

一、产品特点 低功耗&#xff0c;常规使用3-5年电池寿命 支持空中唤醒&#xff0c;刷新快速&#xff0c;几秒钟内看到结果 点阵电子纸屏幕&#xff0c;视角接近180 基于Web的应用界面&#xff0c;支持跨平台操作 安装简单&#xff0c;快速布置 电池供电不需要布线 双面显…