访谈:关于持续敏捷交付与服务矩阵

简介:

Andy Singleton所著的《Unblock! A Guide to the New Continuous Agile》一书为基于云的分布式开发提供了持续交付的思路和实践。书中讲述了如何构建、测试、频繁发布代码,以及如何让处于持续交付环境中的管理团队、产品和企业做到持续敏捷。

关于什么是持续敏捷、它和Scrum有何不同、如何与用户故事负责人一起使用服务矩阵扩展软件开发,以及为什么要在持续改进中使用快乐调查等话题,InfoQ采访了Andy。

InfoQ:为什么你会写一本关于新的持续敏捷的书?

Andy:因为这是爆炸性的材料,可以挽救读者于陈旧乏味的Scrum循环之中。世界上有成千上万的最好的软件工程师和技术公司正在思考,如何使用云计算构建具备惊人速度和规模的软件,我的这本书就是一探此间的。在Assembla,我和分布式的团队共事,有过万的团队使用我们的在线工作空间,我自己管一个来自10个国家的30人的团队。对于分布式团队来说Scrum的执行方式并不好,因为要开太多的会,所以我尝试着试用替代方案。大约两年前,我将Assembla从两周发布变为持续交付。这极大地减轻了我们的压力,适时地隐藏和打开某些功能还帮我们提高了产品质量。我们所使用的测试和合并代码的模式和Jez Humble所写的那本《Continuous Delivery》书上所述的不一样,更接近于其他SaaS公司的标准,所以我开始画代码流程图,还为此撰写博客。随着开发人员的不断成长,又反过来迫使我加快和完善产品的管理。所以持续的、指标为导向的产品管理成为了另一个研究领域。最后,我开始和更大更牛的团队讨论他们的持续交付和持续敏捷。和Google的一些人还有Hubspot的副总裁聊完,我最大的启示是Google有1万5千多工程师,但是他们却使用着类似的执行过程,我称其为MAXOS。这是在数百或上千的并行组件上做持续交付,是云计算革命的重要组成部分。

InfoQ:这本书名是"Unblock! A Guide to the New Continuous Agile"。你想开启(unblock)什么?

Andy:如果你不能发布代码,那么你的路就不会通畅。我们试图打开这种障碍。这会让你的开发更有可靠性和可扩展性,因为团队或者功能的问题阻碍不了其他的人。InfoQ:能分享下你是如何看待新的持续敏捷的吗?比如和频繁发布或者持续交付有什么不同?

Andy:持续交付是持续敏捷的最重要的基石。持续交付是构建、测试和发布代码的方法。持续敏捷是基于持续交付环境中,管理团队、产品和企业的策略。所以,我们开始从持续交付代码入手,然后通过加入团队、产品和企业相关的策略构建持续敏捷。

InfoQ:新的持续敏捷和Scrum最大的不同是什么,他们可以用到一起吗?

Andy:所有的敏捷方法有着相似的策略,如用户故事、频繁发布和提高过程的回顾。然而,Scrum把大家锁定在同一个周期性的发布循环里,并迫使他们在“多功能的团队”中“自我组织” ,然后为摆脱这个框框而奋战。持续敏捷是一个较新的、更简单和更可扩展的过程,让每个人,尤其是技术带头人和产品经理,用更少的仪式以最佳的速度前进。幸运的是,它很容易从Scrum转型到scrumban、看板和持续敏捷,只是去掉Scrum多余的仪式、加入一些测试层,变得更精益。我已将这个进程描绘在这本书里。

从根本上说,敏捷过程中的多次发布比瀑布过程中的一次大发布更好,因为越多的发布,带来越多的实践。基于这个论点,发布越频繁,生产率越高、压力越低。在实践中,如果允许开发者为每次变更做发布,他们将越来越频繁地发布,比Scrum团队更频繁。这使得发布更小,更容易调试。

在一些基本理念上,新的持续敏捷与Scrum就不一样。 Scrum是一套团队管理的建议。事事都与团队挂钩。持续交付和持续敏捷更看重使用“技术规范”(构建、测试、部署、呈现和度量软件的运转)。使用云计算,我们会有更多、更大的服务器来采集和挖掘数据,用以提高个人的生产力。来自于提升团队管理的收益是有限的,而来自于自动化的收益是无限的。

InfoQ:书中描述了“服务矩阵”或“MAXOS”。你能解释一下它是什么,以及公司该如何使用它来扩展软件开发吗?

Andy:MAXOS是服务矩阵(MAtriX Of Services)的缩写。在MAXOS架构中,软件拆分成多个Web服务,每个服务可以分配给一个开发团队做持续交付。所以,数百或上千个组件可以并行地做持续交付。 MAXOS解决了一些巨大的、代价高昂的问题。那么你就可以管理大型系统了,因为你没必要搞清楚项目计划中的全部依赖。相反,使用持续测试和集成系统,可以找到相关服务的依赖问题,并通知责任相关的团队。这种方法的天才之处在于测试机实际上可以代替很多管理者。这是革命性的、令人兴奋的变化。

我称之为“MAXOS”是为了突出它与SAFe(Dean Leffingwell提出的可缩放敏捷框架)的不同。SAFe很幼稚、用非自动化的方法在Scrum团队之上堆砌管理,没什么技术含量的公司才这么做呢。他们不能堆砌管理,得自动化起来。

InfoQ:能说说持续敏捷交付的好处吗?

Andy:持续敏捷消除了发布的压力或延期发布的问题。对于经常饱受发版压力折磨的开发团队来说,这或许是最大的好处。对于挣扎于延期发布的管理者来说,也是件好事。我们一直处于发布状态,这就变得容易了。我讲过,在恰当的时候打开新功能开关,把精力放在最有价值的功能上去。

当你开始启动精益或者开发精益产品,亦或频繁度量和调整营销过程,你将需要持续敏捷。持续敏捷以更快的交付和适应性为竞争提供了胜机。如果竞争对手用更快的开发周期超过了你,那么持续敏捷能帮助你赶上他们。

如果你正在构建具有很多组件的大型系统 ,持续敏捷同样非常重要。就像《人月神话》中所说的,在过去,这么做具有极高的成本和风险。硅谷的大公司使用持续敏捷过程(就是我说的矩阵服务——MAXOS)解决了这个问题。

InfoQ:你在书中说,“代码审查是获取测试最有效的方法”。能解释一下这是什么意思吗?

Andy:持续交付需要自动化测试。在发布一个变更之前,你要通过一系列的自动化测试层去运行这个变更。开发者必须为此写测试。一些开发经理试图威逼他们的开发人员去写测试。这种方式是没用的。强制性的代码审查是最可靠的获取测试方法。你可以让评审人员检查自动化测试,这些测试应该和新功能或者缺陷的修改一同提供。如果相关的自动化测试没有覆盖这次变更,评审人员可以拒绝并退回提交。这样的方式总会取得立竿见影的效果。

我还注意到,在成功的持续交付工作中,开发者决定了发布。开发者必须测试变更,然后按下按钮启动发布过程。他们不能只是将变更发给质量保障的人并期待他们去完成测试、做出发布决定。这种责任制度让开发者有了强大的动力去构建良好的测试和测试框架。这是在代码评审之上,为良好的自动化测试的提供了第二层激励。

InfoQ:在Assembla,你用故事负责人代替产品负责人。你为什么采取这种方式,两者有何不同?

Andy:故事负责人不能只是规划功能,然后把它丢给设计和开发就不管了。故事负责人得和开发人员一起完成设计、beta测试、推出新功能和度量反响。工作变多了,但功能变好了。我觉得为了争取实现更好的功能,以及更加重视每个功能的使用数据,故事负责人是必要的角色。

InfoQ:能否阐述一下团队如何利用快乐调查持续提高吗?你提到这比回顾更好,能解释一下为什么吗?

Andy:我们希望可以不断地改进过程。回顾会议旨在帮助过程改进,通过提问:“最近发布的过程中哪些做得很好?哪些做得不行?未来的几个星期我们应该怎么改进?”这是伟大的理论,但在实践中,它往往令人乏味和痛苦。我不知道为什么。从Henrik Kniberg和Jeff Sutherland那我们学到了“快乐调查”的格式,这让我们拿到更好的效果。它的问题略有不同:“现在感觉哪里做得最好?现在感觉哪里做得最差?改进什么能使你快乐起来?”你会想到这变成了无关紧要的个人问题,但在实践中,它会指引提高生产力的实际行动。而且,我们可以在任何时间做这件事情,无需按照发布计划来。

目录
相关文章
|
5月前
|
人工智能 IDE 开发工具
寻找Cursor的替代品:10款AI编程工具深度评测与推荐·优雅草卓伊凡
寻找Cursor的替代品:10款AI编程工具深度评测与推荐·优雅草卓伊凡
3774 18
寻找Cursor的替代品:10款AI编程工具深度评测与推荐·优雅草卓伊凡
|
监控 关系型数据库 MySQL
深入了解MySQL主从复制:构建高效稳定的数据同步架构
深入了解MySQL主从复制:构建高效稳定的数据同步架构
322 1
|
存储 弹性计算 固态存储
阿里云服务器收费标准租用价格及价格计算器使用参考
阿里云服务器租用价格参考,不同时期阿里云服务器的租用价格不同,2024年阿里云多款云服务器的收费标准都做了降价调整,最高降幅达93%,同时,阿里云还推出了多款价格比较实惠的云服务器,现在购买阿里云轻量应用服务器2核2G3M带宽82元1年,经济型e实例ECS云服务器2核2G3M带宽新购和续费优惠价99元1年,通用算力型u1实例2核4G5M带宽新购和续费优惠价199元1年,4核8G云服务器955元1年,本文为大家介绍一下阿里云服务器的最新收费标准租用价格以及使用价格计算器查询云服务器价格的方法。
|
开发工具 Python
文档解析(大模型版)之初体验
该文档介绍如何使用阿里云文档智能解析服务,包括样式效果、在线文档和Python SDK调用方法。提供了处理本地及在线文件的具体示例代码,并指导如何安装依赖包、配置身份认证以及设置超时参数等关键步骤。
|
机器学习/深度学习 安全 数据挖掘
安全地运行 Jupyter 服务
【8月更文第29天】Jupyter Notebook 是一种流行的交互式计算环境,广泛应用于数据分析、机器学习等领域。然而,随着 Jupyter 服务越来越多地被部署在网络环境中,安全问题变得日益重要。本文将介绍一些最佳实践,帮助您保护 Jupyter 服务器免受攻击和数据泄露的风险。
622 0
|
存储 算法 API
文档解析(大模型版)能力对比测评
文档解析(大模型版)能力对比测评
1107 38
|
JSON 关系型数据库 大数据
大数据-业务数据采集-FlinkCDC
大数据-业务数据采集-FlinkCDC
242 1
|
缓存 关系型数据库 MySQL
MySQL慢查询优化
通过上述方法综合施策,可以显著提升MySQL数据库的查询性能,降低延迟,增强应用系统的整体响应能力。实践中,优化工作是一个持续迭代的过程,需要结合具体应用场景不断调整策略。
820 1
|
11月前
|
缓存 NoSQL 中间件
redis高并发缓存中间件总结!
本文档详细介绍了高并发缓存中间件Redis的原理、高级操作及其在电商架构中的应用。通过阿里云的角度,分析了Redis与架构的关系,并展示了无Redis和使用Redis缓存的架构图。文档还涵盖了Redis的基本特性、应用场景、安装部署步骤、配置文件详解、启动和关闭方法、systemctl管理脚本的生成以及日志警告处理等内容。适合初学者和有一定经验的技术人员参考学习。
739 7
|
SQL 存储 移动开发
HTML5 Web SQL 数据库详解
Web SQL 数据库是 HTML5 中的一种本地存储技术,允许在浏览器中使用 SQL 语言操作本地数据,支持离线访问和事务处理,适用于缓存数据和小型应用。然而,其存储容量有限且仅部分现代浏览器支持,标准已不再积极维护,未来可能被 IndexedDB 和 localStorage 等技术取代。使用时需谨慎考虑兼容性和发展前景。