快手、孩子王、华为等专家分享大模型在电商运营、母婴消费、翻译等行业场景的实际应用 了解详情
写点什么

迈出持续交付的第一步

  • 2013-11-07
  • 本文字数:2410 字

    阅读完需:约 8 分钟

持续交付整合了许多实践,这些实践的数量可能令人生畏。但是通过执行一些基本的步骤就可以让开发者立刻受益。我们应该如何迈出持续交付的第一步呢?AccuRev 的首席技术官 Dave Jabs提供了自己的建议。

Dave 认为能够在开发和交付方面表现优秀的软件开发组织将在商业中拥有战略优势。然而,很多开发组织很难做到及时交付软件。“持续交付”这一实践形式越来越成为准时交付软件工作的重要组成部分。持续交付定义了一组旨在消除机械障碍、提高交付速度以响应市场需求的实践行为。他最欣赏来自 Thoughtworks 的 Jez Humble 对持续交付的定义,他的书籍也开创了持续交付的先河。他说:“我的软件交付哲学的精髓是构建一个随时可以用于生产的软件。我们称之为‘持续交付’是因为我们不断运行一个部署管道来检测这个软件是否在交付状态。”

持续交付并非持续部署、也不是持续发布或者某些只有云计算应用程序需要考虑的东西。持续交付使用一组包括分段软件开发和交付过程的关键准则。过程中的每一阶段都设有一系列不同标准。在软件进入下一阶段前必须对当前阶段标准进行验证。这些过程中的测试、软件部署和推广均采用自动化模式。基于阶段的过程最终形成了交付管道。新软件可以在交付管道持续运行,并在运行过程中不断被验证以逐步获得更高的质量。

因为持续交付并非工具或产品,所以实现它是困难的。能实现成功的持续交付的方法必然是一个完整的方法,它必须协调好技术、过程、人和价值的关系。这意味着团队心态的转变,以及开发流程、开发工具的改变。要想做好持续交付,开发组织也需要做出改变。实现卓越的持续交付并不容易,但它的回报是非常诱人的:开发团队将达到先前认为不可能的运行速度。

Dave 认为,持续交付的全局概念并不新鲜。实际上,第一个敏捷原则就声明:“最高优先级是通过早期和持续交付有价值的软件满足客户需求。”尽管熟知这个概念,许多公司——甚至一些致力于敏捷过程的公司——都很难做到持续交付。

持续交付路线图的第一站是为开发和交付管道建模。当下许多开发组织由互相不联系的团队构成。如果你想做到持续交付,你需要保证管道从头到尾是连续的。

实现持续交付需要开发组织实现一个多步骤方法,Dave 总结道:

  1. 为现有流程建模并测量其周期时间
  2. 识别过程中的延迟
  3. 制定行动计划将当前延迟降为最小,消除潜在的延误

通过执行这些步骤,Dave 认为,开发组织可以消除开发工作与运营工作之间的等待延迟,以获得一个单一、统一标准,概念上可以执行各种交付软件的管道。持续交付是一个旅程,而不是一夜之间的产物,因为开发组需要做出技术、过程、文化、人员等方面的巨大改变以实现完整的管道——而且进行这些改变是需要时间的,其耗时常常多于一年。那么软件开发组织要从哪里入手呢?Dave 认为公司最初应当集中攻克的三个基本领域如下:

  • 需求管理:需求必须被分解为最小的交付单元;根据增量交付来制定和管理开发方案。
  • 测试 / 验证:QA(测试 / 验证)环节必须是基于经验的、结构化的、有组织的、自动化的。此外,良好、持续的集成是持续部署的先决条件。
  • 交付技术:首先是版本控制。再现性的软件构建是一种常见的方法,然而再现性的部署常常丢失。之后是自动化交付。持续此操作直到它成为一个一键无阻的过程。

很多软件开发公司在实现持续交付时都遇到了难以克服的障碍。Dave 认为,他们之所以会遇到这种障碍是因为他们现有的产品并没有遵循持续交付定律进行开发。好消息是,他们现在开始改变了。公司开始制定目标、宗旨,执行实践,这些将使他们获益——从在最初的一些小利益到最终的理想状态。

在需求管理方面,公司在定义易懂的、易管理的、可交付的小交付故事(story)时常常会遇到问题。Dave 提供的解决方案是设定目标,让每一个故事精简,然后集中精力在短的时间周期内不断改进故事的写作过程直到故事完成。在一组相关的故事完成前,可以通过使用功能切换进行故事隐藏或通过 A/B 测试判断一组故事的可用性。

在测试 / 验证方面,Dave 指出,在当今的软件开发测试中,大部分公司在 GUI 测试的投入巨大。这种做法其实并非最优。

公司应该把大部分测试集中在单元测试,因为单元测试的测试覆盖率是最大的。在单元测试中,重点应进一步放在集成测试。在集成测试中,开发者通过执行一系列小的集成测试以确保各组件可以共同工作。GUI 应当是投放精力最少的测试,因为 GUI 测试通常是脆弱、缓慢、不可靠、性价比最低的。这种测试策略将带来更小的循环周期,更高的质量,更低的测试成本。

另一个常见的问题是扩展持续集成。Dave 认为,随着开发的步步深入,开发者可能会遇到越来越多并发的变化,花在构建和测试上的时间会越来越长,这些都可能导致失败的构建。最糟糕的情况是在一个单一主线进行构建时,结果不是大部分工程工作而是大部分工程都失败。这种做法就不是持续交付。更糟糕的是,这种不稳定的主线会影响所有的开发者,并且将他们的成果大打折扣。

公司可以通过采用两项主要技术来实现大规模持续交付。每一项技术都被设计为“分而治之”的策略,这些策略允许开发者关注对持续交付有显著影响的特定区域:

组件或服务架构:公司可以选择将他们的软件变为组件或者服务框架。这些组件可以独立部署,独立生产,不受其它组件的影响。它们有清晰的接口,可以兼容多个版本的组件。通过这种结构,开发者可以运行相互独立、互不干扰的开发工作和交付管道。这种结构提供了工程的可扩展性。

多团队持续集成:在这种方法中,开发者通过采用多个团队小组进行开发的方式获得可扩展性。开发者在各组进行整合和测试步骤时进行工程整合,最终实现部署管道。多级持续集成的关键是将管道开发和集成测试分为几个阶段。开发组织可以依据团队分支、特征分支、构建(每天、每周等)和主线定义各阶段。通过在各阶段使用集成测试开发组织在一定程度上扩大了测试的覆盖范围,提高了测试的连续性。测试连续性允许代码在管道里流动,加快问题识别速度,让开发者更容易分析、解决问题,这些都降低了修正问题的成本。

2013-11-07 07:021927
用户头像

发布了 501 篇内容, 共 254.7 次阅读, 收获喜欢 59 次。

关注

评论

发布
暂无评论
发现更多内容

代币开发:2024年代币开发主要因素

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

即时通讯技术文集(第35期):IM群聊技术合集(Part2) [共12篇]

JackJiang

即时通讯;IM;网络编程

编译GreatSQL with RocksDB引擎

GreatSQL

如何定期清理数据库中的无效数据?

NineData

数据清理 数据归档 NineData 无效数据 优化数据库

提升地理空间分析效率,火山引擎ByteHouse上线GIS能力

字节跳动数据平台

数据库 大数据

ByteSRC奖励再升级,单个重大漏洞提升至10万元

Geek_2d6073

Tapjoy from Unity 推出“每日奖励”积分墙广告,以增强用户粘性并提升投放 ROAS

Geek_2d6073

十分钟掌握分布式数据库开发:OpenMLDB 开发者镜像详解

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

数据“隐领”未来!【隐私计算实训营】限时免费招募!

隐语SecretFlow

数据分析 数据安全 隐私计算

【体验有奖】用 AI 画春天,函数计算搭建 Stable Diffusion WebUI

阿里巴巴云原生

阿里云 云原生 AIGC

[自研开源] MyData v0.7.2 更新日志

LIEN

开源 数据集成 业务融合 API对接 mydata

ppt美化ai软件有哪些?这5款AI工具一键生成PPT!

彭宏豪95

人工智能 PPT AIGC 效率软件 AI生成PPT

2024-03-13:用go语言,给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q =

福大大架构师每日一题

福大大架构师每日一题

「飞桨星河社区创作者激励计划」全新上线!丰富权益,等你领取~

飞桨PaddlePaddle

百度 开发者社区 百度飞桨 星河社区 飞桨星河社区

【一文读懂】基于Havenask向量检索+大模型,构建可靠的智能问答服务

阿里技术

向量检索 LLM 智能问答 Havenask 召回搜索引擎

万字带你了解ChatGLM

华为云开发者联盟

人工智能 华为云 大模型 华为云开发者联盟

一键开启 GPU 闲置模式,基于函数计算低成本部署 Google Gemma 模型服务

阿里巴巴云原生

阿里云 云原生 函数计算

超越基础设施:深度探讨平台工程的关键支柱

SEAL安全

架构 基础设施 平台工程

npm是如何处理多版本依赖的?

伤感汤姆布利柏

得物布局构建耗时优化方案实践

得物技术

xml 前端

为了跳槽或提升自己,你会先学习哪一门编程语言?

小魏写代码

软件测试学习笔记丨服务端问题定位常用linux指令集合

测试人

Linux 软件测试

等保测评与信息安全管理体系认证的区别

行云管家

等保 等级保护 等保测评

面试八股文,自有其道理

老张

面试 专业能力

代码精简执行过程

京东科技开发者

一个数据库死锁竟然被测试发现了,这你敢信

京东科技开发者

带你走进 HarmonyOS:前端如何迎接新技术的到来

京东科技开发者

基于 K8s 容器集群的容灾架构与方案

阿里巴巴云原生

阿里云 Kubernetes 云原生

开放原子开源大赛—基于OpenHarmony的团结引擎应用开发赛正式启动!

OpenHarmony开发者

网络安全等级测评师考试培训可以参考哪些资料?

行云管家

等保 等级保护 等保测评师

迈出持续交付的第一步_DevOps & 平台工程_崔康_InfoQ精选文章