這是有關如何成為 DevOps 工程師的分步指南,並提供相關學習資源的連結。
如果您想了解有關 DevOps 的更多信息,請務必訂閱我的時事通訊。
如果您發現此儲存庫有幫助,請考慮在 Patreon 上支援我:
本路線圖的目的是讓您了解景觀。如果您對接下來要學習什麼感到困惑,路線圖將為您提供指導,而不是鼓勵您選擇炒作和流行的內容。您應該對為什麼一種工具比另一種工具更適合某些情況有一些了解,並記住炒作和流行並不總是意味著最適合這項工作。
如果您喜歡或正在使用此項目來學習或開始您的解決方案,請給它一顆星。謝謝!
下載PDF版本。
DevOps 工程師的學習資源(大部分免費)
1. 吉特
2. 學習程式語言
3.學習Linux和腳本
4.學習網路和安全
5.學習伺服器管理
6.學習容器
7.學習容器編排
8. 將基礎設施作為代碼來學習
9.學習CI/CD
10.學習監控和可觀察性
11.了解一個雲端提供者
12.學習軟體工程實踐
其他資源
工具
圖書
您的所有資源(檔案)都將保存在 GIT 儲存庫中。這些檔案是應用程式程式碼,也是基礎設施即程式碼。
Git是一個用於原始碼管理的免費工具。 Git 用於追蹤原始程式碼的更改,使多個開發人員能夠協同進行非線性開發。
兩個最受歡迎的 Git 平台是GitLab和GitHub 。
在這裡,您需要學習 Git 命令,例如 git clone、branch、merge,以及如何透過拉取請求在專案上進行協作。
資源:
Pro Git免費書籍
透過 Atlassian免費學習 Git
免費學習 Git 分支
在 CodeAcademy免費學習 Git 和 GitHub
Git 指令瀏覽器免費
免費的Git 沉浸式體驗
免費的視覺化 Git 參考
身為工程師,建議至少了解一種可用於編寫自動化腳本的程式語言。
DevOps-es 的一些流行程式語言是Python、Go 和 JavaScript 。
Python 是一種多範式語言。作為一種解釋性語言,程式碼在編寫後立即執行,並且語法允許以不同的方式編寫程式碼。 Python經常被推薦為新程式設計師應該學習的第一語言,因為它注重可讀性、一致性和易用性。
這裡需要學習程式語言的基本概念,例如文法、if/else、迴圈、資料結構等。
資源:
《用 Python 自動化無聊的事》免費書籍
Python 速成課程免費
現代 JavaScript 教程免費
JavaScript 初學者速成課程免費
Eloquent JavaScript,第 3 版,Marjin Haverbeke免費書
免費舉例
作業系統充當電腦使用者與其硬體之間的橋樑。其功能是提供一個使用者可以方便有效地運行程式的設定。
由於大多數伺服器都使用Linux 作業系統,因此您需要熟悉 Linux 及其 CLI。
Ubuntu是一種易於啟動的發行版。
此外,您需要了解腳本來自動執行開發和操作任務。
在這裡,您可以學習特定於作業系統的語言,例如Bash 或 Powershell ,或獨立的語言,例如 Python 或 Go。
資源:
作業系統 - 概述免費
Shell 腳本教學免費
Powershell 初學者教學:免費學習 Powershell 腳本
Bash 參考手冊免費
終極指南:免費開始使用 Ubuntu
FreeBSD 手冊免費
Linux 指令手冊免費
網路協定是一組已建立的規則,用於確定資料如何在同一網路中的不同裝置之間傳輸。從本質上講,它允許連接的設備相互通信,無論其內部流程、結構或設計有何差異。
在這裡您需要了解網路如何運作、如何配置防火牆、了解DNS如何運作、 OSI 模型、IP 位址、連接埠等。
資源:
免費解釋 OSI 模型
電腦網路:自上而下的方法圖書影片內容視頻
IT 專業人員的 TCP/IP 與網路基礎知識Pluralsight 課程
DevSecOps:掌握保護 CI/CD 的安全 | DevOps 管道Udemy 課程
DevOps 中的實務安全性:使用 DevSecOps書籍確保持續的安全性、部署和交付
確保 DevOps 安全:雲端中的安全圖書
伺服器管理包括伺服器可靠運作並以最佳效能等級所需的所有基礎設施監控和維護。有效的伺服器管理策略的主要目標是:
最大限度地減少伺服器速度下降和停機時間,同時最大限度地提高可靠性。
建置安全的伺服器環境。
擴展伺服器和相關操作以滿足組織隨著時間的推移的需求。
在這裡,您需要了解什麼是正向和反向代理、快取伺服器,以及如何操作Web 伺服器,例如 Nginx、Apache 或 IIS。
資源:
什麼是反向代理?自由的
緩存伺服器免費
反向代理與正向代理:差異免費
什麼是負載平衡?自由的
什麼是防火牆?自由的
NGINX 手冊免費
免費學習 Apache 伺服器
免費學習 IIS
容器是一種標準軟體單元,用於打包程式碼及其所有依賴項,因此應用程式可以快速可靠地從一個計算環境運行到另一個計算環境。
Docker是迄今為止最受歡迎的容器技術。 Docker 容器映像是一個輕量級、獨立的可執行軟體包,其中包括運行應用程式所需的一切:程式碼、執行時間、系統工具、系統程式庫和設定。在這裡,您需要了解如何運行容器、Docker Networking、Volumes、Dockerfiles,以及如何使用 Docker-Compose 運行多個容器。
資源:
什麼是容器?自由的
免費自下而上學習容器
TechWorld 與 Nana 為初學者提供的 Docker 教程免費
Docker 掌握:使用 Docker Captain Udemy 課程中的 Kubernetes +Swarm
什麼是服務網格?自由的
免費使用 Kubernetes 進行 DevOps
容器編排可自動化容器的部署、管理、擴充和網路。
容器編排可以在任何使用容器的環境中使用。它可以幫助您跨不同環境部署相同的應用程序,而無需重新設計。容器中的微服務使編排服務變得更加容易,包括儲存、網路和安全性。
這裡你需要了解Kubernetes是如何運作的,以及如何管理 Kubernetes 叢集並在其上部署應用程式。
資源:
TechWorld 與 Nana 為絕對初學者免費提供 Kubernetes 速成課程
入門:Kubernetes 是如何誕生的、它是什麼以及為什麼您應該關心文章
認證 Kubernetes 管理員 (CKA) 和實作測驗Udemy 課程
學習 Kubernetes - KodeKloud課程的初級到高級
了解何時免費使用叢集服務、Ingress 或 API 網關
了解服務網格解決哪些問題(免費使用抽象 smi-spec.io
免費了解如何自動化 TLS 和 DNS
Kubernetes 啟動並運行書籍
Kubernetes 學習路徑 - 50 天從零到英雄,來自 Microsoft免費
有時稱為IaC ,它指的是用於定義基礎設施的技術和工具,通常採用 YAML 或 JSON 等標記語言。基礎設施即代碼可讓工程師自動執行環境設定和拆卸。透過按需配置黃金副本環境來加速部署並降低風險。
Terraform是最受歡迎的基礎架構配置工具,但還有其他工具,例如 Ansible、Chef、Puppet 和 Vagrant。
這裡你需要知道如何進行基礎架構供應和組態管理。
資源:
GUI、CLI、API:免費學習基礎設施即程式碼的基本術語
免費官方 Terraform 教程
Terraform免費綜合指南
像專業人士一樣自動化 Terraform 文件!自由的
免費編寫可重複使用的 Terraform 模組
什麼是 Istio?自由的
木偶概覽免費
免費付費的木偶課程
免費開始使用 Ansible
學習 Ansible 基礎知識
免費和付費開始使用紅色帽子 Ansible
掌握 Ansible Udemy 課程
免費學習廚師
持續整合/持續部署 (CI/CD) 是一種透過在應用程式開發階段引入自動化來頻繁地向客戶交付應用程式的方法。 CI/CD 是解決整合新程式碼可能為開發和營運團隊帶來的問題的解決方案。
CI/CD 在應用程式的整個生命週期(從整合和測試階段到交付和部署)引入了持續自動化和持續監控。這些相互關聯的實踐通常稱為“ CI/CD 管道”,並得到開發和營運團隊的支持。
CI/CD 管道有不同的階段,例如:建置、測試和部署,但可能還包括更多活動:
從版本控制檢查程式碼並建立它
為不同類型的審核設定關卡
管理環境變數
重啟服務
執行測試
還有更多...
在這裡,您需要學習如何設定 CI/CD 伺服器、自動整合程式碼和觸發管道以及建置和套件管理工具。
一些流行的 CI/CD 工具包括 Jenkins、TeamCity、CircleCI、Bamboo、GitLab 和 Azure DevOps。
資源:
持續整合免費
CI/CD 管道:免費簡介
透過免費教學學習 GitLab
開始使用 GitLab CI/CD免費
Jenkins,從零到英雄:成為 DevOps Jenkins 大師Udemy 課程
免費學習 GitHub 操作
GitHub Actions免費的工作流程語法
免費學習 Azure DevOps
GitLab 備忘單免費
監控需要監督從規劃、開發、整合和測試、部署到營運的整個開發過程。它涉及生產環境中應用程式、服務和基礎設施狀態的完整即時視圖。
當我們的軟體投入生產時,這一點尤其重要,我們需要追蹤基礎架構和應用程式中的各種問題。
兩個最受歡迎的工具是Prometheus和Grafana 。
這裡你需要知道如何設定監控和視覺化資料。
資源:
什麼是可觀察性?全面的初學者指南免費
免費監控微服務的方式、原因和內容
DevOps 監控免費
免費應用基本與進階監控技術
免費學習普羅米修斯
免費學習 Grafana
彈性堆疊免費
雲端供應商提供 API 層來抽象化基礎架構並根據安全性和計費邊界進行配置。雲端在資料中心的伺服器上運行,但抽象巧妙地呈現與單一「平台」或大型應用程式互動的外觀。與雲端供應商快速調配、配置和保護資源的能力是現代 DevOps 巨大成功和複雜性的關鍵。
市場上最受歡迎的雲端供應商是AWS和Azure ,以及Google Cloud 。
在這裡你需要知道如何管理使用者和管理、網路、虛擬伺服器等。
資源:
考試 AZ-900:Microsoft Azure 基礎免費
Microsoft Azure 基礎認證課程 (AZ-900)免費
AZ-900 | Microsoft Azure 基礎完整課程、免費練習測驗、免費網站和學習指南
終極 AWS 認證雲端從業者 - 2022 Udemy
AWS 開發人員,由 Cloud Guru學習路徑
作為 DevOps 工程師,您可能會與敏捷世界中的其他開發人員一起工作,例如Scrum 。因此,了解SDLC的不同部分以及其中使用的工具非常重要。
此外,最好了解自動化測試是如何運作的,因為您需要以 CI/CD 方式設定它。
這裡你需要了解什麼是Scrum 、 SDLC的各個階段、自動化測試是如何運作的等等。
資源:
什麼是 Scrum?自由的
免費了解 Scrum 的方法
軟體開發生命週期 (SDLC) 階段和模型免費
Jira 敏捷入門指南:免費課程說明
免費學習安全
免費學習自動化測試
GitLab - DevOps免費初學者指南
常見 SDLC 模型免費
工作追蹤:** Asana、Monday、Jira、Trello、Azure Boards。
原始碼控制:Git、Github、GitLab、BitBucket、Azure DevOps。
CI/CD :Jenkins、Team City、Github Actions、Travis CI、Bamboo、Circle CI、Azure Pipelines、Octopus Deploy、Harness、CloudBees CodeShip。
原始碼分析:SonarQube、Veracode。
工件管理:Artifactory、Docker Container Register、npm、Yarn、NuGet。
設定管理:Terraform、Ansible、Puppet、Chef。
容器編排:Docker、Kubernetes、紅帽 OpenShift。
監控:Prometheus、Grafana、Splunk、Dynatrace、Kibana。
《DevOps 手冊:如何在技術組織中創造世界級的敏捷性、可靠性和安全性》 ,Gene Kim、Patrick Debois、John Willis、Jez Humble
本書介紹了產品開發、品質保證、IT 營運和資訊安全。對於那些剛接觸 DevOps 或想要了解更多關於 DevOps 的各個組件如何協同工作的人來說,這是一本很好的讀物。
加速:精實軟體與 DevOps 的科學:建構與擴展高效能技術組織,Nicole Forsgren、Jez Humble、Gene Kim
本書介紹了測量軟體交付效能背後的研究結果和科學基礎。對於將 DevOps 提升到高階管理層來說,它是一個很棒的工具。
持續交付:透過建置、測試和部署自動化實現可靠的軟體發布,Jez Humble,David Farley
它引入了自動化架構管理和資料遷移。許多後來成為標準的部署管道概念都是在本書中建立的。一些技術細節涵蓋了配置即程式碼、建置和部署自動化以及高效的測試技術。它主要是技術書籍。
團隊拓撲:組織業務和技術團隊以實現快速流程,Matthew Skelton、Manuel Pais
這本書討論瞭如何以一種能夠使價值快速流向客戶的方式組織團隊。它提供了一組四種基本團隊拓撲:流對齊團隊、支援團隊、複雜子系統團隊和平台團隊,這些團隊可以進行組合和調整以適應不同的組織環境。
有效的 DevOps:建立大規模協作、親和力和工具的文化,Jennifer Davis,Ryn Daniels
本書提供了提高團隊協調性的有效方法。它展示瞭如何打破資訊孤島、監控關係以及修復組織中團隊之間和內部出現的誤解。
鳳凰計畫:一本關於 IT、DevOps 和幫助您的企業獲勝的小說,Gene Kim、Kevin Behr、George Spafford
這是一本關於有效性和溝通的經典小說。 IT工作就像製造工廠的工作,必須建立一個系統來簡化工作流程。那裡最好的書之一。
站點可靠度工程、Betsy Beyer、Chris Jones、Jennifer Petoff、Niall Richard Murphy
本書解釋了Google的開發、部署和監控的整個生命週期,以及如何管理世界上最大的軟體系統(也稱為SRE)。任何認為自己更傾向於 DevOps 方面的「Ops」端的人,或者想要了解如何加強各個 Dev 和 Ops 團隊之間的聯繫的人都應該閱讀 SRE。
我們甚至可以將此路線圖呈現為漢堡:)。
如果您認為路線圖可以改進,請提交包含任何更新的 PR 並提交任何問題。另外,我將繼續改進這一點,因此您可能需要為該儲存庫加註星標以重新存取。
打開帶有改進的拉取請求
討論問題中的想法
傳播這個詞
Milan Milanović 博士 - 3MD 首席技術長。
Romano Roth - Zühlke 的 DevOps 主管。