iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 12
1

身為 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

尚未有邦友留言

立即登入留言