将潜力转化为绩效:在软件交付中实现AI的投资回报率人工智能正在改变软件的开发、测试和发布方式——然而,许多团队仍在努力将这种潜力转化为可衡量的成果。在整个软件开发生命周期中,AI引入了强大的能力。 从加速编码、生成软件质量检查到记录保存,生成式AI工具正在帮助承受巨大压力、需要在保证质量的前提下更快交付的软件开发团队。 当AI作为智能自动化框架的一部分被融入交付流程时,真正的投资回报率才会出现。这些是结构化的系统,它将AI与自动化相结合,使流程具有适应性,并能根据软件速度和质量的既定目标进行衡量。 对于软件领导者来说,要充分实现AI的潜力,他们必须超越试点项目,最终将AI定位为规模化、一致、可信、高性能软件交付的关键驱动力。 组织准备度塑造AI的规模化影响仅靠技术无法解锁投资回报率。要取得可重复的成功,需要运营规范和文化协同。
背景 传统 Web 前后端协作模式中,HTTP API 是前后端的分界点,服务端交付 API,Web 端根据 API 构建应用。 感想 直接交付 SDK,其实在 RPC 调用中很常见。 因为 RPC 接口通常有结构化的协议文件,比如 protobuf,可以借助自动化工具,生成各种语言的调用 SDK(即桩代码 Stub)。
持续集成和持续交付等实践能够在进行任何更改后立即将代码交付到生产环境中。当使用更小改动的代码块时,将会让新功能发布和修复BUG并行成为可能。 今天我们将重点介绍 CI/CD 的第二阶段,持续交付。它有助于确保代码已准备好交付。它的主要特点是代码构建、测试和交付等过程的自动化,有助于及早避免错误并最大限度地降低风险。 何谓持续交付 根据持续交付的实践,团队开发软件是以最小变动代码块为单元,产品发布不是手动进行的,而是通过一个按钮来完成的。代码中的每个小改动都会自动构建、测试并发布到生产环境中。 这些过程可以在整个交付过程中继续进行,从一开始就为产品带来质量。 灵活性。CD 能够经常发布新功能,即使整个产品都在开发中。 该技术有几个阶段,例如管理流程、测试和定义产品是否已准备好交付,这涉及不同的部门和不断的协作。
《持续交付》提出了一系列贯穿整个软件交付生命周期的最佳实践。但它成书的年代(2010年)云计算尚未得到广泛应用,尤其在软件开发过程中的应用非常有限。 如果站在今天的技术水平和对云计算的理解水平基础上回顾《持续交付》的内容,我们有可能提出一组全新的、原生于云环境的持续交付实践。 ? 对于这些反模式,《持续交付》提出的解决办法是“将几乎所有事情自动化”。 ---- 部署流水线 《持续交付》提出了“部署流水线”的概念(如下图)。“随着某个构建逐步通过每个测试阶段,我们对它的信心也在不断提高。 《持续交付》中提倡整个部署流水线“只生成一次二进制包”,并且在各个验证步骤之间传递二进制包。
这个是比较典型的交付产品的测试思路,对于“笔”这个产品,它需要满足以上我们考虑到的信息,在这个过程中,我们关注的是对于笔的产品说明书,以此为蓝本来设计我们的测试用例,测试人员关注的是说明书是否写的足够清晰 在敏捷的环境中,我们关注的是交付价值,需要澄清原始需求背后客户的真实痛点是什么。 最终交付了此功能,并与客户简单讲解了整个使用配置过程,得到了客户的认可。 在这个过程中笔者做了什么: 需求澄清——基于业务上下文的需求背景分析; 分析现有逻辑——提出现有逻辑的不合理性; 提出支撑性需求——为满足需求,增加额外的功能支撑; 关注用户体验——做好功能交付及业务培训 提升整个团队的交付价值,不仅仅是产品需要思考的问题。
CircleCI报告揭示,高速代码交付节省数百万美元!关键在于优化CI/CD流程,提升MTTR和吞吐量。AI和自动化是加速软件交付的关键,需关注IaC等先进技术。 在组合中加入投资回报率 这就是总部位于旧金山的CircleCI对其年度软件交付状态报告采取扩展方法的原因,该报告的第六版于周二发布。 该报告仍然着眼于用于定义性能的关键指标——持续时间、吞吐量、平均恢复时间(MTTR)和成功率——但该供应商还在衡量组织从中获得的投资回报率,这是业务领导者和利益相关者的关键衡量工具。 它还探讨了CI/CD中的自动化、基础设施即代码(IaC)和AI等先进技术对软件交付的意义。 它们正在提高软件交付的速度,而名单上的顶级组织正在适应工程的快速发展性质,并为用户提供价值。
《持续交付 发布可靠软件的系统方法》读书笔记 实现持续交付不仅仅是买些工具,做一些自动化的工作。它依赖于交付过程中所涉及的每个人的协作,来自行政管理层的支持,以及基层人员的改进意愿。 持续交付不仅仅是一种新的交付方法论。对依赖于软件的业务来说,它是一个全新的范例。要想知道为什么,需要研究公司治理核心中一种根本的张力(tension)。 通过确保交付团队能得到应用程序在类生产环境上的不断反馈,是部署流水线达成“执行度”这个目标的方法和手段。部署流水线使交付流程更加透明,来帮助团队达成符合度。 提高软件交付生命周期的可预测性,让计划更有效。 具有采用和遵守任何必要的法律规章的能力。 具备有效发现和管理软件交付相关风险的能力。 通过更好的风险管理和交付更少缺陷的软件来减少成本。 它让你可以识别交付实践效率是什么状态,并且为如何改进提供了建议。
交付物成果是项目管理中的阶段或最终交付物。是为完成某一过程、阶段或项目而必须交付的任何独特、可验证的产品、成果或提供服务的能力。 在项目管理中,始终都非常关注交付成果。 完成全部交付成果,就意味着覆盖了全部的项目范围,所有的项目活动、项目资源,都是为了有效完成这些交付成果而发生的,交付成果在很大程度上反映了项目目标的要求。 不同的项目阶段会产生不同可交付成果。 不同阶段的可交付成果的评审与验收程序也是不一样。 一般项目阶段的可交付成果可以由企业项目组领导进行评审与验收。 重要的项目的可交付成果,如里程碑可交付成果、项目最终的可交付成果则需要企业高层和项目给付方进行评审与验收。
比方说,运维可能容易将持续交付理解为程序自动化分发,重点解决程序向多台主机的下发的自动化,或将持续交付做成运维内部的独立工具,这与“持续”关注的完整流畅的流水线、“交付”关注的用户价值交付有所不符。 持续交付的边界有两种观点,一种是持续交付介于持续集成与持续部署之间,强调软件一直处于可交付的能力;另一种是持续交付包括了部署。 说完成DevOps与SRE的关系,再看看与持续交付的关系。持续交付是DevOps的一种主流的技术实践,两者最终目的都是为了更快向用户交付高质量的软件交付。 区别是,持续交付更专注于具体实现,是DevOps方法与文化在组织、流程、工具上的实现。 2)归纳价值 快速交付 貌似这个价值勿需多言,持续交付就是为了更快的向用户交付高质量的软件。 同时通过线上化各环节的执行步骤就能够量化持续交付的水平,比如:自动化测试覆盖率、缺陷数量、每天构建次数、发布平均时长等,量化数据能让团队清晰的看到低效环节并进行改进。
一个软件交付计划被划分成多个迭代,强调在每个迭代结束时应该得到可运行的软件。 与瀑布软件开发方法只在项目交付后期才能看到可运行的软件相比,敏捷软件开发方法在这方面有很大的进步。 持续交付 1.0 “持续交付 1.0” 是一种能力,也就是说,能够以可持续方式,安全快速地把代码变更(包括特性、配置、缺陷和试验)部署到生产环境上,让用户使用。 、无风险地快速交付客户价值。 持续交付七巧板 讨论了 “持续交付2.0” 的指导思想、工作理念和核心原则。大家很容易意识到,它对适应快速变化的市场环境和激烈的市场竞争是非常有效的。 持续交付双环模型的实施与改进将涉及企业内的多个部门与不同的角色,无法由某个部门独立实施,必须在整个组织范围内贯彻执行 “持续交付 2.0” 的思想、理念与原则。
《持续交付 发布可靠软件的系统方法》读书笔记 软件从业者的目标 作为软件从业者,我们的目标是 尽快地 向 用户 交付 有用的可工作的 软件。 速度是至关重要的,因为未交付的软件就意味着机会成本。 快速交付也是非常重要的,因为这使你能够验证那些新开发的特性或者修复的缺陷是否真的有用。决定开发这个应用程序的人(我们称为客户)会猜测哪些特性或缺陷修复对用户是有用的。 质量并不等于完美,正如伏尔泰所说“追求完美是把事情做好的大敌”,但我们的目标应该一直是交付质量足够高的软件,给客户带来价值。因此,尽快地交付软件很重要,保证一定的质量是基础。 软件应该满足一定的质量标准,比如测试覆盖率以及其他与技术相关的度量项。 软件的功能验收测试必须是成功的。这可以检查应用是否满足业务验收条件,交付了所期望的业务价值。 软件的非功能测试必须是成功的。 交付原则 为软件的发布创建一个可重复且可靠的过程 将几乎所有事情自动化 把所有的东西都纳入版本控制 提前并频繁地做让你感到痛苦的事 内建质量 “DONE”意味着“已发布” 交付过程是每个成员的责任 持续改进
实现 Pipeline 功能的脚本语言叫做 Jenkinsfile,由 Groovy 语言实现。Jenkinsfile 一般是放在项目根目录,随项目一起受源代码管理软件控制,无需像创建"自由风格\"项目一样,每次可能需要拷贝很多设置到新项目,提供了一些直接的好处:
Deliverables for website development Customer requirement specification (external link) Web design proposal (as PDF) Website content User training session Finished website Deliverables for IT projects Requirement specification (document) User inter
从负载均衡、应用交付到交付安全,在短短的十数年里,交付领域的变化可谓日新月异,从软件到硬件,从4层负载到7层应用,而这两年,主流厂商又将应用交付的大旗指向了信息安全。这些仅仅是厂商的“噱头”么? 应用交付的产生主要来源于两个因素:一是客户需求的提升,除了负载均衡,客户的应用需要在部署时更加灵活,更加适应应用本身的特点;二是SSL加速技术、HTTP压缩技术等一系列应用交付技术在不断发展和整合,这些都推动着应用交付持续向前发展 从应用部署理念上来讲,负载均衡关注业务流进入数据中心的过程,而应用交付更加关注应用交付出去的效果,更加关注用户的使用体验。 这些技术为应用交付产品完成安全功能打下了技术基础。 交付技术在不断更新,但应用交付的部署位置却从未改变。 安全问题的日益突出,也使得应用交付产品设计人员注意到,通过应用交付产品构建第一道安全防线的必要性。而国际以及国内主流安全厂商的跟进,则使得这种希望逐渐变为现实。
几年前看过《持续交付(发布可靠软件的系统方法)》,感触不是很深,最近看了这本书的译者乔梁编写的《持续交付2.0》,结合工作中的种种,又有一种相见恨晚的感觉。 开发软件的目的是创造客户价值,所以,我们不应该仅仅关注快速开发软件功能,还应该关注我们所交付的软件的功能正确性。 聚焦的做法就是,快速完成邮件的收发功能,在交付期前有多的时间再完善删除邮件、收藏等功能。到了交付期,删除和收藏功能没有完成,不影响我收发功能的发布。 如果一开始将收发、收藏、删除等同时并行在做,可能到了最后时间,每个功能点都完成了一部分,但却不能交付客户。 工具 持续交付在实践过程中离不开自动化工具,大体可以分为自动化构建和自动化测试。
你很容易与你的团队、老板和竞争对手分享;我们都可以从更快、更安全地交付软件中受益。 小贴士:把它放在某人的办公桌上作为一个节日惊喜,也许我们一起可以让2021年更好。 ? 我谨代表持续交付基金会祝你和你的亲人有一个安全快乐的假期。
如何构筑自己的竞争壁垒 如何提高竞争门槛 如何构筑自己的护城河 这些都是竞争层面需要考虑的问题 最后才是交付 交付主要牵扯两个关键词: 能力 效率 假如这两个关键词你有独占性, 那也会形成竞争优势。 需求、竞争与交付,这是现阶段我在摸索生意模式过程中想到的点滴,暂且这里记录一下。
1.下载并运行 Jenkins 下载 Jenkins. http://mirrors.jenkins.io/war-stable/latest/jenkins.war
Pipeline 是一组插件,让 Jenkins 可以实现持续交付管道的落地和实施。持续交付管道(CD Pipeline)是将软件从版本控制阶段到交付给用户或客户的完整过程的自动化表现。
软件的开发工作的大致流程 编码 -> 构建 -> 集成 -> 测试 -> 交付 -> 部署 由上图可知「持续集成(Continuous Integration)」、「持续交付(Continuous Delivery 2.持续交付: 持续交付(Continuous delivery)指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。 持续交付可以看作持续集成的下一步。 持续交付优先于整个产品生命周期的软件部署,建立在高水平自动化持续集成之上。 持续交付的好处 持续交付和持续集成的优点非常相似: 快速发布。能够应对业务需求,并更快地实现软件价值。 整个交付过程标准化、可重复、可靠, 整个交付过程进度可视化,方便团队人员了解项目成熟度; 更先进的团队协作方式。 3.持续部署: 持续部署是指当交付的代码通过评审之后,自动部署到生产环境中。持续部署是持续交付的最高阶段。这意味着,所有通过了一系列的自动化测试的改动都将自动部署到生产环境。