一步步實施 DevOps (五)

請首先閱讀:

  1. 一步步實施 DevOps (一)
  2. 一步步實施 DevOps (二)
  3. 一步步實施 DevOps (三)
  4. 一步步實施 DevOps (四)

自動化部署

本章節重點談自動化部署,每個人對自動化部署都有自己的理解,每個企業對自動化部署的需求也不同。

目前很多雲平臺開始推出一些列 DevOps 工具,體驗了一下,仍然處在初級階段,也不十分成熟。嚴格的說他們實現的 CD (持續部署)。

前面講過持續集成不是 DevOps,這裏我要說持續部署也不是 DevOps。CD是從CI中分離出來的,將部署單獨提煉出來。

自動化部署遠比 CD 要複雜,涉及包括:

 

  1. 網絡層:網絡設備管理,負載均衡切換,路由表管理
  2. 系統層:基礎設施,操作系統,軟件運行環境,
  3. 軟件層:軟件部署,CD部分
  4. 緩存層:緩存的刷新
  5. 搜索層:重建全文索引
  6. 數據層:數據庫結構管理,數據庫數據管理
  7. 日誌層:誰,什麼時間,做了什麼操作,結果怎樣
  8. 除此之外,管理上還需要提案和審批流程等等

所以 CD (持續部署)解決不了企業的生產環境自動化部署需求,CD緊緊是CI (持續集成)運行完成後,將構建物部署到指定的運行環境中。通常CD並不提供回撤功能,所以極少由企業使用 CD 部署生產環境。

Git -> 編譯 -> 測試 -> 打包 -> 構建物 -> 部署 -> 運行

CI/CD 的流水線作業只能部署單一項目,對於大型網站就無能爲例,例如很多大型網站:

  1. 構建過程非常複雜,不僅僅是一個項目打包, 而是需要多個模塊,處理複雜的配置過程。
  2. 一次部署多臺服務器,每個服務器可能有多個實例,實例間相互依賴關係
  3. 需要遵守嚴格的部署和啓動順序
  4. 記錄部署日誌,文件的新增,覆蓋,刪除
  5. 部署時間點
  6. 升級不僅僅是代碼,還有數據庫,緩存……
  7. 需要改變負載均衡設備節點,設置防火牆策略
  8. 需要有完備的回撤方案
  9. 除此之外好虛考慮增量部署和差異部署,例如部署100mb 以上的大文件,甚至GB尺寸的文件

很多 DevOps 方案注重 Docker,K8s解決方案。但實際情況 Docker 並不適用於所有場景,更多是物理服務器,虛擬機,雲主機,刀片服務器…

使用 Docker 的前提是,Docker必須部署在宿主主機上,在雲主機中部署 Docker 意義不大。

很多企業大量使用雲主機,對 Docker 並無強烈的需求。

運維需要怎樣的自動化部署工具:

 

  1. 項目管理:升級提案,工作流轉,工作審批
  2. 備份管理:任何生產環境部署前都需要備份,必須實現增量備份和差異備份。
  3. 環境管理:環境部署,基礎設施管理
  4. 階段管理:開發,測試,生產
  5. 倉庫管理:分支切換,分支保護(例如只允許合併不允許提交)
  6. 配置管理:每個階段擁有自己的配置
  7. 文件過濾:排除過濾,包含獲取,替換過濾(替換指定文件中的內容,用戶不同階段的差異區分)
  8. 覆蓋刪除:覆蓋指定文件,刪除指定文件
  9. 內容優化:Grup, Webpack 優化,壓縮js, css,html5, 圖片雪碧圖…..
  10. 自動構建:編譯,測試,測試報告,打包
  11. 部署管理:節點管理,增量部署,差異部署,md5sum 校驗檢查
  12. 部署腳本:部署前腳本(停止),部署後腳本(啓動)或者環境初始化,解決部署依賴
  13. 時間線:誰,什麼時間,做了部署,可以指定時間點隨時回撤到指定版本。
  14. 部署日誌:誰,什麼時間,做了什麼操作,產生什麼結果
  15. 部署報告:生產 Issue或Ticker 報告

版權聲明

轉載請與作者聯繫,轉載時請務必標明文章原始出處和作者信息及本聲明。

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