云原生时代,企业如何选取研发模式,并通过云效流水线落地

简介: 云原生是近几年IT圈最火热的词汇之一,几乎每一个云计算产品都会或多或少跟云原生发生关联。那到底什么是云原生?它对企业的项目研发又有什么样的影响跟要求?云原生这个大的时代背景下,企业又应如何落地相应研发模式来提高研发效率,提升企业竞争力呢。容器是云原生变革的根本,其他的东西都是基于这个基础所引申和集成起来的。云原生时代的软件研发要求:快、稳和省。研发模式选择取决于是持续发布的方式还是版本制发布的方式。通过分支模式和工具平台,可以从繁琐的手工工作中解放出来,让我们研发协同的效率更高。

云原生是近几年IT圈最火热的词汇之一,几乎每一个云计算产品都会或多或少跟云原生发生关联。那到底什么是云原生?它对企业的项目研发又有什么样的影响跟要求?云原生这个大的时代背景下,企业又应如何落地相应研发模式来提高研发效率,提升企业竞争力呢。

容器是云原生变革的根本,其他的东西都是基于这个基础所引申和集成起来的。

云原生时代的软件研发要求:快、稳和省。

研发模式选择取决于是持续发布的方式还是版本制发布的方式。

通过分支模式和工具平台,可以从繁琐的手工工作中解放出来,让我们研发协同的效率更高。

云原生变革的根本

image-20210127154910625.png

2019年Pivotal官网给的定义,云原生关注4点,包括:DevOps,持续交付,容器以及微服务,这里我们只把容器凸显出来。因为其他三个并不是云原生所特有的,我们本来就在做这样的一些事,这里唯一的区别就是容器。容器就像集装箱,它成了一个标准,成了这几年云原生研发的一个底座,基于这个底座,再集成持续交付、微服务和DevOps等实践,就组成了我们通常所说的云原生。

云原生时代软件开发的特点

image-20210127154936787.png

随着云计算的发展,越来越多的企业开始上云,企业上云的第一个前提条件就是能够基于云上的这些服务提供更好的业务需求的响应能力,需要更快。其次,因为现在企业很多基础设施也在云上,比如说一些金融类的服务也慢慢上云了,这要求服务要非常的稳,不能出现问题,不管是安全问题,还是稳定性问题。第三,有这两个基本条件之后,企业希望投入的成本能足够的低,成本可能包括两方面,一方面是物理上的,硬件上的设施投入,比如ECS等,另外一个是我的人力成本,不管开发也好,运维也好,在这上面投入的人力成本要尽可能的低,所以总结下来就是三个字,快、稳和省。

接下来,我们看一个企业的实际场景问题,为什么团队变大了,发布却变得更困难了。

这是个很典型的问题,尤其当一个团队,从十几个人快速发展到一百多个人的时候,是非常明显的。原来一周可以发个一两次,但是到了100多人的时候,可能一个月才能发一次,这背后的原因,就是协作变复杂了。有一个研究报告提到,有效的研发时间,在整个项目周期中可能是不到20%的,大量的时间都是在做各种协同的事情,本次分享我们主要去讲怎么去解决这类问题。

协同问题,严重影响研发效率,如何为研发团队设计合适的研发模式

image-20210127154956784.png

我们从大家的发布形态去看怎么去设计合适的研发模式。比如我给银行做项目半年或者三个月给他一个版本,那个版本是明确的,发布什么东西很明确,这个时候认为它是版本制发布的方式,如果是另外一种,比如只是一个在线的服务,这个服务我不关心历史版本,只要最新的服务ok就行了,我们认为它是一个持续发布的方式。

持续发布的研发模式

image-20210127155028046.png

持续发布的特点是分支只合并一次,即从feature分支合并到master,它以一个特性或者需求为单位,开发完、验证完就可以发布,所以这个时候发布的粒度是一个feature。

当代码在feature分支上做提交后,会自动的做一些单元测试和扫描,然后做构建,然后部署到测试环境,在上面做一些自动化测试,之后可能会做一些人工的验证,然后部署到UAT环境,做一些验收和审核。如果审核通过了,就合并到主干,然后部署到生产环境,整个过程非常清晰顺畅。

版本制发布研发模式

image-20210127155044570.png

版本制发布方式特点是分支合并两次。

image-20210127155123391.png

从上图可以看出,这里面有一个feature branch,一个master,一个release branch。master就是主干,主干是长期的分支,存放最新的发布过的、可用的代码;feature branch是特性开发的分支,每做一个特性开发的时候,会拉一个feature branch,在上面进行开发和自测。

要做发布的时候,会拉一个release branch, release branch也是临时的分支,之后,所有符合条件的feature branch就会合并到release branch,在release branch上做集成验证和测试,验证通过了,并且通过验收之后,会合并到主干,然后部署到生产环境,这个就是版本制的方式。这里有两次代码合并的过程,第一次合并是从feature branch合并到release branch,第二次是从release branch合并到master。

云效流水线落地研发模式

image-20210127155141490.png

首先,我们会在云效上建立两条流水线,一条dev流水线,即开发流水线,一条release流水线,即发布流水线。开发流水线的话,它的触发源就是feature分支一次git push,之后自动的去做一些代码扫描、单元测试、构建或者是测试环境部署,也可以到上面去做自动化测试,云效流水线都是支持的。

开发流水线运行通过后,我们可以根据需要,将feature分支合入到release分支,此时就会触发我们的第二条流水线也就是release流水线运行。

release流水线的会在上面同样去做前面的那些动作,但是会额外有一些管理员的卡点,包括一些UI测试,SIT测试等等。验收通过后,会发布到UAT环境,并且做PO验收和运维审核,最后合并master,然后生成一个版本,并且部署到正式的环境中。这就是版本制发布的一个研发模式,它的特点跟刚刚比会多一次分支合并操作。

image-20210127155102936.png

云效流水线研发模式落地实践:https://thoughts.aliyun.com/sharespace/5e8c387c0aa435001a74f7ab/docs/5ec0b04f9e2b9b002352b07a

理念速递是由阿里云云效团队发起的,聚焦于研发项目协作与工程实践落地的访谈类活动。该活动会邀请以何勉、张刚、陈鑫、赵喜鸿为首的阿里云专家团参与其中,就当下开发者关注的热点话题,进行互动、分享。

【本期主持人:】

解浩(哑木),阿里云云效解决方案架构师

【本期嘉宾:】

张裕(子丑),阿里云工程实践专家,曾在诺基亚网络负责测试自动化和CICD工具平台开发,做过测试自动化教练,也在初创企业做过开发、运维负责人和测试架构师,推崇持续、快速、高质量的软件交付方式,目前专注于云原生和DevOps领域。

云效微信底部图.png

-END-

长按识别上图二维码进群,更多干货、优惠活动等你解锁

点击:了解更多云效

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
SVN版本控制系统
SVN是现在软件开发之中的主流软件版本控制工具,在工作之中利用SVN可以有效的解决多人开发的代码管理问题,本课程将为读者讲解SVN服务器的配置以及基于MyEclipse的SVN客户端插件的配置与使用,并且在讲解之中着重讲解了冲突的产生于解决。
目录
相关文章
|
3月前
|
弹性计算 运维 Serverless
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
80 1
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
|
3月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之如何限制在本地的构建主机创建的流水线的并发数
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
30天前
|
Kubernetes Cloud Native 持续交付
云原生技术:重塑现代应用开发与部署模式####
本文深入探讨了云原生技术的核心概念、发展历程及其在现代软件开发和部署中的关键作用。通过分析云原生架构的特点,如容器化、微服务、持续集成与持续部署(CI/CD),以及它如何促进应用的可伸缩性、灵活性和效率,本文旨在为读者提供一个关于云原生技术全面而深入的理解。此外,还将探讨实施云原生策略时面临的挑战及应对策略,帮助组织更好地把握数字化转型的机遇。 ####
|
3月前
|
敏捷开发 缓存 5G
阿里云云效产品使用合集之流水线中的webhook是否可以设置为变量
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
3月前
|
Devops API
阿里云效流水线API简单使用
阿里云效流水线API简单使用
|
3月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之流水线构建出现问题,连接不到nuget,该如何处理
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
3月前
|
Java 应用服务中间件 测试技术
阿里云云效产品使用合集之云效流水线如何使用alb ingress的脚本
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
3月前
|
敏捷开发 Java 测试技术
阿里云云效产品使用合集之如何下载流水线构建过程中生成的jar
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
3月前
|
敏捷开发 Java 测试技术
阿里云云效产品使用合集之怎么设置流水线中的全局参数
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
3月前
|
运维 Java Devops
阿里云云效操作报错合集之在流水线增加单元测试报错,是什么导致的
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。