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完成整個集羣內所有角色服務器配置

流水線構成

靜態分析流水線

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,並且需要測新的系統配置是否會影響製品依賴的解析。

性能測試流水線

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

回滾策略流水線

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 恤

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章