DevOps在项目交付场景下的应用

news2024/11/25 22:26:46

DevOps介绍

DevOps一词是由development和operation两个单词组合而来,代表着研发和交付运营的一体化。DevOps在2009年就被提出,但在学术界和工业界还没有一个广泛认可的定义,一些有代表性的总结,比如John Willis从文化、自动化、度量和分享的四个特征来对DevOps的含义进行描述,Lwakatare等提出可以从协作、自动化、度量、监控四个维度来对DevOps来进行描述。DevOps的很多思想与精益、敏捷是一致的,是这两种思想的一种延伸,其中敏捷主要围绕产品研发环节,通过以人为本、开放协作、持续改进来实现价值交付,而DevOps不仅关注产品研发,将交付运维也纳入迭代优化的闭环,打破研发和交付运维之间的隔阂,覆盖从需求研发到业务上线再到运维的整个端到端的价值链。

一些研究显示了DevOps的有益效果。国外AWS、Google等公司通过应用DevOps实现分钟级的需求交付能力;取决于不同的场景,应用DevOps之后可以降低10%~30%的部署周期,节省20%的成本。DevOps在国内的应用也在持续增长,从某个调查问卷的统计分析来看,应用了DevOps的企业其效能更高。

DevOps运动发源于既拥有研发部门又拥有运维部门的企业,目前的实践也大多围绕在这个场景中,像JezHumble在其书中描述的持续交付,适用于互联网等自研自营的模式,但其他场景无法直接应用。例如,如果软件采购自供应商,软件研发和交付运维之间不仅仅存在“部门墙”,而且通过合同来建立的协作边界,中间涉及责任主体的切换。跨国软件交付除了少数互联网企业之外,大部分是软件供应商模式,并且还增加了时间和空间上的距离,因此,探索这种模式下的DevOps实践具有现实意义。

企业中,由于业务场景的不同,不同团队对于代码分支模型的应用也会有所不同,通常来说,会由对代码管控的强/弱程度、应用发布的高低频率为主要考虑因素来决定团队的代码分支模型。

场景1:强管控、低发布

该类型的开发常见于大型项目或者传统瀑布模式。比如,在众多大型企业中仍在执行的按季发布的方式。这一类型的场景,对于源代码的提交、源代码合并往往需要执行严格的人工Code Review,从而会有明显的多分支特征。基于该类场景,可采用Git flow的分支模型,有利于实现对源代码的强管控。

场景2:强管控、高发布

该类型的开发常见于直接面向客户的互联网项目,比如互联网金融、移动App等,由于业务的重要性,需要进行源代码更新的强管控,同时,又由于业务具有互联网属性,所以,需要经常性的发布。该场景下可选用Gitlab flow,既可以满足高频发布,又可以实现针对任一历史版本的修复。

场景3:弱管控、高发布

该类型的开发也常见于直接面向客户的互联网项目,和场景2的业务所不同的是,该场景下的业务的重要性较弱,比如一些娱乐性的产品。

该场景的弱管控是指减少人工code review,取而代之的是采用源代码扫描工具进行检测,以工具检测自动化在代码提交前完成相关质量检测。基于该前提,可采用Github flow、Gitlab flow、TBD等分支模型,尤其是在团队成熟度高的情况下,可优先考虑TBD模型,将发布频率提升至极限。

场景4:弱管控、低发布

该类场景为理论场景,如现实工作中存在该场景,可采用Git flow模型。 

总结

在选择分支模型中,除了业务要求对代码管控的强弱以及业务的发布频率外,往往还会遇到业务需求是否要发布、团队成熟度、研发过程自动化工具支撑程度等问题影响。

随着DevOps在企业中的普及,以产品化为思路的持续交付模型在各企业内先后建立,借助DevOps平台自动化的能力,企业可将提交检测、合并检测等工作常态化,用自动化的代码检测方式替代人工Code review,降低人工成本的同时,提升交付效率。

同时,企业可根据自身的业务特征基于上述代码分支模型,规约企业特有的分支模型,其核心思想是在满足业务、管理、效率、质量、安全的多方诉求。

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

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

相关文章

策略编制解决方案

策略编制 NetIQ 使您能够将 AD 策略扩展到整个 IT 生态系统,并集中管理和监控策略与配置更改。 一、优点 提高 IT 管理员效率 集中管理策略控制。 借助可见性降低风险 借助实时监控减少漏洞。 审计和合规性报告 采取措施以满足安全条例和策略的合规要求。 二、…

应用部署初探:微服务的3大部署模式

在之前的文章中,我们已经充分了解了应用部署的4种常见模式(金丝雀部署、蓝绿部署、滚动部署及影子部署)。随着云原生技术逐步成熟,企业追求更为灵活和可扩展的系统,微服务架构大行其道。 微服务固然有诸多优点&…

计算组合数Cnk即从n个不同数中选出k个不同数共有多少种方法math.comb(n,k)

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 计算组合数Cnk 即从n个不同数中选出k个不同数共有多少种方法 math.comb(n,k) 以下python代码输出结果是? import math print("【执行】print(math.comb(3,1))") print(math.comb(…

一文了解kafka消息队列,实现kafka的生产者(Producer)和消费者(Consumer)的代码,消息的持久化和消息的同步发送和异步发送

文章目录1. kafka的介绍1.2 Kafka适合的应用场景1.2 Kafka的四个核心API2. 代码实现kafka的生产者和消费者2.1 引入加入jar包2.2 生产者代码2.3 消费者代码2.4 介绍kafka生产者和消费者模式3. 消息持久化4. 消息的同步和异步发送5. 参考文档1. kafka的介绍 最近在学习kafka相关…

Ubuntu20.04+cuda11.2+cudnn8.1+Anaconda3安装tensorflow-GPU环境,亲测可用

(1)安装nvidia显卡驱动注意Ubuntu20.04和Ubuntu16.04版本的安装方法不同,安装驱动前一定要更新软件列表和安装必要软件、依赖(必须)sudo apt-get update #更新软件列表sudo apt-get install gsudo apt-get install gccsudo apt-get install make查看GP…

4.5.1 泛型

文章目录1.概述2.泛型的具体表现形式3.泛型的作用4.泛型示例5.练习:泛型测试一6.练习:泛型测试二1.概述 泛型不是指一种具体的类型,而是说,这里有个类型需要设置,那么具体设置成什么类型,得看具体的使用; …

RabbitMQ-持久化

一、介绍如何保证RabbitMQ服务停掉以后生产者发送过来的消息不丢失。默认情况下RabbitMQ退出或由于某种原因崩溃时,他将忽视队列和消息,除非告知它不要这样做。确保消息不丢失需要做两件事情:将队列和消息都标记为持久化二、队列持久化再声明…

(1分钟速通面试) SLAM中的最小二乘问题

最小二乘拟合问题 求解超定方程首先写这篇博客之前说一个背景,这个最小二乘拟合问题是我在去年面试实习的时候被问到的,然后当时是非常的尴尬,没有回答上来里面的问题。Hhh 所以这篇博客来进行一个补充学习一下下。感觉这个最小二乘问题还是比…

根据报告20%的白领在一年内做过副业,你有做副业吗?

现在大部分人收入单一,收入都是来源于本职工作,当没有了工作就没有了收入的来源,而生活压力又很大,各种开支,各种消费。所以很多人想要增加收入来源,增加被动收入,同时通过副业提升自己的价值和…

LeetCode·每日一题·1223.掷骰子模拟·记忆化搜索

作者:小迅链接:https://leetcode.cn/problems/dice-roll-simulation/solutions/2103471/ji-yi-hua-sou-suo-zhu-shi-chao-ji-xiang-xlfcs/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权&#xff0…

libxlsxwriter中文报错问题

libxlsxwriter库在windows系统下VS中存在中文输入报错问题。这在小白关于libxlsxwriter的第一篇博客libxlsxwriter初体验里有所阐述。当时小白给出的解决方案是将文件编码修改成不带签名的utf-8。后来在使用中,小白发现这样并没有完全解决问题。有的中文可以正常写入…

VHDL语言基础-时序逻辑电路-触发器

目录 触发器: D触发器: 触发器的VHDL描述: 触发器的仿真波形如下:​编辑 时钟边沿检测的三种方法: 方法一: 方法二: 方法三: 带有Q非的D触发器: 带有Q非的D触发器的描述&am…

微信小程序 Springboot高校课堂教学管理系统-java

小程序端 学生在小程序端进行注册并且进行登录。 填写自己的个人信息进行注册 登录成功后可以看到有首页、课程资源、测试、互动论坛、我的功能模块。 课程资源学生可以点击想要查看的资源进行观看。 课程分类学生可以按照自己想要的分类进行搜索并且进行观看。 互动论坛可以查…

四种方式的MySQL安装过程 数据库(2)

目录 1. 仓库安装: 1.1 卸载数据库软件: 2. 本地安装: 2.1 卸载数据库软件: 3. 容器安装: 4. 源码安装: 4.1 使用systemctl命令启动进程 1. 仓库安装: (1)查看版本…

超级详细GitBook和GitLab集成步骤【linux环境】

介绍 本文主要是在 gitlab 上集成 gitbook 实现提交时 gitbook 自动刷新部署 ,以及在 linux 环境上搭建 gitlab gitbook,集成 GitLab CI 实现一个企业级或个人的 Wiki 系统 环境准备 1.一台 linux 服务器 2.安装 node 以及 npm 环境 (这里注意 node 环境不要过高 不…

CS反制之批量伪装上线

分析原理: 我们利用Wireshark抓包工具分析一下Cobalt Strike的上线过程是怎么样的 点击木马,主机上线并抓包 查看数据包 可以看到cookie是一串非对称RSA加密类型,需要一个私钥Private Key才能对其进行解密 我们对Cookie解密看看&#xff…

Django框架之系列二

为什么要搭建虚拟环境? 在开发过程中, 当需要使用python的某些工具包/框架时需要联网安装 比如联网安装Django框架django的1.11.11版本 sudo pip install django1.11.11提示:使用如上命令, 会将Django安装到/usr/local/lib/python2.7/dist-packages路径下问题&…

常见的10种网络安全攻击类型

1. DoS 和 DDoS 攻击DoS 是 Denial of Service 的简称,即拒绝服务。单一的 DoS 攻击一般是采用一对一方式的,通过制造并发送大流量无用数据,造成通往被攻击主机的网络拥塞,耗尽其服务资源,致使被攻击主机无法正常和外界…

57 长短期记忆网络(LSTM)【动手学深度学习v2】

57 长短期记忆网络(LSTM)【动手学深度学习v2】 深度学习学习笔记 学习视频:https://www.bilibili.com/video/BV1JU4y1H7PC/?spm_id_fromautoNext&vd_source75dce036dc8244310435eaf03de4e330 长短期记忆网络(LSTM&#xff09…

Element UI框架学习篇(四)

Element UI框架学习篇(四) 1 准备工作 1.0 创建Emp表并插入相应数据的sql语句 /*MySQL数据库*/SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------------------------- -- Table structure for emp -- ---------------------------- DROP TABLE IF EXISTS emp; CRE…