写点什么

迈出持续交付的第一步

  • 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:022018
用户头像

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

关注

评论

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

算力挖矿系统开发技术服务搭建

V\TG【ch3nguang】

专为 Rust 编程语言打造的集成开发环境 (IDE):RustRover 2024

理理

lg-soar:助力开发者腾飞的利器

六哥是全栈

ts Vue 3 脚手架 #java #开源

Macs Fan Control Pro 精准调控Mac电脑风扇转速、有效降温

理理

Mac动态壁纸Dynamic Wallpaper for Mac

Mac相关知识分享

动态壁纸 mac壁纸

Rust 编程语言集成开发环境(IDE)RustRover 2024 for mac

Mac相关知识分享

Mac软件

JetBrains DataSpell for macPython 语言的集成开发环境(IDE)

Mac相关知识分享

Mac软件 集成开发 软件下载

秒合约期权交易系统开发部署搭建设计

V\TG【ch3nguang】

秒合约系统开发

Photoshop2024最新版下载安装

理理

效率跃升16倍!火山引擎ByteHouse助力销售数据平台复杂查询效率大幅提高

字节跳动数据平台

数据库 大数据 Clickhouse 云数仓

Tampermonkey For Mac油猴Safari浏览器插件

Mac相关知识分享

浏览器插件

VMware ESXi 7.0U3q macOS Unlocker 标准版和厂商定制版更新 OEM BIOS 2.7 支持 Windows Server 2025

sysin

macos esxi 2025 OEM BIOS

Microsoft 365:全能办公套件,激发无限创造力,提升团队协作新高度

理理

直播GMV破千万,朱时茂在百度优选开启直播主场

Geek_2d6073

鸿蒙跨端实践-ArkTS和CAPI的混合开发实现

京东科技开发者

推荐一个免费通配符证书平台:SRE运维的选择

外滩运维专家

证书监控 免费SSL证书 免费通配符 免费证书 免费https

RAG效果优化:高质量文档解析详解

阿里云大数据AI技术

人工智能 智能搜索 rag 文档解析 智能开放搜索

使用JavaScript读取手机联系人列表

南城FE

JavaScript 前端

Axure RP 9 for Mac完美破解版 Axure RP 9永久授权码

理理

专业视频编辑软件Final Cut Pro for Mac

Mac相关知识分享

fcpx

数造科技荣登“科创杯”领奖台,开启数据驱动新篇章!

数造万象

基础设施 数据治理 科技 科创中国 大数据、

VMware ESXi 6.7U3u macOS Unlocker 标准版和厂商定制版更新 OEM BIOS 2.7 支持 Windows Server 2025

sysin

esxi 2025 OEM BIOS unlocker

苹果思维导图 iMap Builder for Mac v11.1.15激活版

理理

微软智能办公软件 Microsoft To-Do

理理

AnyGo for Mac中文破解版:GPS位置模拟

理理

VJ音视频软件 Resolume Arena 7 含激活补丁

理理

IAM的“账号委托”:给权限不给账号,这是什么神操作?

芯盾时代

权限管理 iam 统一身份管理平台

【Tomcat源码分析】生命周期机制 Lifecycle

派大星

tomcat源码解读

Auto Mouse Click 高效稳定的鼠标连点器软件

理理

CAD2025下载 Autodesk AutoCAD 2025完美解锁版 win&mac

理理

写 TDengine,赢 AirPods!

TDengine

开源 AI 技术 征文 数据库·

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