How To Learn DevOps 如何學習 DevOps 邁向現代化開發維運整合之路

2022-02-28

介紹關於 DevOps 的入門知識與概念,說明 DevOps 工程師與相關的工作內容是什麼,並討論 DevOps 所要追求的文化、精神、價值以及實務的方法與工具使用。

logo

說明

Courses

Coursera 由 IBM 授課的 IBM DevOps and Software Engineering Professional Certificate 可以旁聽下列各主題的課程:

Introduction to DevOps
Application Development using Microservices and Serverless
Test and Behavior Driven Development (TDD/BDD)
Continuous Integration and Continuous Delivery (CI/CD)

Extreme Programming 以及 Agile 都強調了開發人員對於需求變動的快速回應,並以價值成果的交付為目標。而 DevOps 則試圖弭平開發人員與維運人員之間的距離,讓敏捷不僅是在開發上,更可以兼顧到營運上。

Microsoft 1ES

How Microsoft develops with DevOps

1ES—Microsoft DevOps Story

DORA

Google 的 DORA's research program 是關於 DevOps 的年度研究報告,報告使用到的 DevOps 關鍵字可以做為參考。

Lead Time
前置時間、作業時間
Burnout
精神與體力的燃燒殆盡
Deployment Pain
將開發成果部署的壓力與焦慮感
Work in Process
半成品
Shift Left on Security
將資安檢測儘早在開發階段進行
Empowered Teams
向團隊授權選擇工具與技術的權限
Code Maintainability
原始碼的可維護性
Proactive Notifications
主動積極的通知機制
Trunk-based development
相對於 Feature Branch 的開發方式,單一主幹避免過多的分支造成合併困難
Silo
穀倉,形容開發團隊與 Infra 團隊各自為政的情況
Shadow IT
非組織正式的 IT 資源,通常源自於 IT 資源申請過於冗長,開發團隊自行尋求的解決方案 (自建或者雲端)

What is Trunk-Based Development

DevOps Roadmap

具體 DevOps 工程師需要具備的技能,可以從 roadmap.sh 技能路線圖一探究竟,roadmap.sh 是 GitHub 上非常熱門的專案,除了 DevOps 外,另有關於 Frontend, Backend 等工程師的技能路線圖。

從路線圖可以觀察到 DevOps 工程師不僅要具備開發能力,更要深入學習作業系統管理、使用 Terminal 以及服務與伺服器部署等技能。此外負責建立起 DevOps 流程的 CI/CD 技術 如Gitlab CI, Jenkins, GitHub Actions, Circle CI 以及 Travis CI 與 Infra 的容器化技術 包含 Docker, Ansible, Kubernetes 以及 Terraform 都是需要學習的。

Gene Kim

Gene Kim 的三本著作分別在 DevOps 圈有重大的影響,「鳳凰專案」「獨角獸專案」都是小說類型的書籍,藉由一家製造傳產如果藉由實踐 DevOps 來挽救業績與讓企業更上層樓。

另一本 DevOps Handbook 則是關於如何實際 DevOps 的指導書,以三步工作法為框架,企業該如何實踐 DevOps。

三本書相互關聯,可以做為初探 DevOps 的入門教材,小說的精彩讓不是要推行 DevOps 的學習者,也能從中學習到許多資訊部場真實面臨的場景,心有戚戚焉;對於要引入 DevOps 的學習者,則可以借鏡從小說的發展過程預見可能碰到的相同問題。

圖片來源:天瓏書局

DevOps 相關的大咖

Patrick Debois
Gene Kim
Andrew Clay Shafer
Bridget Kromhout
John Allspaw
John Willis
Jez Humble
Nicole Forsgren

獨角獸專案

Build 專案的困難
CI & CD 建立
微服務建立 & 專案分工團隊
專門的 QA 到融入的 QA
雲端化
核心業務與脈絡業務
五原則
Dev / QA / Infra

參考資料

DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)

My DevOps Tour 1.0