CapitalOne - Artifactory高可用集羣的自動化部署實踐

背景

本文爲你們介紹Capital One如何利用自動化流水線實現Artifactory HA集羣進行自動化運維。Capital One銀行是美國最大的數字化銀行之一,在Capital One的devops體系中應用了JFrog Artifactory HA集羣進行軟件製品管理。因爲Capital One規模龐大而且爲知足業務連續性要求,其部署的Artifactory HA擁有primary和DR(災備)兩套集羣的架構。在運維Artifactory HA集羣維護中經過建設和運行自動化的流水線,在不影響用戶使用和業務連續性的前提下,自動地完成了版本升級、配置更新、功能更新,安全檢測等工做,而且在檢測到問題時,實現自動化的回滾。
流水線整體介紹:
CapitalOne - Artifactory高可用集羣的自動化部署實踐數據庫

經過Jenkins與Github集成驅動流水線。每一個PULL請求觸發一個小規模測試並提供快速反饋。每一個Merge會觸發研發環境HA集羣範圍的部署,並進行相關測試。標籤(Tag)被用來標記代碼更新的驗證階段和對應的環境。
使用Terraform建立基礎設施,實現藍/綠的發佈。並經過Chef Cookbook完成整個集羣內全部角色服務器配置api

流水線構成

靜態分析流水線

CapitalOne - Artifactory高可用集羣的自動化部署實踐

經過對代碼靜態分析對代碼結構進行快速反饋,確保其符合行業標準。同時使用一系列的Linters進行不一樣類型的代碼分析。安全

安全掃描流水線

CapitalOne - Artifactory高可用集羣的自動化部署實踐
Capital One引入DevSecOps概念,可以在產品上線以前進行安全掃描和漏洞檢測。安全檢查主要使用了靜態安全檢測經過代碼掃描來完成漏洞發現。除了靜態檢測還經過對比分析,使用Jfrog Xray對依賴進行安全掃描,提升第三方依賴的安全性,並提供修復建議。服務器

單元測試流水線

CapitalOne - Artifactory高可用集羣的自動化部署實踐
單元/集成測試,用於驗證代碼的更新不會破壞預期的功能。主要應用於用戶自定user plugin的測試。流水線經過容器方式拉起Artifactory安裝並測試這些custom plugin,確保其正確工做,避免在生產環境中進行測試。微信

構建階段流水線

CapitalOne - Artifactory高可用集羣的自動化部署實踐
本階段的全部文件都須要部署在一個高可靠的位置,以便在系統運行時進行自動擴展不須要去依賴其餘任何系統包括Artifactory。Capital One選擇了S3進行外部存儲。全部製品與chef cookbook都從Artifactory拉取並存到s3中。網絡

用於部署的流水線

CapitalOne - Artifactory高可用集羣的自動化部署實踐
部署流水線須要確保新集羣部署不會影響到現有Artifactory提供正常服務。
1 流量切換到DR區域
2 縮容現有集羣,減小節點數量並釋放license給新的集羣使用,Aritfactory集羣採用多主架構在所容時不會影響剩餘節點的正常工做
3 新部署集羣複用原油的數據庫與s3存儲內容作到無痕切換
4 當新集羣完成部署後,業務流量進行回切
5 主集羣完成升級後,DR集羣進行升級
因爲Artifactory使用數據同步機制,所以新節點加入集羣的過程對用戶透明。架構

配置測試流水線

CapitalOne - Artifactory高可用集羣的自動化部署實踐

在工做節點上線前須要對其配置進行檢測,Jenkins經過ssh方式驅動新節點進行測試,確保Artifactory,Nginx,Datadog,Splunk這些工做節點運行正常。
確保全部的工做節點配置文件的內容、位置、權限都部署正確,以及全部的網絡端口都正常開通。運維

系列測試流水線

CapitalOne - Artifactory高可用集羣的自動化部署實踐
系列測試是確保Artifactory的各個repositories運行正常。經過容器拉取全部種類的repositories中的包進行測試,同時檢測全部virtual repositories,而且須要測新的系統配置是否會影響製品依賴的解析。ssh

性能測試流水線

CapitalOne - Artifactory高可用集羣的自動化部署實踐
確保發佈產品不會存在性能問題。Capital One使用Jmeter工具模擬生產級流量並分析,15分鐘的負載測試做爲流水線的一部分,使用1小時負載測試主線升級以及重大變動場景。
因爲Artifactory支持多種類型的包所以在流量模型是一個挑戰,Capital One經過分析日誌獲取經常使用API,並在流量峯值時期測試API調用速度。ide

回滾策略流水線

CapitalOne - Artifactory高可用集羣的自動化部署實踐
Capital One設計了兩個回滾策略:
1In-region回滾。當部署後的測試失敗時,立刻啓動自動化回滾,刪除新的集羣,並恢復舊的集羣。
2DR容錯回滾。當主集羣升級成功後,或監測幾天用戶流量,沒有問題的時候再更新容災集羣。若是在這幾天中發現問題,就會啓動容錯回滾:用戶流量切換到DR集羣,主集羣回滾到以前版本,數據庫回滾到以前的快照,再經過Artifactory Replication同步數據,最後再把流量切換回回滾後的工做集羣。目前
因爲數據庫的回滾可能會有DataBase schema的變化,Capital One目前在數據庫回滾操做上依然使用手動方式完成。

自動化流水線部署帶來的收益

CapitalOne - Artifactory高可用集羣的自動化部署實踐

Capital One經過自動化流水線部署Artifactory HA爲團隊帶來的收益:
加快部署進度而且使開發人員能更專一於代碼開發自己,再也不須要花費時間維護製品管理的工具。
Capital One更好的擴展性,整個集羣的擴縮容均可以由流水線完成
全面的測試流程確保用戶體驗
自動化回滾策略,加快故障檢測和響應,減小對生產業務影響

更多 精彩內容 請微信搜索公衆號:jfrogchina
  更多技術分享 能夠關注 2 月 18 日在線課堂:《Artifactory企業版介紹》
報名連接:https://www.bagevent.com/event/6365977 課程介紹在企業數字化轉型的背景下,應用的更新迭代週期正在不斷加速,如何在多語言環境下建設一套高性能,高可用的應用製品管理平臺成爲企業在數字化轉型中的一個新課題。 課程收益本期經過演示事例說明如何經過Artifactory企業版實現製品管理,元數據管理,製品與依賴安全管理。而且實現Artifactory與Jenkins的集成使用。 本期話題1 artifactory企業版的特性以及高可用架構2 如何經過Artifactory實現多語言環境的製品管理3 經過Artifactory創建企業級制元數據管理平臺4 如何實現製品依賴安全管理 課堂活動本期課堂講師會在結束前進行抽獎活動第一名:小愛音響第二名:JFrog 新版 T 恤第三名:JFrog 新版 T 恤

相關文章
相關標籤/搜索