iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 12
2
DevOps

就是「懶」才更需要重視DevOps系列 第 12

Day12 什麼是 CICD

身為 DevOps 人員具有 CICD 概念是在基本不過的,但倘若開發人員也了解 CICD 概念,更能有效降低錯誤發生,並提昇服務品質。那麼何謂 CICD

那麼何謂 CICD ,其實講的比較簡單一點就是將上程式的流程自動化,自動 build code、執行 unit test、自動更新線上服務...所有反覆步驟都轉為自動化執行。

但實際上 CICD 應該要拆成兩個部份來看,下圖是較為常見的 CICD 流程,開發人員執行 git pushGitlab 後,將程式更新至 Server 的步驟交由 Jenkins 負責。

那麼 CI & CD 分別負責哪些工作,且看下方介紹:

CI(Continuous integration),即是「持續整合」

  • 流程:

    • 「程式建置」
      開發人員在每一次的 Commit & Push 後,都能夠於統一的環境自動 Build 程式,透過此一步驟可以避免每個開發人員因本機的環境&套件版本不相同,造成 Service 異常。

    • 「程式測試」
      當程式編譯完成後,將會透過「單元測試」測試新寫的功能是否正確,或者確認是否有影響到現有功能,透過該步驟進行測試,可以避免掉開發人員遺忘於本機先行檢查,作為「雙重驗證」工用。

  • 目的:

    • 將低人為疏失風險
    • 減少人工手動的反覆步驟
    • 進行版控管制
    • 增加系統一致性與透明化
    • 減少團隊 Loading

CD(Continuous Deployment),即是「持續佈署」

  • 流程:

    • 「部署服務」
      透過自動化方式,將寫好的程式碼更新到機器上並公開對外服務,另外需要確保套件版本&資料庫資料完整性,也會透過監控系統進行服務存活檢查,若服務異常時會即時發送通知告至開發人員。
  • 目的:

    • 保持每次更新程式都可順暢完成
    • 確保服務存活

所以 CICD 通常會遵循著以下流程:


(取至網路)

CICD 工具介紹

  • GitLab (版控工具)
  • GitHub (版控工具)
  • Jenkins (自動化建置工具)
  • Drone (自動化建置工具)
  • Circle (自動化建置工具)
  • Docker (迅速佈署環境工具)
  • K8S (管理 Docker Container 工具)
  • Helm (快速建置各環境 K8S 工具)
  • Grafana (機器數據監控工具)
  • ELK (Log 蒐集工具)
  • Telegram (通訊、錯誤通知工具)
  • Slack (通訊、錯誤通知工具)

可以看一下此流程圖:

  • Jenkins 或者 ELKGrafana 等監控工具發現異常時,可即時傳送至Telegram 等通訊軟體作為提醒。

上一篇
Day11 Harbor 不讓你的 imge 暴露在外
下一篇
Day13 拋棄 Jenkins 奔向 Drone 吧
系列文
就是「懶」才更需要重視DevOps30

尚未有邦友留言

立即登入留言