写点什么

Q​Club(北京)回顾——DevOps 与持续集成(含资料下载)

  • 2011-07-18
  • 本文字数:2156 字

    阅读完需:约 7 分钟

2011 年 7 月 15 日,InfoQ 线下活动 QClub 北京站活动,于周五晚在北京贝塔咖啡举办,本次活动有幸邀请到 ThoughtWorks 公司CTO Rebecca Parsons 演讲,演讲主题包含 DevOps Continues Delivery 两部分。

Rebecca 首先从软件交付的现状谈起,传统的软件交付周期分为开发、用户接受测试和部署等阶段。但是随着市场竞争的日益激烈,越来越多的公司需要加快部署和上线,从而提升其在市场中的地位和价值。于是,持续交付就应运而生了。

持续交付的目标是:“在任何时间只要点击按钮即可完成发布”。这样做的前提是需要将大部分的工作自动化,比如环境搭建、配置文件、编译、测试和部署等。

Rebecca 提到:

即使具备发布所有功能的能力,也不要一次都将它们发布。

开发环境的建设要尽可能的脚本化,其中包括:操作系统、系统软件、操作系统配置信息以及补丁的版本。配置管理要经常使用,此外要养成将代码及时提交到版本库的习惯,同时还要了解和熟悉不同应用间的版本关系。

在编译阶段,要尽可能采用持续集成,要讲究依赖包的管理,而且还要具备随时都可将代码从版本控制上获得并在本地运转的功能。 从数据库层面来讲,不可能把生产数据放到版本管理中,但是在测试环境中这点就不难做到,所以在测试环境安装时会变得很容易。

在测试阶段,各个级别的测试都应该尽可能的自动化,Rebecca 特别提到了性能测试,她认为性能测试应该在项目初始阶段就应该有,虽然这样做在项目初期并不是很明显,但是随着项目的展开,性能测试的持续执行,很快就能看出是在哪一次代码提交后产生的性能瓶颈。Rebecca 建议冒烟测试主要走功能的主线,这样在自动化后,就如同在系统内部形成一长安全网,这样才有可能做到持续的发布。 此外,虽然能够实现测试的自动化,但这并不意味着就可以忽略手工的探测性测试,自动化测试是最基础的保证,为的是修改关键依赖后,还具备持续发布的能力。因此,QA 或测试人员,手动测试以及探索性测试仍然在整个发布过程中占据相当重要的地位。

在部署阶段,从传统的开发角度上来讲,部署成功是件令人鼓舞的事情,但是持续交付的目标恰恰相反,持续交付的思想认为,部署成功应该变成一件很自然的事情,只有不停的做,才能够保证足够的正确性。再次 Rebecca 提醒大家注意两点:

  • 尽可能的把一切操作都脚本化、自动化,其中包括软件安装,这样才能够在开发、测试、预览环境上不停地去执行脚本。不同的是,配置参数的细微差别,只有做到了这样,最后部署到生产系统上时,脚本才会变得非常成熟和可靠。
  • 开发环境到生产环境的迁移要尽可能的自动化

持续交付的所带来的好处主要有两个层面:

部署层面:

  • 无压力部署
  • 速度快
  • 在工业发布时尽可能避免人为的错误
  • 使部署成为了一件常规的事情,而不是冒险的事情

维护层面:

如果有了这样的一个可将生产环境问题复现的过程,在发布时发现了问题,就会很容易在开发或测试环境中复现,即使这样做并不一定 100% 会有帮助,但这种方法的确是一个快速定位 BUG 的方法。

接下来 Rebecca 分享了 DevOps 上的一些实践经验。

Rebecca 提到,DevOps 不是技术层面的问题而是人和组织的问题,人员间的相互合作,会减少软件缺陷的出现,而且一旦在维护期间发现问题,运维团队还可以很快就能分辨出什么样的日志能够有效的记录问题,从而加快软件上线的时间,减低错误率,缩短问题修复时间,最终达到提高软件质量的目的。

在提到持续交付和 DevOps 的区别时,Rebecca 是这样回复的:

持续交付关注于开发流程和技术要提高的方面,DevOps 则是关于组织中人员架构和人员协作的问题。传统的团队,开发和运维是两个毫无关联的部门,这就导致运维人员非常痛苦。DevOps 就是要打掉组织中的这堵墙,在开发阶段就让运维团队融入进来,使开发和运维人员相互了解和合作,而且,运维人员还可提出意见供开发人员参考。

一些组织已经采取了精益运营(Lean Operation)的实践,运维团队也有了自己的故事墙和迭代计划,从而达到提高运维效率的目的。

此外,运维团队具有保护生产环境的职责,DevOps 的目的是增强沟通,互相理解。

最后,Rebecca 总结了如何使持续交付和 DevOps 变得可能:

  • 工作不是一两周就能做完的,而是一个长期艰苦的过程,每次迭代和尝试都是为了让开发变得简单,这就要求至少第一要有版本管理,第二要有持续集成。
  • 所有的工作尽可能自动化起来,让脚本用起来。
  • 在选择第三方软件包及应用时,应该首先看第三方包是否支持脚本的启动和关闭,因为有些软件和应用不支持脚本,只提供在界面中操作。因此,这类软件的被可自动化程度是非常低的。
  • 应尽可能保证所有环境是相似的。
  • 运维阶段在处理紧急事件时,最快的当属直接在生产环境修改代码,但是这样的方法应当尽量避免。如果万不得已真的做了,也要尽快使代码处于版本控制之下。总之,所有的配置项和代码都应当从版本管理系统中获取。

在开放讨论环节,Rebecca 回答了到场人员的提问:

问:冒烟测试、性能测试、回归测试之间应当是怎样的一个顺序?

答:当有了第一次发布的时候,一旦遇到新的功能或 Bug 要及时上线,第一应当是需求,第二是性能测试,最后是冒烟测试(也可以和回归测试和冒烟测试结合起来)

相关资料下载

  1. 本次活动演讲稿下载: Rebecca 谈 DevOps 和持续交付实践
  2. 本次活动精彩照片请参见:本次活动照片
  3. DevOps: Friction-Free Collaboration for Development & Operations (需注册方可观看)
2011-07-18 05:263372
用户头像

发布了 156 篇内容, 共 51.6 次阅读, 收获喜欢 7 次。

关注

评论

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

干货|为什么说开源基金会的选择很关键?(下)

Orillusion

开源 WebGL 元宇宙 webgpu web3d

盘点适合中小企业的文档管理工具

Baklib

SpringCloud 注册中心(Nacos)快速入门

nacos SpringCould 9月月更

高性能对象池实现

C++后台开发

后端开发 高性能服务器 内存池 对象池 C++开发

了解数字机器人最新发展动向,不要错过华为数字机器人秋季发布会​

王吉伟频道

RPA 机器人流程自动化 智慧政务 机器人开发 华为数字机器人

数字藏品系统开发,NFT数字藏品开发说明

开源直播系统源码

软件开发 NFT 数字藏品 数字藏品软件开发 数字藏品系统

预训练模型在金融 NLP场景下的应用

澜舟孟子开源社区

人工智能 自然语言处理 大规模预训练模型

在数字时代,如何选择企业的知识管理软件

Baklib

【8.26-9.2】写作社区精彩技术博文回顾

InfoQ写作社区官方

优质创作周报

到底什么样的数字化才是企业需要的?用2个数字化案例告诉你

优秀

数字化转型

浅谈 SAP ABAP 系统里的 ALV 输出方式实现

汪子熙

前端开发 SAP abap 9月月更 ALV

2022 云原生编程挑战赛启动!看导师如何拆解边缘容器赛题?

阿里巴巴中间件

阿里云 云原生编程挑战赛

当你的老板站在你背后,看你处理故障......

嘉为蓝鲸

运维 IT 故障 上班

优秀的产品手册有助于留住你的客户

Baklib

Apache Kyuubi 在小米大数据平台的应用实践

网易数帆

Java hive Apache Spark Thrift kerberos

设计模式的艺术 第二十一章备忘录设计模式练习(设计一款RPG网游,为了给玩家提供更多方便,在游戏过程中可以设置一个恢复点,用于保存当前的游戏场景。如果在后续游戏过程中玩家角色“不幸牺牲”,可以返回到先前保存的场景,从所设恢复点开始重新游戏)

代廉洁

设计模式的艺术

极狐GitLab Helm Chart 已上线,玩转云原生极狐GitLab!

极狐GitLab

DevOps gitlab 云原生 Helm Kubernetes, 云原生, eBPF

Java编程之语法结构

魏铁锤

数据赋能智慧重庆,巴适得很!

云计算

C#/VB.NET 设置Word文档段落缩进

在下毛毛雨

C# .net word文档 段落缩进

使用FeatureAbility模块启动其他Ability

白晓明

OpenHarmony应用开发 FeatureAbility

​孟子轻量化技术迈上新台阶:登顶 ZeroCLUE 和 FewCLUE 榜单,已开源并提供 SDK

澜舟孟子开源社区

人工智能 自然语言处理 后端 大规模预训练模型

主流定时任务解决方案全横评

阿里巴巴中间件

阿里云 云原生 定时任务

基于预训练模型的金融事件分析及应用

澜舟孟子开源社区

人工智能 自然语言处理 金融科技 大规模预训练模型

落地好OKR的8大关键步骤及常用辅助工具

爱吃小舅的鱼

OKR

百余位顶级投资人齐聚无锡,DEMO CHINA创新中国峰会即将揭幕

创业邦

搭建自己的以图搜图系统 (一):10 行代码搞定以图搜图

Zilliz

Python 机器学习 深度学习 相似度分析 以图搜图

中移链DDC-SDK技术对接全流程(一)

BSN研习社

建木持续集成平台v2.5.4发布

Jianmu

DevOps 持续集成 gitops 持续部署 Gitea

重拾面向对象软件设计

阿里巴巴中间件

阿里云 技术 中间件 技术代码

看了深入Java虚拟机:JVMG1GC的算法与实现文档,我悟了

程序知音

Java JVM 垃圾回收 java架构 后端技术

Q​Club(北京)回顾——DevOps与持续集成(含资料下载)_Java_贾国清_InfoQ精选文章