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