乔梁@百度.项目管理部——持续交付的魅力–百度项目管理部•高级架构师–InfoQ•敏捷社区特约编辑•《持续集成》专栏作者–《持续交付》的译者中文站:Arealstory@BaiduDevopsandContinuousDeliveryContextacomplexsoftwareecosystemContext一个复杂的软件生态系统Context7Devs+2QAs+0.3OPc/c++legacycode(10yearsold)7+modulesfewautomationtestsforasinglemoduledeployto170+boxes6monthsago3个月的大版本发布紧急修复较多紧急需求PrayPrayPlaynow3周小版本发布紧急修复很少没有紧急需求Play6个月前多分支并行持续集成主干开发只在发布时拉分支trunkrelease1.1release1.26个月前手工测试内建质量功能验收测试单元测试集成测试系统测试非功能验收测试(容量、安全,……)演示易用性测试探索性测试业务导向的技术导向的支持开发过程的评判项目的内建质量自动化功能验收测试单元测试集成测试系统测试自动化非功能验收测试(容量、安全,……)自动/手工手工演示易用性测试探索性测试业务导向的技术导向的支持开发过程的评判项目的6个月前手工部署一切皆版本控制应用配置信息环境配置信息数据信息环境标准化单一部署脚本6个月前铁路警察共同的目标频繁、高效地沟通共担一些KPIWhatwegotnowDetailsCommitCommitCommitCommit....ABCGAcceptanceAcceptanceAcceptanceAcceptance....AcceptanceInterfacefunction模块级子系统级系统级performanceInterfacefunction试运行Ping发布performanceA子系统测试系统测试试运行生产环境BG自动手动每天每周三周自动化部署流水线可视化可跟踪易审计部署流水线(deploymentpipeline):是软件系统的构建、部署、测试和审批过程的自动化实现。Time1.每次提交代码的质量都达到生产环境可部署2.小步增量发布持续交付smallfeaturechunksLessonlearned软件的发布过程必须是可重复、可信赖的把几乎所有环节都做成自动化把所有内容都纳入版本控制让痛苦提前,并不断练习内建质量“完成”就意味着“已发布”所有人对交付负责持续改进,需要耐心Lessonlearned只构建一次二进制包在每个环境上都使用相同的方式部署对部署结果进行冒烟测试每种部署环境都应该尽可能相似任何地方出现失败,都要立刻停工devops?ValueStreamContinuousIntegrationAgileValueStreamContinuousIntegrationAgiledevopsdevops=culture+toolsCultureToolsautomation–environmentprovisioning•(Puppet,Chef,ControlTier,etc)–appdeployment&datamigration•(Capistrano,DBdeploy,etc)–logging&monitoring•(Splunk,Nagios,Munin,etc)Q&A@乔梁QL@gmail.com@baidu.com关注我们:t.baidu-tech.com资料下载和详细介绍:infoq.com/cn/zones/baidu-salonInfoQ策划·组织·实施关注我们:weibo.com/infoqchina“畅想•交流•争鸣•聚会”是百度技术沙龙的宗旨。百度技术沙龙是由百度与InfoQ中文站定期组织的线下技术交流活动。目的是让中高端技术人员有一个相对自由的思想交流和交友沟通的的平台。主要分讲师分享和OpenSpace两个关键环节,每期只关注一个焦点话题。讲师分享和现场Q&A让大家了解百度和其他知名网站技术支持的先进实践经验,OpenSpace环节是百度技术沙龙主题的升华和展开,提供一个自由交流的平台。针对当期主题,参与者人人都可以发起话题,展开讨论。