[转载]"百度方法+"案例—从持续集成到持续交付

前言
百度开放云(https://bce.baidu.com)是百度基于十五年基础架构核心技术积累推出的云服务,目前推出了14个云计算产品和9个大数据产品,并提供数字营销云、在线教育、物联网等10种解决方案。百度开放云安全、高性能、高扩展性的特点,可以帮助企业降低运维成本、提高生产效率和激发创新。
案例背景
开放云经过两年的快速发展,研发团队300多人,20多条产品线。随着业务快速发展和技术架构日益复杂,对研发交付能力不断提出更高要求,需要研发能非常快速构建出功能完善和质量稳定的产品。技术教练经过对研发过程的深度分析,发现在整个研发交付流水线上还存在较大的改进空间,包括整体测试周期、测试自动化程度、环境部署方式、运维自动化部署上线等方面,这些环节的进一步优化改善将大大的提高研发的交付速度和产品服务的稳定性。
如何优化改善?
确定目标:在保证质量的前提下将整体交付周期缩短50%。
改进思路:
基于改进目标将研发交付流水线分为"开发与测试"、"部署与上线"两个阶段分别实施改进。
第一阶段引入持续集成方法改进"开发与测试环节":从分支切换到主干开发,在主干频繁的提交代码完成自动化构建,以尽早发现和消除代码缺陷,保证产品质量,缩短整体测试周期;
第二阶段引入DevOps方法和技术,通过标准化和自动化部署过程,彻底打通部署与上线环节,并构建端到端自动化交付流水线,提升整个交付过程的效率以及产品服务质量的可控性和可靠性。
整体方案:
1. 循序渐进,建设持续集成
从分支开发切换到主干开发模式,降低分支管理难度和Merge成本;
建立分级构建模型,搭建包括本地构建、模块级构建、子服务级构建、系统级构建、准生产级构建等多层次自动化构建,同时加强测试自动化覆盖率,从多个层次和多个验证角度建立起质量保证体系;
强调团队习惯,包括增加代码提交频率、设置各级构建提交门限、制定Build Cop机制等,确保持续集成能够实施到位;
从推广模式上,首先选取30%团队进行试点,在逐步成熟并取得阶段进展后,再向整个团队进行推广。在大规模推广过程中,实施分级管理和Mentor机制,统筹推进多团队整体改进,并通过建设CI Dashboard进行改进过程度量和监控,实现完整的PDCA管理循环。
2. 逐步深化,建设DevOps
标准化、自动化部署过程,通过开发统一的部署工具平台,支持以相同的配置模式对从测试环境到生产环境的多种不同环境进行自动化部署和配置,提升各环境的一致性并降低手工操作时间和成本;
建设自动化交付流水线,对整个交付过程建模,将编译/打包、各级测试、各级上线等阶段依次定义为多个Stage,每个Stage包含一系列并行或串行执行具体部署、测试任务的Job,从而实现全流程多级构建的自动触发和自动流转;在此基础上,增加对产品中多模块间相互依赖和触发的支持,从模块级流水线升级为产品及流水线;
以交付流水线作为统一入口,提供给所有角色一站式服务能力,包括一键测试、一键发布、一键部署、一键回滚等功能,简化交付过程操作复杂度,实现人人运维;
根据交付流水线数据生成价值流图,辅助以构建时间、构建完备性、构建稳定性等统计指标,进行整体进度监控和瓶颈发现,并通过版本依赖关系图进行回溯分析和人工干预,提升交付过程的控制力;
效果如何?
通过深化持续集成、测试自动化和测试前置,测试周期缩短为原来的50%;
通过统一自动化部署工具,向多个环境部署和发布耗时降低为原来的25%;
从开发到上线的整体交付周期缩短50%,交付过程通过自动化流水线固化,过程标准化、可重复、可靠,同时提供快速反馈;
整个交付流水线各阶段实现自动化,可根据设置自动化触发执行,并在关键质量控制节点增加了人工审批环节;
流水线每个阶段实现自动化验证,预防有问题的构建进入到生产环境,紧急的线上修复也遵循整个流程,持续的进行回归验证,保证质量;
整个交付过程进度可视化以及进行瓶颈分析,快速查看当前构建进度、定位阻塞环节、分析对后续发布影响;
各角色基于统一自动化工具链紧密协作,从代码提交到发布过程操作简单,具备每日多次发布和故障快速回滚能力。
案例关键词:DevOps、全流程交付流水线、自动化测试、自动化部署、团队协作
博客转自:《"百度方法+"案例—从持续集成到持续交付 | 百度敏捷教练 》
[转载]"百度方法+"案例—从持续集成到持续交付的更多相关文章
- 【转】基于Jenkins实现持续集成【持续更新中】
知识预览 持续集成 Jenkins安装 Jenkins插件 Jenkins配置 Jenkins备份与恢复 发布PHP项目 SVN 发布Maven项目 按版本发布 远程管理 War文件部署设置 任务 J ...
- 浅谈<持续集成、持续交付、持续部署>(一)
谈谈持续集成,持续交付,持续部署之间的区别 经常会听到持续集成,持续交付,持续部署,三者究竟是什么,有何联系和区别呢? 假如把开发工作流程分为以下几个阶段: 编码 -> 构建 -> 集 ...
- 02: CI(持续集成)/CD(持续交付/持续部署)
1.1 持续集成.持续交付 介绍 参考博客:https://www.cnblogs.com/cay83/p/8856231.html 1.传统交付 1. 传统软件的开发与交付的周期都很漫长,从需求 ...
- Azure Terraform(八)利用Azure DevOps 实现Infra资源和.NET CORE Web 应用程序的持续集成、持续部署
一,引言 上一篇讲解到利用 Azure DevOps 将整个 Azure Web App,Azure Traffic Manager profile,Azure Storage Account,Azu ...
- 【进阶之路】持续集成、持续交付与持续部署(CI/CD)
由来 记得7月份刚刚换工作的时候,中午和老大一起去吃饭,回来的路上老大问我:"南橘,CI/CD有没有研究过?" 我隐隐约约在哪里听过这个名词,但是又想不起来,秉着实事求是的态度,我 ...
- 基于Jenkins实现持续集成【持续更新中】
持续集成 1.什么是持续集成:Continuous integration (CI)持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生 ...
- 【ZZ】谈谈持续集成,持续交付,持续部署之间的区别
谈谈持续集成,持续交付,持续部署之间的区别 http://blog.flow.ci/cicd_difference/ 谈谈持续集成,持续交付,持续部署之间的区别 2016年08月03日 标签:beta ...
- 在TFS持续集成(持续发布)中执行Telnet任务
Telnet是一种在因特网或局域网上使用虚拟终端连接,提供双向交互式文本通信设备的协议. 它是最早的互联网通讯协议之一.自1969年启用以来,已经经过了将近50年时间,在开放式的操作系统中拥有广泛的用 ...
- 持续集成、持续交付、持续部署、Jkens、git
一 持续集成.持续交付.持续部署 1. 持续集成 持续集成指的是,频繁地(一天多次)将代码集成到主干.持续集成的目的,就是让产品可以快速迭代,同时还能 保持高质量.它的核心措施是,代码集成到主干之前 ...
随机推荐
- Win7系统修改hosts文件不能保存的解决方法
地址:http://jingyan.baidu.com/album/e5c39bf56564a539d7603312.html
- Javascript 中的this 指向的对象,你搞清楚了吗?
Javascript 中的this 总让人感到困惑,你能分清以下三种test1(),test2(),test3() 情况下的输出吗? 注:以下Javascript运行环境中为浏览器 //1 this在 ...
- Centos6.6下安装MariaDB步骤,利用yum进行安装 第二篇
一.安装过程参考的相关文章: Centos 使用YUM安装MariaDB CentOS安装并设置MariaDB CentOS用yum安装.配置MariaDB MariaDB远程连接配置 ERROR 1 ...
- 【腾讯Bugly干货分享】微信终端跨平台组件 mars 系列(一) - 高性能日志模块xlog
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57ff5932cde42f1f03de29b1 本文来源: 微信客户端开发团队 ...
- .NET轻量级MVC框架:Nancy入门教程(一)——初识Nancy
当我们要接到一个新的项目的时候,我们第一时间想到的是用微软的MVC框架,但是你是否想过微软的MVC是不是有点笨重?我们这个项目用MVC是不是有点大材小用?有没有可以替代MVC的东西呢?看到这里也许你会 ...
- [转]在cocos2d-x中让一个项目适配iphone、iphone retina、ipad、ipad retina四种分辨率
http://cankeyyin.blog.163.com/blog/static/12336178320124149391202/ 原理:将iphone的hd图片给ipad用,即: 使用原iphon ...
- java 锁2
并发,其实是多线程才有的场景... java 多线程? 锁? 现在看来,即使已经工作了4.5年,这仍然不是一个简单的问题. 其实java 本身有提供锁的机制. 比如 Object对象的 wait .n ...
- 60,000毫秒内对Linux的性能诊断效的方法
转载于:http://www.itxuexiwang.com/a/liunxjishu/2016/0225/168.html?1456484140 60,000 毫秒内对 Linux 的性能诊断 当你 ...
- 360路由器刷openwrt、不死uboot、双系统 、wifi中继
该类教程网上有很多,但是很多不全,给小白用户造成了很多困扰.我也是按照网上的教程刷了半天,才熟悉了是怎么个回事.这里整理成教程. 注意: 请看教程步骤走,不要跳跃性刷机.不懂的术语.软件,若本文无介绍 ...
- 用 flow.ci 让 Hexo 持续部署
编者按:感谢 @小小小杜 投稿,原文链接Juglans' Blog.如果你也想体验 flow.ci 的自动化持续部署,来 http://flow.ci 首页提交申请,邀请码随后会发送到邮箱:) flo ...