天天看點

建構,打包,部署速度加快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倍;釋出速度從每年兩次都每月一次。