解决流水线瓶颈、提升编码效率的五个方法(上篇)

这篇具有很好参考价值的文章主要介绍了解决流水线瓶颈、提升编码效率的五个方法(上篇)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

不是吹牛,但我所管理的开发团队在软件开发速度上表现出色,能够高质量地编写代码,并在白噪声的陪伴下保持高效。

但就像所有的故事一样,一开始并不是这样的,甚至相去甚远。我们经历了时间、沟通、合作、失败、成功以及许多关于生产力的会议(有时很尴尬,但它们帮助我们找出了困扰我们的问题…另外,我同事会制作他的拿手饼干,所以是双赢的)。接下来,我将直接跳入主题,与你分享我团队的成功经验。

首先,我会提供一些事实来为场景做铺垫:一名普通的开发人员在一天内平均可以编写大约100行代码。这已经是相对高效的开发人员的产出了。有些开发人员每天可能只产出五行或十行代码。考虑到一个手机应用程序大约包含5万行代码,所以这并不是一个特别高的数字。如果程序员每周只能生产出几百行代码,那么编写一个应用程序会需要很多很多开发工作日。

这就是为什么开发团队需要不断地寻找加速代码生产的方法。他们需要克服减缓软件开发的瓶颈,然后找到一些工具和流程,解决他们在持续编写和部署应用程序时面临的挑战(这就是我们在吃饼干的会议中讨论的内容)。

现在,我们都知道,要实现这一目标,持续集成(CI)流水线是一个很好的起点。尽管导致代码生产时间超过预期的原因有很多,但初始化、配置和执行CI流水线时出现的问题却是最常见的。开发人员在设置和管理CI流水线或解决构建失败的问题上花费的时间越多,他们完成主要工作(编写创新代码)的时间就越少。此外,能够花更多时间编写代码,而不是与CI工具纠缠不清的开发人员往往更加幸福。

这是最重要的一点,因为这是让开发人员快乐的原因。他们希望编写有意义的代码,为最终结果做出贡献,无论代码是否支持更好的用户体验(谁没有经历过一个不能提供所需功能的应用程序的愤怒),或是增加安全性(以便任何人都可以放心使用您的软件,包括您的祖父母),或者因为写得精巧收获了一众粉丝的崇拜。

大多数程序员选择他们的职业是因为他们喜欢写代码,而不是因为他们喜欢手动设置软件,也不是因为他们喜欢在CI日志中查找为什么构建时间超出预期。

好了,背景故事说够了,我将开始分享我在解决软件交付生命周期中的那一部分“机器”的经验——流水线。

我们都知道,一个结构良好的CI流水线可以确保开发人员快速高效地编写、集成和构建新的应用程序代码。然而,设置一个高效的CI流水线可能会是一项繁重的工作。特别是在需要启动多个流水线的情况下,每个流水线都需要稍微不同的配置。如果开发人员必须从头开始设置每个CI流水线并手动调整它,他们可能会在编写第一行代码之前,就花费数周的时间来初始化流水线。如何在这里运用“避免重复原则(Do not repeat yourself,也被称为DRY软件开发原则)”呢?反复做同样的事会令人沮丧,尤其是越做离目标反而越远的时候。

确保流水线配置符合组织标准或法规要求只会让问题变得更加复杂。对于开发人员来说,了解他们的流水线需要满足哪些标准都有点难,更别说以有效的方式实施这些标准了。

所以,在这里,我列出了采用的部分功能,来帮助我们解决流水线挑战。此篇文章是第一篇,会带来其中两个挑战的解决方案。在系列文章的最后,我还会添加我们选择的解决方案。

我们所面临的挑战是相当普遍的,我们选的解决方案解决了这些问题,并且提供了可衡量的成功,让每个人都很开心,包括首席执行官,他居然笑了。希望你也能在其中找到自己面临的挑战,并找出适合的解决方案。

挑战1:缓慢的流水线初始化(也就是我们避免DRY的过程)

流水线模板和流水线模板目录在这里起到了关键作用,避免了在创建流水线时重复操作。这些功能让CI管理员和开发团队以模板的形式定义标准流水线配置。在创建了这样的模板之后,管理员或开发人员可以通过配置流水线模板目录将其共享给整个企业。该目录会根据团队的不同,将流水线模板组织成不同的组。后端有一组与前端不同的模板可供选择。所有这些模板都在一个地方进行维护,并且可以让团队自动地抓取和部署。

通过使用流水线模板和模板目录,开发人员在初始化流水线时节省了大量时间和精力,而且在确定如何配置流水线以满足特定于域的要求时,猜测也大大减少。

挑战2:自定义CI配置(又名灵活性,为了满足特殊需求)

虽然在多个项目和开发团队中,模板是简化流水线初始化的有效方法,但一个流水线适合某个团队,也不一定适合别的团队。这意味着配置需要灵活,满足现在和以后的需求。

例如,我曾经有一个团队喜欢某个集成工具,但它没有内置到我们的CI配置中。我们需要一种方法,既能让他们自定义配置,又能符合我们经过测试和批准的CI配置。该怎么办呢?我当然不会阻挡开发人员想要这个工具来提高生产力的愿望。

为了解决这个问题,我们首先让每个开发人员对CI流水线拥有完全的管理员权限。这解决了允许开发人员自定义配置的挑战。随后我们发现这种方法存在问题,因为这导致了混乱和不符合规范。如果单个开发人员可以在没有监督或控制的情况下,部署他们想要的任何插件或配置更改,那么团队最终可能会得到违反企业或监管标准的流水线,甚至可能导致不稳定性。我们需要一起解决这个问题。

对我们来说,更好的解决方案是利用配置即代码(Configuration as Code,简称CasC),它提供了一个可管理的基于Git的工作流,让开发人员可以请求CI配置更改,并在应用更改之前使用自动化测试进行验证。具体流程如下:

  • 当开发人员想要更改托管控制器(例如Jenkins®实例)的配置时,开发人员会在Git上发出拉取请求;
  • 拉取请求触发新的托管控制器实例,其中将自动测试配置更改;
  • 如果测试通过,拉取请求将合并到目标托管控制器的主分支中,以便更改生效。

这种方法解决了两个关键挑战。首先,它提供了一个自助式的自动化过程,开发人员可以通过该流程请求CI配置更改,无需面对机构官僚主义或追踪管理员以请求更改。其次,基于Git的方法可以确保在应用配置更改之前,对其进行了适当的测试和验证。通过这种方式,开发团队就可以避免引入导致流水线不稳定或不达标的更改的风险。开发人员也可以拥有他们所期望的个性化设置和稳定性。

下一篇文章,我们将为您带来余下三个挑战的解决方案,包括排查流水线执行问题、管理流水线依赖关系以及构建基础设施使用效率低下。并且,在下期文章的末尾,作者会给出她选择的解决方案——一次解决这五种挑战的核心武器,敬请期待!

作者:萨曼莎·弗罗斯特(Samantha Frost),CloudBees公司产品营销经理。

文章来源:https://www.cloudbees.com/blog/lets-get-back-to-coding-5-approaches-to-solving-pipeline-bottlenecks文章来源地址https://www.toymoban.com/news/detail-419598.html

到了这里,关于解决流水线瓶颈、提升编码效率的五个方法(上篇)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云效-流水线(基本教程)

    阿里云效地址: https://accountid-devops.aliyun.com/ 代码在码云, 服务器在腾讯云, 代码是个聚合代码 1. 选择适合自己的模板 2. 创建码云链接 3. 选择代码仓库, 分支即可下一步 4. 部署,主机部署 5. 保存运行(获取打包路径) 6. 完善部署命令 按自己的需求进行填写, 包括打包成docker镜像

    2024年02月09日
    浏览(32)
  • Jenkins的流水线详解

    来源:u.kubeinfo.cn/ozoxBB 什么是流水线 声明式流水线 Jenkinsfile 的使用 jenkins 有 2 种流水线分为 声明式流水线 与 脚本化流水线 ,脚本化流水线是 jenkins 旧版本使用的流水线脚本,新版本 Jenkins 推荐使用声明式流水线。文档只介绍声明流水线。 声明式流水线 在声明式流水线语

    2024年02月11日
    浏览(28)
  • Jenkins流水线怎么做?

    问CHAT:Jenkins流水线怎么做? CHAT回复:Jenkins流水线是一种创建、测试和部署应用程序的方法。以下是为Jenkins创建流水线的步骤: 1. 安装Jenkins:首先你需要在你的服务器上安装Jenkins。这个过程可能会根据你的操作系统有所不同。 2. 安装必要的插件:为了使流水线工作,你需

    2024年01月24日
    浏览(31)
  • 【Jenkins】pipeline流水线

    流水线既能作为任务的本身,也能作为jenkinsfile,使用流水线可以让我们的任务从ui手动操作,转换为代码化,像docker的dockerfile一样,从shell命令到配置文件,更适合大型项目,可以让团队其他开发者同事参与进来,同时也可以编辑开发jenkinswebui不能完成的复杂的构建逻辑,作

    2024年02月09日
    浏览(40)
  • UnityShader(一)渲染流水线

    目录 一、什么是渲染流水线 二、渲染流程的三个概念性阶段 1.应用阶段(Application Stage) 一、准备好场景数据 二、粗粒度剔除 三、设置渲染状态 2.几何阶段(Geometry Stage) 3.光栅化阶段(Rasterizer Stage) 三、CPU和GPU的通信 1.把数据加载到显存中 2.设置渲染状态 3.调用Draw Ca

    2024年02月02日
    浏览(25)
  • Verilog流水线设计——Pipeline

    在工程师实际开发过程中,可能会经常遇到这样的需求:数据从数据源端不断地持续输入FPGA,FPGA需要对数据进行处理,最后将处理好的数据输出至客户端。 在数据处理过程中,可能需要一系列的处理步骤。比如常规的信号进行处理步骤有(这里的处理步骤只是举个例子):

    2024年02月08日
    浏览(25)
  • verilog实例-流水线(Pipeline)

    所谓流水线设计实际上是把规模较大、层次较多的组合逻辑电路分为几个级,在每一级插入寄存器组并暂存中间数据。 K级的流水线就是从组合逻辑的输入到输出恰好有K个寄存器组(分为K 级,每一级都有一个寄存器组),上一级的输出是下一级的输入而又无反馈的电路。 流

    2024年02月02日
    浏览(28)
  • 【软件架构】流水线设计模式

    流水线模式 流水线 模式是一种软件设计模式,它提供了构建 和执行 一系列 操作的能力。 此模式最好与 插件 模式结合使用,以便在应用程序启动时 动态 构建流水线。 顺序 流水线的最基本实现是一个简单的操作序列。 可以调用 操作 的接口来 处理 数据。 流水线一个一个

    2024年02月10日
    浏览(24)
  • ARM编程模型-指令流水线

    流水线技术通过多个功能部件并行工作来缩短程序执行时间,提高处理器核的效率和吞吐率,从而成为微处理器设计中最为重要的技术之一。 到ARM7为止的ARM处理器使用简单的3级流水线,它包括下列流水线级。 (1)取指令 从寄存器装载一条指令。 (2)译码(decode) 识别被

    2024年02月10日
    浏览(30)
  • 3D Tiles语义分割流水线

    Dylan Chua 和 Anne Lee 开发了一个处理管线,用于对 3D Tiles 中包含的 GL 传输格式 (glTF) 模型进行语义分割。 该管道读取并遍历 3D Tileset,以输出包含元数据的经过转换的划分对象集。 该项目为 3D 语义分割器提供了最小可行产品,作为各种应用程序的概念验证。 他们接受模拟和培

    2024年04月16日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包