BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

百度技术沙龙第19期回顾:DevOps,全功能交付团队(含资料下载)

| 作者 贾国清 关注 0 他的粉丝 发布于 2011年11月1日. 估计阅读时间: 9 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

在10月29日由百度主办、InfoQ策划组织实施的第19期百度技术沙龙活动上,来自百度项目管理部高级架构师@乔梁、ThoughtWorks咨询师@冯智超分别分享了各自在持续交付领域所取得的成果及经验,话题涉及百度在持续交付及DevOps上的经验分享,以及使用云计算和虚拟化技术实施持续交付等。本文将对他们各自的分享做下简单的回顾,同时提供相关资料的下载。

主题一:持续交付的魅力演讲稿下载

来自百度项目管理部的乔梁第一个为大家分享,分别从版本发布、开发模式、测试、部署等角度对比了百度在实施持续集成、持续交付前后的变化:

  1. 由3个月的大版本发布转变为每三周就有一个小版本发布
  2. 紧急修复的情况也大量减少
  3. 紧急需求也由以前的数量,降低到现在没有紧急需求
  4. 持续继承前的多分支并行也转变为现在的主干开发(只在发布时拉分支)
  5. 以前的手工测试、手动部署现在也转变为自动化实现

主要的思想是“一切皆版本控制”,包括应用配置信息、环境配置信息、数据信息、环境标准化以及单一部署脚本等。同时要有共同的目标,通过频繁、高效地沟通,来保障产品的质量。接下来乔梁分享了项目实施中的一些体会:

  • 软件的发布过程必须是可重复、可信赖的
  • 把几乎所有环节都做成自动化
  • 把所有内容都纳入版本控制
  • 让痛苦提前,并不断练习
  • 内建质量
  • 完成”就意味着“已发布
  • 所有人对交付负责
  • 持续改进,需要耐心
  • 只构建一次二进制包
  • 在每个环境上都使用相同的方式部署
  • 对部署结果进行冒烟测试
  • 每种部署环境都应该尽可能相似
  • 任何地方出现失败,都要立刻停工

然后介绍了DevOps,他引用了Wiki上对于DevOps的概念:

DevOps是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。

最后乔梁还强调,DevOps是文化和工具的集合。并推荐了一些常用的自动化工具:环境设置工具(Puppet、Chef、ControlTier等),应用部署及数据移植工具(Capistrano和DBdeploy),日志和监控工具(Splunk、Nagios、Munin)。

主题二:持续交付——使用云计算和虚拟化技术演讲稿下载

来自ThoughtWorks的冯智超首先调查了现场的Dev和Ops的人数比例,接着通过实际案例,分享了其在主导DevOps项目中的理解和体会。

冯智超首先通过实例说明了写产品代码与开发的区别:

代码只是开发的一部分,还有需求、测试、部署阶段,都需要有代码的编写工作。

由此引发出持续交付的价值在于,不是仅仅注重在“交付”,不是持续部署,而是能保证任何时刻都有可以产生价值的软件。接着冯智超指出了手工部署的一些缺点:

  • 速度慢,无版本控制、不可重复、容易出错、无法进行知识分享
  • 无法持续地做需要频繁做的事情,也同样无法保证所作事情的正确性
  • 部署时间过长、过复杂,导致开发人员不愿意做部署,且反馈较慢

一个很直观的案例:当一个产品构建时经常报错,经常出现随机失败或是配置出问题,这就会导致大家降低对代码提交的要求,并掩盖了代码真实的Bug,最终导致将Bug带到了Pre-Production的环境。同时,遇到问题时,开发人员很容易绕过(work around),导致经验不能累积传递、问题反复出现(尤其是对于那些有“经验”的程序员)。相比之下,自动化部署则具有以下特点:

  • 部署过程代码化、部署代码是项目(软件)的一部分
  • 可One button Click到任意环境
  • 测试包含了对软件的测试以及对部署的测试

使用虚拟机、云平台可更方便的实现自动部署。此外,自动化部署检测了软件能否交付价值,部署的同时也是测试部署代码的过程。 一切皆代码,即所有东西(代码、测试、需求、配置、脚本等,都在版本控制中。冯智超还介绍了其部署流水线的过程:

  1. package编译打包、单元测试、静态代码、rpm&deb包
  2. standalone环境测试,隔离外部组件,自动化验收测试
  3. EC2环境测试,在云上创建所有组件,自动化集成测试
  4. pubish发布package脚本,配置到团队的packate source,进行快速反馈、增强信心。

此外,冯智超还谈到了流水线监控、如何模拟真实环境、云和虚拟化以及介绍了Chef和Vagrant。最后冯智超谈到了他的个人经验:

  • 自动化
  • build要快、稳定
  • 环境要逐步接近生产环境
  • 云平台、虚拟化会为持续集成提供方便
  • 坚持原则、做正确的事情

Open Space(开放式讨论环节)

和以往的环节一样,​为了让参会者能够有更多的时间进行相互的交流,本次活动依然设置了Open ​Space(开放式讨论)环节。除了讲师​乔梁、冯智超外,窦锦帅、翁翊成、张磊和卜伟强也参与了小组讨论。在Open Space的总结环节,几位嘉宾​分别对讨论的内容进行了总结:

乔梁分享了“自动化测试”的话题,继续讨论了进行持续交付的重要性,同时还要培养有持续交付的能力,在具备持续交付能力后,才有可能快速的发布软件。在这个前提下,进行了关于自动化测试的讨论,包括控制自动化测试的成本(端到端的测试要少,由于UI变动较大,所以估计集成端到端的测试)、单元测试如何去做,去度量等。

冯智超分享了“部署流水线”的话题,主要讨论了部署流水线的过程,包括每一步应该做哪些事情,都能够带来什么好处,还包含常见问题的处理方式。

翁翊成分享了“传统团队如何实施持续集成”的话题,主要讨论了如何在一个很难去做单元测试、很难去实施自动化测试的环境下,如何去实施持续集成。介绍了一些相应的工具,软件包版本的区分,如何利用版本唯一性来确定发布的包,总而去驱动从开发到测试再到最终发布的流程。

窦锦帅分享了“自动化运维工具的应用”的话题,分享了各自在自动化运维中的经验以及如何利用自动化工具来实现更新。

张磊分享了“云计算”的话题,一起讨论了什么是云,云计算与物联网的关系以及当下比较热门的开源软件及应用。

卜伟强分享了“自动化测试”的话题,主要讨论了三部分的内容:1)自动化测试的前提及成本,2)如何去选择适合于自身的自动化测试工具,3)一起讨论了自动化测试的细节,尤其是针对UI的测试等。

会后新浪微博ID为@哈尼的老虎的参会者分享了他的感受:​​

​thoughtworks一位讲师分享虚拟化及云基础设施在devops中的应用,场景很典型,提高效率降低成本;如何让devops落地,如何裁剪devops使之适合自己的business context,特别是传统做企业应用的环境,互联网的经验可以借鉴。

此外,讲师@乔梁QL也分享了参会感受:

今天有同学在@百度技术沙龙上问如何在代码中使用开关机制?实际上,可以使用很多设计模式做开关,这里有一些例子。通过@微盘 分享文件"Erik Sowa- Feature Bits LSSC10 final.pdf" 。

一位现场观众@杨梅果果子也在微博中写到:

周六还是去了百度技术沙龙,1点半到的已经很多人了,听了两场讲座还领了一本书,嘿嘿~~虽然我已经有了本持续交付的英文版,不过有本中文的正好对照着学习谢谢infoq和百度哟~~

延伸阅读

1.乔梁在InfoQ的专栏

2.QClub北京站,ThoughtWorks CTO Rebecca谈DevOps和持续交付

3.InfoQ中文站关于持续交付的相关文章

4.InfoQ中文站关于DevOps的相关文章

有关百度技术沙龙的更多信息,可以通过新浪微博关注@百度技术沙龙,或者加入百度技术沙龙微群,InfoQ上也总结了过往19期所有百度技术沙龙的演讲视频和资料等,感兴趣的读者可以直接浏览阅读

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT