charles
Charles
DevOps

DevOps & SRE

DevOps & SRE
0 views
4 min read
#DevOps
Table Of Content

DevOps 的名字由來,是 Development + Operations(開發營運)

常有人會問 DevOps === CI/CD ?

我的回答:是,但不回是全部。DevOps 可以說是一個原則。DevOps 原則內由包含 CI/CD,可以說是一個很多人聽到 DevOps 是會聯想到 CI/CD。

傳統的開發如下:

  • 設計新功能
  • 寫程式
  • 找 Bug
  • 修 Bug
  • 生出更多的 Bug

我們知道 DevOps 會有 Develop 和 Operations

Develop 開發左右間的問題Operations 維運
設計新功能衝突確保系統穩定

工程師的名言:服務能動就不要動他!但,這樣這的好嘛?

傳統的開發面臨的問題

  • 溝通不良
  • 交付速度慢
  • 開發速度慢
  • 協作障礙

DevOps 原則就是一個以解決衝突為前提的原則,原則內也有搭配自動化提升效率

RD 會問:開發人員也要有維運的觀念? SRE 回答:我想要要一起協作!

SRE 工程師會參與產品的

  • 計畫 Plan

    • 決定目標
    • 釐清要做的事
      • jira 或 google docs
  • 程式碼管理 Code

    • 程式碼建立
    • 軟體建立
    • 版本控制
      • github 或 gitlab
  • 建置 Build

    • 編譯、封裝程式碼
    • Docker Image 建置
      • docker、npm 或 maven
  • 測試 Test

    • 確保 Function 的可行性
    • 確保 Source Code 的可行性
    • 單元測試
    • 元件測試
    • 整合測試
      • vitest、crypress.io、mock 或 pytest
  • 發布 Release

    • Image 的版本
    • 兼容性問題
      • node 20 升級成 node 21
      • python 3.11 升級成 python 3.12
  • 部屬 Deploy

    • 將軟體部屬至機器上
      • Cloud Build、Helm 或 Kubectl
  • 操作/維運 Operate

    • 緊急事件回應
    • 日誌管理
    • 故障排除
      • Cloud Run、Cloud Function、GCE 或 GKE
  • 監控 Monitor

    • 警報
      • Google Chat、Telegram 或 Skype
    • 分析趨勢
    • 建立儀表板 (四項黃金指標)
      • 分別是延迟(Latency),流量(Traffic),错误(Errors)和饱和度(Saturation)
        • Cloud Logging、Cloud Morniting 或 Datadog

就這樣?監控之後就沒有事情做了?

當然不是!監控完,下一步就會根據監控的結果制定出新的計畫。服務哪裡可以優化的、流量調整和趨勢優化等…

制定計畫(Plan) 後就繼續 code → Build → Test → Release → Deploy → Operate → Monitor

這就是 DevOps 圖片的由來

Image

根據上圖的 DevOps 流程,會發現像是建置、測試、發布和部屬。都是屬於重複性的工作,將重複的事情交給機器去做?

CI 內有 Build 和 Test Stages 工作可以交給 Circle CI、Gitlab Runner、Github Actions 或 Jenkins CI 來實現

CD 內有 Deploy Stages,CD 會分成兩個部分

  • Continuous Delivery 持續交付

    • 自動發布至儲存庫
    • 手動部署至 Production 環境
  • Continuous Deployment 持續部署

    • 自動部署至 Dev、QA 和 Staging 環境

DevOps 實踐

Image

參考資訊