什麼是 DevOps?
DevOps 是 Development 和 Operations 何在一起的縮寫,目的是做到誰開發建構就由誰部屬和執行,把 Development 和 Operations 交給同樣一批人來處理,意味著開發人員也開始要協助進行傳統 SRE 所做的工作。
DevOps 體驗
近年來雲端運算由於快速的增長,DevOps 和雲原生的概念興起,所以不得不將多集群的微服務部屬到多個環境中。
工程師們突然被迫需要懂 N 種工具像是 K8s、Helm Chart、GitOps、Argo CD、Lens、Ansible、Terraform、Prometheus、Grafana、ELK 等等,而需要理解這些工具的目的只是為了部署和測試一個簡單程式碼更動。
本來由 SRE 所做的工作一夕之間全部被交給開發團隊,所以一整天的日常就會變成
- 進 Code 發 PR 等 CI
- CI 完成後執行 CD 的工具
- 透過工具觀察 K8s 上面的 Pod 是不是真的有如期長出來
- Pod 長出來後看看有沒有任何執行錯誤
- 確認長出來的 Pod 在跨不同群集之間的網路有沒有問題
- 透過監控工具來持續觀察是否有不正常的情況發生
可是等等,我們本來的應徵的工作範圍不是只有開發而已嗎? 怎麼又變成身兼 MIS 設定網路還有順便當個 SRE 在那邊維運了呢?
DevOps 心得與想法
在其他領域各行業幾乎都走專業分工,但在 IT 領域卻鼓勵誰建構就由誰執行,把 Development 和 Operations 交給同樣一批人來處理,開發人員被要求 End to End 的去部屬和運行應用。
理想上對 FANNG 等級的組織來說 DevOps 肯定很棒很有效,因為工程師們都非常優秀且會為了改善流程不斷努力。
但! 對於大多數團隊而言,其實問題重重。畢竟大多數公司都沒有那樣等級的員工,要實際執行 DevOps 並不簡單,畢竟大多日常的工作都做不完了,又怎麼會為了優化開發工作流程和體驗而投入資源?
取而代之的會是
- CD 怎麼按了沒反應
- 那個爛章魚怎麼一直轉
- Pod 怎麼起來之後一直噴錯
- 打其他 Service 怎麼沒通
- 怎麼 Pod 掛掉之後再起不能
然後很可能什麼事都還沒做到,重複那些 1-6 一整天就這麼結束了。小編認為大部分的工程師比較理想的情況需要的是使用現有的平台服務,將平台所需相關的專業工作交還給平台。
平台將所有操作都轉化成一致的服務體驗,讓每個人不用再了解整個工具鏈並且熟悉所有操作
如果是身為一個前端應用的開發者,如果使用平台服務我們就不需要考慮其他領域的複雜的問題:
- 資料庫有沒有規劃讀寫分離,效能會不會隨著使用者增多而下降?
- 跨系統之間資料該怎麼整合和安全性該怎麼處理?
DevOps 是一種理念,平台服務 (PAAS) 其實就是一個實踐 DevOps 平台,目的就是對運維細節進行封裝。
現在主流雲端服務廠商也都有提供,舉例來說像是 Google 的 Firebase 或是 AWS CDK 就是將 Best Practice 封裝好,讓開發工程師們不用了解太多的底層實現,就可以直接從運維或需求進行操作。
喜歡這篇文章,請幫忙拍拍手喔 🤣