项目DevOps研发云CI实践之路

本文讲的是项目DevOps研发云CI实践之路【编者的话】DevOps是Develop与Operations的缩写。DevOps不是凭空冒出来的,是我们持续集成思想的延伸。

使用敏捷或其他软件开发过程与方法,项目要求加快产品交付的速率,虚拟化和云计算基础设施(可能来自内部或外部供应商)日益普遍,都促使我们不断向DevOps方向发展。

因此,现在的业务开发,对传统的CI提出了更新更高的要求,借助于云技术,我们可以在DesOps趋势下实现从传统CI向云化CI的演变。

一、项目痛点

笔者所在项目在敏捷推进过程中,已经建立了一套以Jenkins为核心的CI持续集成系统,相信很多项目也是通过Jenkins来构建项目自己的CI防护网的。

基于CI持续集成系统对敏捷的重要性,稳定和高效成为了CI集成系统最重要的两个要素。

在实际使用过程中,各种类型的编译环境,部署安装、配置维护,成本越来越大,工作重复、效率低;随着CI集成越来越复杂,对设备的性能、稳定性要求越来越高,维护成本也越来越高,越来越专业,需要人员有专门的技能才能维护。

同时随着敏捷的深入,快速交付、快速部署,对CI集成时间、周期、效率提出了更高的要求,CI系统的效率和反馈速度也成为瓶颈。产品级敏捷也期望能够全程监控CI的过程质量,全方位度量、质量保证,对CI系统提出了更高的要求。

综上所述,总结一下项目在持续集成方面的痛点:

  • 效率低下
  • 环境复杂
  • 基础设施维护困难
  • CI质量状况难以实时监控

二、解决思路

现在DevOps概念在业界比较火热,并逐渐成为趋势。这也让我们觉得借助云计算和DevOps理念来进一步持续推进传统CI,正是我们需要的。

三、实践情况

1、入云方案

(1)OKR驱动

OKR驱动,本着向更有价值,更有挑战性的目标冲刺的原则。

在部门的改进工作坊上,结合项目的痛点,大家一起制定了项目的DevOps贯通OKR计划。跟随着公司研发云项目的不断演进过程中,逐渐认识到云CI在DevOps推进过程中,越来越扮演着非常重要的角色。

经过研究,云CI使用到的Jenkins和Docker技术,以及云内的计算资源,能够助力后面的云托管、云构建,所以CI上云成为我们DevOps推进中非常有价值的事情。

(2)总体方案
借助云计算的发展,传统CI向云CI进行演进。

  • CloudCI(http://cloudci.zte.com.cn/
    云Jenkins服务器,优势:CloudCI是基于Docker集群的云Jenkins服务器
  • Mesos集群(基于Docker,CloudCI已集成为Mesos节点)
    海量云资源,优势:可共享,随用随申请,使用结束自动释放。
  • Docker镜像仓库
  • Mesos集群+Docker镜像,构成CI任务执行环境

(3)总体流程
流水线任务优化和拆分,串行变并行,资源云化,度量及时反馈。

  • Step1 代码入库
    代码通过Pha评审,提交到代码托管SVN仓库。
  • Step2 Jenkins任务执行
    代码入库,触发云Jenkins服务器执行CI任务,CI任务并行同时触发执行。CI整流水线速度取并行任务的最长时间,相比原来的串行累加速度提升明显。
  • Step3 数据采集
    数据采集任务,在CI任务执行过程中采集项目度量数据(如代码行数、静态检查数据等),以及CI任务的执行次数、成功率等数据。以Shell和Python为主的脚本库作为数据采集的支撑,采集数据自动接入无线度量系统。
  • Step4 度量报告
    在度量系统建立统计模型,每天以邮件方式自动输出度量报告,用于项目/团队及时反馈和改进开发,形成闭环。

2、CI入云准备

(1)执行环境标准化
主要的原则是:环境分类、标准化,利用Docker技术资源云化。

执行环境标准化的目的是将CI任务按照运行环境分类管理,并且梳理出每个任务运行所依赖的环境要求(重点:操作系统以及软件)。

以我们项目IaaS版本构建为例:

  • 操作系统:Linux
  • 编译工具:交叉编译链
  • 其余软件:tcl、bc、zip、bzip2

最终,执行环境需要使用Docker技术实现容器化,实现Ship&Run。

(2)CI任务整理优化
主要的原则是:任务拆分,去依赖和状态,串行变并行。

  • Job拆分:根据项目特性拆分,以更好的利用云端弹性伸缩特性
  • 去依赖化:隔离CI全流程中工具链等因素对物理机/虚机的依赖
  • 去状态化:转化/消除CI全流程中各job对于实体机/虚机状态化的需求,如各种缓存等

3、部署实施

(1)CI任务配置执行 

相比于以前,现在CI Jenkins任务的部署就非常简单,尤其是使用Mesos集群的任务,可以简单到只需要下面这样Pull&Run:

docker pull mirrors.zte.com.cn:5000/ft-cloudci-centos:latest
docker run --rm mirrors.zte.com.cn:5000/ft-cloudci-centos

4、相关技术

因为需要使用到Linux、Docker和Jenkins,所以这些相应的技术要熟悉。

另外,CI任务改并行后,必须要考虑多任务并行时,代码文件(含二进制文件)在Mesos集群机器中动态挂载的问题。

经过实践,建议的文件挂载方式如下:

  • Svn全量检出
    低效不建议采用,参考数据:1.8G代码,下载速度:8-15min。
  • Git/Gerrit全量检出
    高效,参考数据:1.8G代码,下载速度:云内30-40s,云外1-2min。
  • Rsync全量同步
    高效,参考数据:1.8G代码,下载速度:云内2-4min。
  • 增量更新+网络共享
    未来的优化方向,研究中。代码增量更新,通过网络共享(NFS/Ceph)到Mesos集群,然后再docker –v挂载到运行容器。

四、效果评价

通过CI上云,解决了项目CI的四个痛点。

现状:版本已经上线,任务优化和拆分,串行变并行,资源云化

收益:

  • 效率:Jenkins任务串行变并行,整版本构建速度和流水线运行速度大幅提升
  • 环境:环境构建实现自动化与标准化
  • 基础设施维护:公司统一维护,无需项目额外指定专人维护
  • 质量控制:度量系统实时监控,及时反馈

原文链接

原文发布时间为:2016-12-05

本文作者:尼古拉斯

本文来自合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:项目DevOps研发云CI实践之路

时间: 2024-10-02 21:53:34

项目DevOps研发云CI实践之路的相关文章

十问够快网络 答疑阿里云平台实践之路

本文讲的是十问够快网络 答疑阿里云平台实践之路,云计算已经被众多的厂商视为一块肥肉,纷纷下血本投入到这个行业中.国内比较大的云平台服务商包括阿里云.盛大云.百度云.新浪云和华为云.他们都在推出自己产品和服务,谋求在云计算时代引领行业发展. 当然任何的产品和服务都离不开用户的支持,作为阿里云平台的核心用户之一,够快网络是阿里云平台的一个实践者,今天我们IT168有幸采访到了够快网络的技术负责人蒋烁淼,他从用户的角度分析了阿里云平台的技术特点以及使用体验,给用户选择云平台提供了很好的参考. ▲够快网

阿里巴巴CI:CD之分层自动化实践之路

6月29日,由阿里云研发协同RDC.阿里云云效和联合举办的"首届阿里巴巴研发效能嘉年华"上,阿里巴巴高级产品经理金桐带来"分层自动化实践之路"的演讲.本文从为什么要做自动化开始谈起,进而对分层自动化单元测试.业务服务层测试和UI测试进行优劣势分析,最后重点分享了阿里分层自动化的实践,包括工具分层和流程优化等.   直播视频请点击 随着云计算.大数据.AI智能等前沿科技的发展,传统的研发速度越来越难满足企业快速发展的需求,研发效能也成了继商业模式.技术突破之后的另一核

保险行业上云的正确姿势:天安人寿金融云实践之路

摘要:本期云栖说的主题是金融云与安全,我们都知道金融行业因为其特殊性往往成为关注的焦点,并且也往往会吸引众多黑客的目光.那么对于像天安人寿这样的保险行业企业来讲,如何实践自己的上云之路呢?上云又为他们带来了哪些便利呢?金融行业上云需要面对怎样的安全方面的考量呢?本期云栖说,天安人寿信息技术部总经理姚仁毅.资深架构师山虎.阿里云安全专家张伟伟以及阿里云保险行业总监戴飞飞将为您分享金融云与安全的那些事. 如果想更直观.更有意思地了解天安人寿金融云实践之路,还可以看看这一期的:云栖说视频.小提示:据说

创业家杂志社负责人谈盛大云实践之路

本文讲的是创业家杂志社负责人谈盛大云实践之路,云计算带来的是服务模式的变革,甚至将引领IT产业的变革,在这种大变革的背景之下,众多有实力的企业纷纷投身云计算领域,谋求新的发展空间.盛大作为互联网服务的领导者,不仅在内容端深受用户欢迎,同时发力云计算服务,推出八大产品系列,给用户提供了一站式的服务. 当然任何的产品和服务都离不开用户的信赖和支持,作为盛大云平台的核心用户之一,创业家杂志是一个实践者,同时也是云服务的受益者.IT168记者专访了创业家杂志和i黑马网联合发起人龙真,从用户那里获得了盛大

腾讯云实践之路

腾讯云实践之路 刘颖 • 腾讯云总体架构介绍 • 网络架构演进 • 虚拟化架构演进 • 存储架构演进 • 安全架构简介 腾讯云实践之路

DockOne微信分享(一二〇):基于Kubernetes的私有容器云建设实践

本文讲的是DockOne微信分享(一二〇):基于Kubernetes的私有容器云建设实践[编者的话]本次分享将为大家介绍易宝支付私有容器云从0到1的建设之路.包括技术选型.理论基础.基于Kubernetes的容器云和CI/CD落地过程中的挑战和踩过的坑. 建设背景及目标 在Docker技术流行开来之前,保证软件交付的质量和速度对于大多数企业来说都是困难的.业务的复杂性带来了应用的复杂性,面对成千上万的不同应用,运维部门需要时刻应对来自不同应用.不同环境的挑战.特别是在自动化运维程度不高的企业,"

上云最佳实践——电商行业

本文正在参加"最佳上云实践"评选,来给我们投票吧:https://yq.aliyun.com/activity/158(编号23) 一.故事的开端 那是2014年的12月中旬的某日,客户联系到我们.由于客户2015年2月机房机柜到期,所以想把资源迁移上云.客户联系到我们时,表示需要我们的支持.客户需求很明确,希望根据平台目前数据及特性,兼顾成本与性能给予最佳云架构/资源方案. 客户背景:2006年成立,杭州某知名网上私人订制礼品购物平台. 二.前期调研 运维团队规模(4人):运维1人.

DockOne微信分享(七十九):基于容器技术构建企业级PaaS云平台实践

本文讲的是DockOne微信分享(七十九):基于容器技术构建企业级PaaS云平台实践[编者的话]企业级容器化PaaS平台旨在为企业应用提供底层支撑能力,覆盖应用开发.应用交付.上线运维等环节,包括代码的管理.持续集成.自动化测试.交付物管理.应用托管.中间件服务.自动化运维.监控报警.日志处理等,本次分享主要介绍基于容器技术构建PaaS平台所采用的相关技术.涉及的核心功能模块以及相关方案. 为满足以上需求,MoPaaS企业版基于Cloud Foundry及Kubernetes等开源技术框架和智能

从 Spring Cloud 开始,聊聊微服务架构实践之路

本文讲的是从 Spring Cloud 开始,聊聊微服务架构实践之路[编者的话]随着公司业务量的飞速发展,平台面临的挑战已经远远大于业务,需求量不断增加,技术人员数量增加,面临的复杂度也大大增加.在这个背景下,平台的技术架构也完成了从传统的单体应用到微服务化的演进. 系统架构的演进过程 单一应用架构(第一代架构) 这是平台最开始的情况,当时流量小,为了节约成本,并将所有应用都打包放到一个应用里面,采用的架构为 .NET SQL Server: 表示层:位于最外层(最上层),最接近用户.用于显示数