最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

《A Practical Guide to Continuous Delivery》作者访谈录

  • 2018-01-02
  • 本文字数:3379 字

    阅读完需:约 11 分钟

本文要点

  • 持续交付(CD,Continuous Delivery)带来了快速的反馈循环,从而产生更简单的技术解决方案,它能得到更好的容错性,并且能够得到更简单的应用程序架构。
  • 对于新的软件项目,持续交付能够更快地实现增值,而现有项目的价值则需要以每一个案例为基础。
  • 在理想情况下,持续交付应该与测试周期的其余部分进行集成。负载测试、容量测试以及金丝雀部署(canary deployment)都完全适合持续交付管道,这使得人们可以把注意力集中放在那些可能难以量化的边缘案例和验收测试上。
  • 回滚部署、金丝雀部署以及蓝绿部署(blue-green deployments)变得越来越复杂,而那些由较小的、模块化的组件构成的系统更易于利用持续交付以及更便于集成。反之亦然,成功的持续交付就能够带来以这种方式设计的系统。

InfoQ:非常感谢您能接受 InfoQ 的采访。您能简单的介绍下自己吗?介绍下您在持续交付方面的背景以及您为什么要写这本书呢?

我的名字是 Eberhard Wolff。我是德国公司 innoQ 的一员。我们所做的行业是软件项目。我的工作重心不在于做项目,而是在于咨询和培训。

我写这本书的原因是,我认为在开发软件的时候,持续交付是提高生产力和提高软件质量的最重要的工具。然而,人们却常常为了实现持续交付而焦头烂额。这本书给持续交付实践提供了一个非常实用的指南,其中涵盖了许多具体的技术案例。

这本书有助于获得技术上的实际经验,然后开始实现持续交付。这本书还附带了一个可执行的应用程序示例,其中包括了持续交付中管道的每个步骤的实现。读者可以安装这个应用程序来获得一些有关技术的经验。

InfoQ:组织或项目团队需要做什么样的分析才能决定什么时候实现持续交付以及在持续交付上需要实现什么呢?以及有哪些影响因素呢?

持续交付最明显和最原始的目标是改善新特性推向市场的时间,从而获得更好的业务成果。但是持续交付还能带来更多好处:通过可重复的结果进行不断地测试,用这种高度的自动化测试提高了软件的质量。更频繁的部署和自动化的部署降低了部署的风险。这对软件开发以及 IT 都有着十分积极的影响。这些好处就是去实现持续部署最好的理由。

你能通过持续交付走多远取决于对业务、软件开发、运维以及质量评估(QA)的投入。如果对业务的投入不够,你就无法得到更好的推向市场的时机。如果对于运维的投入不够,你就没办法扩展你的自动化管道使其直接投入生产。即便是你实现了一个不完全的持续交付也是值得的,当然了它也会不断完善。

InfoQ:您能举一些具体的例子吗?谈谈您所看到的已经实现了的持续交付或者是集成到应用程序架构中的持续交付。它们都是什么样的?有哪些注意事项呢?

人们总是觉得持续交付是有关于自动化集成的。但是持续交付的核心其实是测试和可靠性。我认为你永远不会进行非常多次的手工测试,当然了,手工测试也不会拥有极高的可靠性。

对架构的影响是将其分成了单独的可部署模块:微服务。持续交付是采用微服务的一个重要驱动因素。这就是我现在主要关注架构和微服务的原因,也是我为什么写了一本关于微服务的书的原因。但是通常情况下,微服务体系结构设计的方式是,最终仍然需要将所有东西都部署到一起。这样做的话是无法利用持续交付的优势的。

因此,我认为问题的关键不在于过分强调持续交付,而在于没有实现目标,或者只关注自动化部署,而不把测试考虑在内。

InfoQ:您能详细谈谈持续交付对应用程序测试、对基础架构的测试以及对软件开发生命周期都有哪些影响吗?

持续交付把重心放到了测试的自动化上。即便存在众所周知的困难,验收测试也应该是自动化的。这会使得测试的速度更快。因为持续交付的管道会频繁地被执行,因此许多很小的改动都会得到测试。这使得测试更加容易,并且能够提供更快的反馈。因此,持续交付不仅提高了对测试的关注程度,还改进了测试的方法。

InfoQ:为什么验收测试如此重要呢?

验收测试是为了使客户能够接受这个软件。客户通常会对软件进行手工测试。这种手工测试可能会持续几天甚至几周的时间,而且手工测试很容易出错。因此验收测试为软件的改进提供了巨大的潜力。如果这些测试是自动化的,那么整个流程就会更快、更可靠。

然而,验收测试通常情况下很难自动化,因为客户必须要理解并信任自动化的验收测试,否则他们将会继续他们的手工测试。这本书向大家展示了一种技术,它实现了行为驱动设计(behavior-driven design)用以改进客户进行验收测试时的协作。书中还展示了一个基于 UI 的测试作为替代。最后,测试的重点应该更多地放在协作和信任上,而不是在技术上。

InfoQ:您能谈谈探索性测试、金丝雀(canary)以及容量测试吗?因为它们都与持续交付有关。

探索性测试基本上与持续交付平台分离了。例如,对一个软件的注册过程做可用性测试或性能测试。测试团队会通过手工的探索性测试来进行测试。由于现在大多数的测试都是自动化的,测试人员就可以将注意力集中在这些测试上。探索性测试并不能阻止软件的发布,它的目的是为了完善软件。

金丝雀发布(Canary Releasing)的意思是该软件仅安装在集群中的几个服务器上。只有在这些服务器上能够正常工作之后,它才会被安装到其他服务器上。这通常是通过自动化部署实现的。但是,金丝雀部署(canary-deployment)是一种部署模式,它可以在部署过程中以不同的方式进行实现。在部署过程中,金丝雀发布能够降低风险。如果部署出现错误,只有少数服务器需要回滚。

容量测试可以暴露出应用程序中存在的性能问题。通常情况下,测试只是在逻辑上发现问题。但是性能问题也可能使在生产环境中运行软件变得不可能。这只是持续交付管道的另一个阶段。

然而,容量测试在测试环境中运行,而测试环境通常不像生产环境那样强大,而且通常只包含测试数据。因此,当在容量测试阶段中出现性能问题时,就应该实现像金丝雀部署那样的方法。

InfoQ:您能谈谈负载测试框架吗?因为它们也与持续交付有关。还有,您能谈谈持续交付能给目前已经很好用的负载测试框架带来哪些独特的价值吗?

这本书对 Gatling 进行了介绍。Gatling 使用 DSL 来编写测试。因此,它支持将所有步骤自动化至生产的目标。Gatling 可以通过使用分布式配置来确保生成足够大的负载。

持续交付使得负载测试不再仅仅关注于性能,而且还确保了在性能优化过程中,通过执行包括验收测试在内的完整的测试套件使得性能优化过程不会出现错误。

此外,持续交付还引入了基础架构自动化,并且它能使得为容量测试配置环境更加容易。特别是对于容量测试来说,对环境的配置可能会很复杂,因为容量测试耗时很长。在多个环境中并行地运行测试可能会有助于解决这个问题。

InfoQ:持续交付平台具有哪些缺陷呢?有哪些缺陷会导致开发人员生产力的降低呢?

根据持续交付的定义,它是跨组织的:它跨越了产品开发和软件工程团队、运维功能团队以及质量评估(QA)团队。在所有这些部门之间进行协作通常是很困难的。然而,我认为还有很多东西值得我们去做。即使在有限的协作条件下,你仍然可以改进自动化和测试,然后获得更好的软件质量。你可以分析软件是如何被投入到生产中去的,并在最需要投资的地方进行投资。除了能够提高生产力,你还能获得更好的软件质量。分析你们当前的流程并找出如何改进它们是一个很好的主意。这并不一定是一项战略投资,也可以是一些小的改进。

InfoQ:在不使用持续交付工具的情况下,软件工程师们需要构建什么来实现蓝绿部署(blue-green deployments)和回滚呢?您能不能举几个例子来说明下持续交付在启用这些功能方面的优势吗?

蓝绿部署和回滚是部署的基础架构的特性。Kubernetes 和 Paas(例如 Cloud Foundry)支持这一点。蓝绿部署和回滚也取决于被部署软件的大小。基本上它们不可能适用于非常庞大的系统。因此,使用蓝绿部署是另一个将系统分割成小单元的原因,这些小单元可以单独进行开发——这就是微服务。

关于作者

Eberhard Wolff 拥有超过 15 年的架构和咨询经验,专注在业务和技术之间的领域。他在德国 innoQ 咨询公司工作。作为一个演讲者,他在很多国际性会议上呈现演讲。作为一个作者,他发表了 100 多篇文章,并出版了微服务相关书籍。他最新的著作是一本有关微服务的书。他专注于现代架构技术,包括云计算、持续集成、DevOps、微服务或 NoSQL。他还是《 Microservices: Flexible Software Architecture 》一书的作者。

查看英文原文: Q&A With Eberhard Wolff On the Book “A Practical Guide to Continuous Delivery”

2018-01-02 17:332632

评论

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

单元测试:GTest之事件机制(一)

正向成长

测试 测试 单元测试 GTest

全民K歌跨端体系建设

Edwiin

跨端 hippy 全民K歌

面向大规模商业系统的数据库设计和实践

百度Geek说

数据库 后端 数据库设计 数字化

太可惜了,四面字节跳动,我的offer竟被一道“算法题”给拦截了

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

太为难我了,阿里面试了7轮(5年经验,拿下P7岗offer)

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

唯品会三年,我只做了5件事,如今跳槽天猫拿下offer(Java岗)

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

入职字节跳动那一天,我哭了(蘑菇街被裁,奋战7个月拿下offer)

公众号_愿天堂没有BUG

现成FIL分币系统介绍|FIL分币平台搭建

Geek_23f0c3

Filecoin fil挖矿 FIL挖矿分币系统

针对于香港服务器快速威胁检测是加强安全的关键

九河云安全

直播回顾 | 为什么在开发流程中应用静态代码分析工具?

鉴释

软件开发生命周期 在线研讨会 静态代码分析

亏损、退市、卖身...区块链如何挽救影视行业?

旺链科技

区块链 版权保护 影视行业

价值连城 神经网络- 吴恩达Andrew Ng Coursera Neural Networks and Deep Learning John 易筋 ARTS 打卡 Week 58

John(易筋)

ARTS 打卡计划

2021 营销数字化的下一个站点

人称T客

云原生 | 混沌工程工具 ChaosBlade Operator 入门篇

RadonDB

混沌工程 RadonDB KubeSphere

时序数据库永远的难关 — 时间线膨胀(高基数 Cardinality)问题的解决方案

阿里巴巴中间件

云计算 阿里云 云原生 中间件 时序数据库

关于测试的三个关键问题

QualityFocus

测试 质量 测试文化 测试落地

ELK原来这么简单!《零基础(1)

Java 程序员 后端

难以置信!一篇文章就梳理清楚了 Python OpenCV 的知识体系

梦想橡皮擦

8月日更

Camtasia添加弹题交互教程

淋雨

视频剪辑 Camtasia 录屏软件

香港服务器弹性是企业数字化转型的一个关键方面

九河云安全

亚信科技AntDB数据库与中科可控、海光公司完成产品兼容认证

亚信AntDB数据库

服务器 国产化 国产芯片 国产数据库 产品兼容性互认

一文带你认识LPWA通信技术

华为云开发者联盟

物联网 通信 NB-IoT LPWA SigFox

IM之Qunar实现

Qunar技术沙龙

架构 IM 办公 客服 消息

【“互联网+”大赛华为云赛道】API命题攻略:厘清三步解题思路,用好开发工具

华为云开发者联盟

API 华为云 modelarts 互联网+ API Explorer

在 Dubbo3.0 上服务治理的实践

阿里巴巴中间件

云计算 Serverless 云原生 dubbo 中间件

香港云服务器的火爆市场,下一个未来发展将会怎么改变?

九河云安全

使用 PolarDB 和 ECS 搭建门户网站

若尘

阿里云 Polar 8月日更

香港云服务器的性能提升对行业服务带来显著动力

九河云安全

沙场秋点兵——MySQL容器化性能测试对比

焱融科技

MySQL 云计算 容器 高性能 分布式存储

iOS官方瘦身方案ODR(一):初见On-Demand Resources

LabLawliet

ios 独立开发者 优化技巧 Apple Developer 8月日更

真正决定你成败的,是时间管理!

博文视点Broadview

《A Practical Guide to Continuous Delivery》作者访谈录_Book Review_Dylan Raithel_InfoQ精选文章