天天看点

构建,打包,部署速度加快5倍 - Adobe完成DevOps的华丽转型

Adobe 背景

构建,打包,部署速度加快5倍 - Adobe完成DevOps的华丽转型
构建,打包,部署速度加快5倍 - Adobe完成DevOps的华丽转型

本文内容来自 Adobe 在 JFrog SwampUp 2017 大会上的演讲。

Adobe 公司全球最大的软件公司之一,2016财年收入为58亿美金。全球有超过16000的员工,被财富杂志评为2017年全球最受尊敬的企业。主要的产品有 PhotoShop,Adobe Acrobat,Adobe Reader,Flash Player等等。Adobe 的员工福利很好,据说在 Adobe 有一条不成文的规定,任何员工工位周围15米的范围内一定能拿到零食。

Adobe 的持续交付平台

构建,打包,部署速度加快5倍 - Adobe完成DevOps的华丽转型
照例先来一张工具链的全家福:

  • 版本管理:Github 和 Perforce 管理代码,Artifactory 和 Bintray 管理包的存储和分发。
  • CI/CD:Jenkins 做 CI,使用 Spinnaker(Netflix) 做持续交付,部署到私有云和部分公有云。
  • 代码审查:使用 FishEye(Atlassian)
  • 产品和变更管理:Jira,Portfolio 等等。
  • 漏洞扫描:Xray, Aqua。
  • 应用平台:私有云使用 CloudFoundry 作为云平台,上层使用 Mesos 作为 Docker 容器的编排平台,使用 Chef 进行部署,平台上运行了30多个应用。

包管理工具演进

构建,打包,部署速度加快5倍 - Adobe完成DevOps的华丽转型

在2004年,Adobe 使用代码管理工具管理二进制包,2005年换成 FTP 文件服务器,到了2012年使用 Nexus,从2015年开始使用 Artifactory 统一进行所有二进制包的规范化管理。

软件发布流程

构建,打包,部署速度加快5倍 - Adobe完成DevOps的华丽转型
  1. 代码提交到 Git,进行代码扫描。
  2. IT team 提供容器化的 Jenkins 进行构建。
  3. 构建结果上传到制品库 Artifactory,包含 Chef 的 cookbook 也存储在 Artifactory。
  4. 使用 JFrog Xray 进行持续二进制包的漏洞扫描。
  5. 基础设施使用 Chef 进行持续部署,部署的目标是 AWS 的服务器,VMware 的虚机,以及容器集群。
  6. 将应用部署到开发,测试,预发布,生产环境。
  7. 使用 Zabbix,Splunk 进行服务器和应用的监控。
  8. 将包发布到 JFrog Bintray,Bintray 底层使用 CDN 进行全球的分发。

持续漏洞扫描

构建,打包,部署速度加快5倍 - Adobe完成DevOps的华丽转型

传统的漏洞扫描,都是在软件测试完成,待交付之前做检查,一旦扫描出来问题,会极大的影响项目的进度。使用 Xray 进行持续漏洞扫描,可以在漏洞包被下载的第一时间检测出来,杜绝漏洞包进入产品并发布出去。

Xray 漏洞扫描的原理,是从 NVD(国家漏洞数据库)下载最新的漏洞数据记录,和公司内部 Artifactory 仓库里存储的二进制包进行对比,如果匹配成功,则说明该构建存在漏洞包,此时可以让 Jenkins 的构建任务失败。

自助式 DevOps 服务

构建,打包,部署速度加快5倍 - Adobe完成DevOps的华丽转型

当团队和项目拆分成微服务架构时,每个微服务都需要独立的流水线进行持续交付,这就意味着,公司内部的配置管理团队需要为每个服务准备好 Jenkins,Github 项目,Artifactory 仓库等一系列工具,所以 Adobe 的通用服务团队花了一个人,4个礼拜,搭建了自助式创建 Artifactory 的平台,也花了同样的人力成本,搭建了自助式申请 Github 项目,Jira 项目,Jenkins 项目等平台。根据实际经验,Adobe 的开发者指出,GIthub 和 Artifactory 的 Rest API 是最完善的,Jira 的 API 不太完善。

在自助申请 Artifactory 仓库的平台里,用户可以按需的申请微服务需要的仓库,通常是3个库,开发库,测试库和生产库。并且在平台里指定仓库的权限配置等等。

得到的收益

构建,打包,部署速度加快5倍 - Adobe完成DevOps的华丽转型

通过统一的持续交付平台,Adobe 实现了研发效率的大大提升,在印度研发中心的构建可用时间提早了5-6个小时;提升了30-40分钟的构建速度,因此每天能够实现10-15次构建;软件交付速度提升了5倍;发布速度从每年两次都每月一次。