写点什么

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

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

关注

评论

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

机器学习入门:多变量线性回归

华为云开发者联盟

机器学习 多变量线性回归

「终!」☕️【Java技术之旅】带你进入String类的易错点和底层本质分析!

码界西柚

Java 字符串 字符串常量池 6月日更

Java 并发编程—— Executors 分析应用

Antway

6月日更

技术干货 | 如何实现对动态PPT的云端录制?

ZEGO即构

音视频 WebRTC RTC 即构 动态PPT录制

Python——列表元素的增删改

在即

6月日更

产品策略闭环是个什么环?

万事ONES

项目管理 研发管理 ONES 产品策略

【Flutter 专题】107 图解自定义 ACEPageMenu 滑动菜单 (二)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 6月日更

ONES CTO 冯斌 | 大型团队敏捷项目管理实践与思考

万事ONES

项目管理 研发管理 团队协作 ONES 研发工具

我不服!这开源项目居然才888个星!?

why技术

Java

助力碳中和,EMQ与SAP共同构建绿色IoT解决方案

EMQ映云科技

开源 5G 碳中和 SAP 碳达峰

缓存与数据库的双写一致性

leonsh

MySQL redis 缓存

Java字符串池、常量池、intern的爱恨纠葛

叫我阿柒啊

Java 常量池 intern 字符串常量池

如何解决回归任务数据不均衡的问题?

华为云开发者联盟

深度学习 模型 标签 数据不平衡 DIR

GrowingIO 增长平台产研项目管理实践

GrowingIO技术专栏

项目管理 程序员 Jira growingio

为什么聪明的程序员会写出糟糕的代码

实力程序员

和12岁小同志搞创客开发:如何选择合适的控制器?

不脱发的程序猿

DIY 创客开发 如何选择合适的控制器?

和12岁小同志搞创客开发:拿到一款控制器,要怎么分析?

不脱发的程序猿

DIY 创客开发 怎么分析控制器?

技术实践丨体验量子神经网络在自然语言处理中的应用

华为云开发者联盟

自然语言处理 量子 量子神经网络 量子模拟

来自 Apache APISIX committer 的经验分享 —— 编程之夏专访

API7.ai 技术团队

后端 技术人 API 网关

Dokcer Compose部署Nebula Graph配置文件

阿呆

配置信息

相约厦门!HarmonyOS Connect伙伴峰会将于6月17日举办

科技汇

从单体系统到微服务

escray

学习 极客时间 朱赟的技术管理课 6月日更

【布道API】API设计应该了解的HTTP方法和特性

devpoint

RESTful HTTP协议 6月日更

WorkPlus Lite 企业级移动平台

BeeWorks

项目管理100问 | 研发团队如何实现无缝协作

万事ONES

项目管理 ONES Project 研发团队

WorkPlus私有化「数智融合」移动平台

BeeWorks

云小课 | 华为云KYON之私网NAT网关

华为云开发者联盟

网关 华为云 KYON企业级云网络 私网NAT网关 重叠组网

可视化及时把控营运状况,助力管理效率提升80%

一只数据鲸鱼

数据可视化 智慧城市 智慧园区 三维可视化 智慧楼宇

【FlinkSQL】Flink SQL Query 语法(二)

Alex🐒

flink FlinkSQL flink1.13

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