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

简介: 云原生是近几年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-

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

点击:了解更多云效

目录
相关文章
|
5月前
|
Kubernetes Devops 应用服务中间件
基于 Azure DevOps 与阿里云 ACK 构建企业级 CI/CD 流水线
本文介绍如何结合阿里云 ACK 与 Azure DevOps 搭建自动化部署流程,涵盖集群创建、流水线配置、应用部署与公网暴露,助力企业高效落地云原生 DevOps 实践。
615 1
|
5月前
|
监控 安全 Devops
DevOps 流水线的网络安全盲区与防御策略
在软件研发中,DevOps流水线加速了开发与交付,但也带来严重安全风险。自动化节点和第三方集成成为攻击入口,凭证泄露、供应链渗透、配置错误和依赖混乱等问题频发。企业需构建全流程安全体系,嵌入自动化安全策略,强化访问控制与监控,提升全员安全意识,实现效率与安全的协同发展。
510 1
|
运维 Devops 持续交付
自动化运维的魔法:打造高效DevOps流水线
【10月更文挑战第34天】在数字化时代的浪潮中,DevOps成为企业追求敏捷、高效和稳定的关键。本文将通过一个真实案例,展示如何构建一个高效的DevOps流水线,实现从代码提交到部署的全自动化流程。我们将探讨流水线设计的哲学、工具选择以及面临的挑战,并分享实际的代码示例和操作步骤,帮助读者理解自动化运维的精髓。
354 2
|
9月前
|
运维 Devops 测试技术
云效DevOps:加速企业数字化转型的利器
云效DevOps是阿里巴巴推出的企业级一站式平台,覆盖需求管理到应用运维全生命周期。其核心价值包括全流程自动化、高效协同、质量保障与可视化度量。功能涵盖代码管理、持续集成、持续交付及应用运维,支持微服务架构、大规模团队协作等最佳实践。成功案例显示,云效显著提升企业软件交付效率与质量,助力数字化转型,未来将融合AI技术实现更智能的交付体验。
510 11
|
运维 监控 Devops
自动化运维实践:打造高效的DevOps流水线
在软件开发的快节奏中,自动化运维成为提升效率、确保质量的关键。本文将引导你理解自动化运维的价值,通过实际案例分享如何构建一个高效、可靠的DevOps流水线。我们将从持续集成(CI)开始,逐步深入到持续部署(CD),并展示代码示例来具体说明。准备好让你的运维工作飞跃式进步了吗?让我们开始吧!
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
914 30
|
运维 监控 Devops
自动化运维的魔法:打造高效DevOps流水线
【10月更文挑战第6天】 在现代软件开发的快节奏中,自动化运维成为提高效率、保障质量的重要手段。本文将带你了解如何构建高效的DevOps流水线,从持续集成到部署,再到监控和反馈,我们将一步步揭开自动化运维的神秘面纱。你将学习到如何通过代码和工具的结合,实现软件交付过程的自动化,以及如何通过这一流程提升团队的协作和响应速度。让我们开始探索自动化运维的奇妙之旅吧!
|
运维 Devops jenkins
自动化运维:打造高效DevOps流水线
【8月更文挑战第44天】本文将通过深入浅出的方式,带你构建一个自动化的DevOps流水线,提升开发和部署效率。从基础概念到实际操作,我们一步步剖析如何实现代码提交、自动测试、构建、部署的全过程自动化。你将学会使用Jenkins、Git、Docker等工具,并结合Shell脚本编写,完成一个完整的自动化流程。文章末尾附有完整的示例代码,助你快速上手实践。
|
Java Spring 传感器
AI 浪潮席卷,Spring 框架配置文件管理与环境感知,为软件稳定护航,你还在等什么?
【8月更文挑战第31天】在软件开发中,配置文件管理至关重要。Spring框架提供强大支持,便于应对不同环境需求,如电商项目的开发、测试与生产环境。它支持多种格式的配置文件(如properties和YAML),并能根据环境加载不同配置,如数据库连接信息。通过`@Profile`注解可指定特定环境下的配置生效,同时支持通过命令行参数或环境变量覆盖配置值,确保应用稳定性和可靠性。
220 0
|
前端开发 Java UED
JSF遇上Material Design:一场视觉革命,如何让传统Java Web应用焕发新生?
【8月更文挑战第31天】在当前的Web开发领域,用户体验和界面美观性至关重要。Google推出的Material Design凭借其独特的动画、鲜艳的颜色和简洁的布局广受好评。将其应用于JavaServer Faces(JSF)项目,能显著提升应用的现代感和用户交互体验。本文介绍如何通过PrimeFaces等组件库在JSF应用中实现Material Design风格,包括添加依赖、使用组件及响应式布局等步骤,为用户提供美观且功能丰富的界面。
252 0