海西 · 雲交付 DevOps實踐落地方案

来源:http://www.cnblogs.com/Javame/archive/2017/11/02/7771868.html
-Advertisement-
Play Games

​ 一、背景概述 (一)產品背景 1.互聯網+的需要 在信息越來越繁雜的互聯網時代,公司所運行的項目越來越多,項目相關服務繁多,服務之間存在複雜的依賴關係,運維與管理任務越來越繁重,手工交付需要花費很多的人力與時間,且安全性和時效性均無法保證。對於多資源型分佈/分離式部署項目,Udeployer應運 ...


一、背景概述 (一)產品背景 1.互聯網+的需要   在信息越來越繁雜的互聯網時代,公司所運行的項目越來越多,項目相關服務繁多,服務之間存在複雜的依賴關係,運維與管理任務越來越繁重,手工交付需要花費很多的人力與時間,且安全性和時效性均無法保證。對於多資源型分佈/分離式部署項目,Udeployer應運而生。 2.隨著企業對版本上線質量和速度的要求越來越高,敏捷開發、Devops的接受度越來越高  傳統的交付方式因為項目之間缺少依賴、環境不一致、版本不一致、人為操作失誤等情況使得項目交付過程中問題不斷,而互聯網企業發展節奏快、版本發佈頻率高,上線出故障影響面廣、影響度高,因而企業對於敏捷開發、持續集成、自動發佈都有強烈的需求。 (二)產品定義 Udeployer是一套完整的持續交付生態系統,在交付過程的每一個步驟都是可視化、自動化的,可以帶來包括效能在內的顯著的好處,同時也改進了軟體的總體質量。Udeployer集合了SVN、Jenkins、swarm、docker、registry等工具,在跨網段、跨內外網等方面可以完美相容。Udeployer提供項目配置中心,抽象公共配置,項目配置靈活裝配。在整個版本交付生命周期推薦使用Udeployer,能夠把人為的干預最小化、節省各環節等待時間,使得交付的流程更清晰化,一旦把人的干預去掉,質量就更加可預測,會變得更好。 (三)產品目標  
  1. 1. 構建環境依賴和應用依賴,快速實現多點部署並實現橫向部署;
  2. 2. 實現從代碼變更到代碼構建,鏡像構建和應用部署的全流程自動化;
  3. 3. 保障項目交付過程中環境的一致性與連貫性,讓交付的不僅是代碼,還有基於不可變架構的運行環境;
  4. 4. 持續反饋,隨時隨時隨地構建、隨時隨地獲取回饋信息,讓每次集成或交付,都會第一時間將結果實時反饋;
  5. 5. 減少人工操作,避免開發與測試在人工操作上的失誤。
  6. 二、產品介紹
(一)產品理念 (二)系統拓撲圖 (三)系統業務構架描述 (四)系統功能介紹 系統功能主要分為三個層面:源碼交付層、版本發佈層、容器管理層。 (1)源碼交付層 1.1 源碼交付層實現對版本的管理。 將SVN版本號與業務版本號一一對應,通過SVN版本號記錄業務版本號,包括新版本的創建、多版本的演變過程、多版本邏輯的相對獨立、多版本的映射關係等。 1.2 源碼交付層通過合併主幹、創建分支、版本歸檔、版本回滾功能實現對源碼路徑的管理,保證不同版本源碼的一致性。 (2)版本交付層 版本交付層通過項目管理、任務管理、工作流管理功能實現持續集成、自動部署、一鍵發佈。     項目管理主要實現版本交付所需要的準備數據的創建與管理,包括項目列表、應用列表、資料庫列表、部署模板、郵件模板、配置模板等基礎數據的創建;     任務管理主要是實現任務的創建與管理,包括自動化部署、Jenkins構建、重啟應用、關閉應用、自動觸發郵件發送、分發命令、日誌查詢、SQl腳本執行等任務;     工作流管理主要實現對任務工作流程的裝配與管理。用戶根據實際場景需求,通過自定義工作流模板,將任務單個或多次裝配到流程中,定義成模板,實現一鍵或批量執行多個任務。 (3)容器交付層 容器交付層主要通過對集群、節點、容器、鏡像倉庫的創建與管理,提供全流程標準化的主機管理、應用持續集成、鏡像構建、部署管理、容器運維、主機及容器監控服務,實現公有和私有集群的容器化管理,確保不同環境的容器一致性,統一不同環境的依賴關係。 Swarm集群主要是實現集群的創建與管理。用來管理docker集群,可進行節點掛載; 節點主要是實現節點的創建與管理,包括節點掛載集群、添加容器; 容器主要是實現對容器的創建與管理,包括選擇鏡像、掛載節點等; 鏡像倉庫是集中存放鏡像文件的場所,包括公共的與私有的,提供對鏡像文件的查詢。 (五)產品方案規格 產品方案不同的規格介紹,或者對產品方案技術規格的介紹。 (一)產品第一階段 將產品功能分為兩個部分:服務組件、我的服務。 服務組件主要負責執行服務功能的基礎數據的準備工作,完成項目列表、應用列表、資料庫列表、部署模板、郵件模板的創建與管理。 我的服務是功能執行模塊,包括SVN源碼交付、SQL腳本執行、應用部署、分發器、日誌查詢。SVN源碼交付包括合併主幹、創建分支、版本歸檔、版本回滾、版本發佈操作記錄功能,實現一站式全生命周期的管理,同時讓所有記錄都有跡可循,便於跟蹤記錄。 (二)產品第二階段 實現配置中心,將配置文件統一集中管理。對於企業用戶而言,把不同環境的配置,寫到同一個配置文件中,是極其不安全的,是一個非常危險的動作。為解決這一安全隱患,交付系統採用集中式的配置管理系統,將不同環境的配置嚴格區分地存放。將配置文件按照類型區分為公共配置文件、項目配置文件。公共配置文件可保存為模板,多次迴圈使用,解決了多次創建的煩惱。通過文件目標路徑維度將公共配置文件與項目配置文件進行存放管理。通過路徑快速定位到具體的文件,更具時效性、可操作性、安全性。 (三)產品第三階段 隨著公司業務的不斷發展壯大,體系越來越多,需要運維的工程也越來越多。如何快速、安全、穩定的交付功能,投入到生產中式企業必須解決的一個問題。交付系統通過工作流的方式,用戶可以將每個工程所需要執行的任務裝配成工作流,保存為模板,實現一鍵執行及批量執行。支持同一任務的不同環節裝配、多次裝配、不同環境、多場景的工作流創建。這樣不僅減少了浪費,提高開發和交付過程的效率,還可以使軟體隨時處於生產就緒狀態,以便可以隨時實現部署。                                                                                                                                                                                                                        三、應用場景 (一)應用模式 (1)單分支開發模式 確定基線、拉分支、合主幹、項目發佈、版本歸檔、持續交付 (2)多分支開發模式 確定基線、拉(特性)分支、同步/回滾/合主幹、項目發佈、版本歸檔、持續交付 (3)一站式服務模式 (4)分散式服務模式 (二)應用流程 多分支開發模式 1.1 確定基線 SVN-Trunk:工程Demo – 特性開發 – 穩定版本 1.2 拉分支 分支來源於穩定主幹,用於新功能的實現。穩定主幹均需符合以下條件: (1)   版本已發佈生產環境; (2)   版本 完成版本歸檔。 1.3 合併主幹 由提測分支合併,用於功能測試、測試環境、預發佈環境、生產環境的運行。 合併主幹需具備前置條件:提測郵件。提測郵件需具備以下六要素: 項目名稱、版本號、分支路徑、腳本路徑、部署手冊、功能邊界 (1) 直接合併主幹   提測版本號末位-1與當前主幹版本號一致。 (2)先同步該主幹,再合併主幹  2.1 提測版本號末位-1與當前主幹版本號不一致,且其他分支有歸檔記錄;  2.2 找到最近一次歸檔的版本號,同步歸檔的版本號,再合併主幹。 (3)先回滾上一版本,再合併主幹  3.1 提測版本號末位-1與當前主幹版本號不一致,其他分支無歸檔記錄,提測版本號末位-1在歷史版本中存在;  3.2 需找到主幹版本號末位-1的主幹,先回滾到上一版本,再合併主幹。 (4)先回滾分支對應主幹,再合併主幹  4.1 提測版本號末位-1與當前主幹版本號不一致,其他分支無歸檔記錄,提測版本號末位-1在歷史版本中不存在; 4.2需找到對應的拉分支時主幹,先回滾到對應主幹,再合併主幹。 1.4 項目發佈 (1)持續集成 Jenkins是將代碼進行統一的編譯打包、還可以放到tomcat容器中進行發佈。通過配置,將以前:編譯、打包、上傳、部署到Tomcat中的過程交由Jenkins,Jenkins通過給定的代碼地址URL,將代碼拉取到其“宿主伺服器”(就是Jenkins的安裝位置),進行編譯、打包和發佈到容器中。在Jenkins的宿主伺服器中必須要有可以進行:代碼clone(Git)、代碼編譯(Maven)、代碼運行(Tomcat)的基本環境。 (2)持續部署 Udeployer集合了Jenkins、swarm、docker等工具,在跨網段、跨內外網等方面可以靈活配置。在整個版本交付生命周期(包括部署在內)推薦使用Udeployer,能夠把人為的干預最小化、節省各環節等待時間,使得交付的流程更清晰化。一旦把人的干預去掉,質量就更加可預測,會變得更好。 四、產品特性介紹 (一)產品特性 l  一站式源碼生命周期管理 l  一站式版本生命周期管理 l  一站式容器生命周期管理 (二)應用特性 l  實現線上運維模式; l  開發    運維   開發的閉環; l  實現從源碼到服務的完整閉環; l  快速迭代,運維前置嵌入; l  統一的環境,灰度發佈,快速試錯/回滾; l  實現版本追溯並且持續反饋; (三)系統特性 l 底層服務由Python開發並對外暴露介面,實現對SVN、Jenkins、docker等終端服務調用; l Web端由Java開發,實現封裝Python介面渲染到瀏覽器並實現許可權管理; l  Java、Python基於docker容器開發部署,易擴展,易遷移,實現打包就走。 五、技術實現 (一)相關技術 l API介面開發規範 l Jenkins底層介面調用 l SVN多分支並行方案 l Docker、swarm容器技術 l WebSocket消息實時交互。 六、運維實施

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 哎哎 1、滑鼠移進網頁里,不見了= = 2、簡單的文字模糊效果 3、多重邊框 4、實時編輯CSS 5、CSS中簡單運算 6、border-radius 因為基本上很多人都是這麼用的: 稍微高端一點的是這樣的: v v 然而,終極黑科技是這樣用的: border-radius 它可以賦8個值:斜線前面 ...
  • SVG作為時下比較新穎的技術標準,已經建立了很多基於SVG的前端項目。由於SVG在繪製路徑上非常靈活,我們將很多網頁上的元素使用SVG來繪製而成,有各種人物、小圖標、小動畫等等。今天我們收集了18個非常新奇有趣的SVG繪製動畫,這些動畫大部分都是使用SVG結合一定的CSS3特性實現而成,效果讓人大為 ...
  • localStorage 本地存儲 、對象、存數據 、取數據 存儲的數據量在20M左右 localStorage 是window下麵的屬性,用的時候可以省略window 數據只能存儲字元串類型的 localStorage沒有過期時間,只要不刪除就永遠存在 同一個瀏覽器的不同視窗數據可以通用 不同的瀏 ...
  • 引言 JavaScript不區分整數值和浮點數值,全部使用浮點數值表示。當一個數字直接出現在JavaScript程式中,我們稱之為數字直接量(numeric litertal)。JavaScript支持多種格式的數字直接量。 整型直接量 在JavaScript程式中,用一個程式序列表示一個十進位整數 ...
  • 【背景】 如果你是剛進入WEB前端研發領域,想試試這潭水有多深,看這篇文章吧; 如果你是做了兩三年WEB產品前端研發,迷茫找不著提高之路,看這篇文章吧; 如果你是四五年的前端開發高手,沒有難題能難得住你的寂寞高手,來看這篇文章吧; WEB前端研發工程師,在國內是一個朝陽職業,自07-08年正式有這個 ...
  • 前言 最近在看《高性能網站建設》,記錄一下所學。 現在很多網站都是圖片形式的導航,點擊圖片跳轉到對應的鏈接。如果導航項目很多的話,圖片的數量就會很多,每需要載入一張圖片就會多一個HTTP請求。優化的方式之一就是使用圖片地圖 標簽 圖片地圖要用到map和area標簽 map標簽用於客戶端的圖片映射;a ...
  • 介面及面向介面編程 介面 介面的實現 ...
  • 前臺: 支持四套模版, 可以在後臺切換 系統介紹: 1.網站後臺採用主流的 SSM 框架 jsp JSTL,網站後臺採用freemaker靜態化模版引擎生成html 2.因為是生成的html,所以訪問速度快,輕便,對伺服器負擔小 3.網站前端採用主流的響應式佈局,同一頁面同時支持PC、平板、手機(三 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...