想轉行DevOps工程師?快來看看DevOps工程師的學習路徑,少走彎路
DevOps方法論
:::tips
DevOps方法論的主要來源是Agile, Lean 和TOC, 獨創(chuàng)的方法論是持續(xù)交付。
:::
DevOps 是一種軟件開發(fā)方法,涉及持續(xù)開發(fā),持續(xù)測試,持續(xù)集成,部署和監(jiān)視。這一系列過程跨越了傳統上孤立的開發(fā)和運營團隊,DevOps 試圖消除它們之間的障礙。
因此,DevOps 工程師基本上與 Development 和 Operations 團隊合作,DevOps 是這兩個主要部分之間的鏈接。

DevOps經典圖書
- 《DevOps實踐指南》
- 《持續(xù)交付:發(fā)布可靠軟件的系統方法》&《持續(xù)交付 2.0》
- 《鳳凰項目》
- 《Effective DevOps》
必備技能
DevOps 包括諸如構建自動化、CI/CD、基礎架構即代碼等概念,并且有許多工具可以實現這些概念。由于這些工具數量眾多,因此可能會造成混亂和壓倒性的結果。
最重要的是要了解概念,并為每個類別的學習找一種特定的工具。例如,當你已經知道什么是 CI/CD 并知道如何使用 Jenkins 時,也將很容易學習同類型的其他替代工具。
接下來讓就來看看學習 DevOps 需要掌握哪些技能。

1)軟件開發(fā)的概念
作為一名 DevOps 工程師,你不會直接對應用程序進行編程,但是當你與開發(fā)團隊緊密合作以改善和自動化他們的任務時,你需要了解以下概念:
- 開發(fā)人員的工作方式
- 他們正在使用哪個 git 工作流程
- 如何配置應用程序
- 自動化測試
2)操作系統
作為 DevOps 工程師,你負責準備在操作系統上部署應用程序的所需要的基礎結構環(huán)境。并且由于大多數服務器是 Linux 服務器,因此你需要了解 Linux 操作系統,并善于使用命令行,所以你需要知道:
- 基本的 Shell 命令
- Linux 文件系統
- 管理服務器的基礎知識
- SSH 密鑰管理
- 在服務器上安裝不同的工具
3)網絡與安全
你還需要了解網絡和安全性的基礎知識才能配置基礎架構,例如:
- 配置防火墻以保護應用程序
- 了解 IP 地址,端口和 DNS 的工作方式
- 負載均衡器
- 代理服務器
- HTTP/HTTPS
但是,要在 DevOps 和 IT Operations 之間劃清界線,你不是系統管理員。因此,在這里不需要高級知識,理解和了解基本知識就夠了。IT 方面是這些 SysAdmins,Networking 或 Security Engineers 人的專長。
4)容器化
隨著容器成為新標準,你可能會將應用程序作為容器運行,這意味著你需要大致了解:
- 虛擬化的概念
- 容器的概念
- 學習哪個工具?Docker - 當今最受歡迎的容器技術
5)持續(xù)集成和部署
在 DevOps 中,所有代碼更改(例如開發(fā)人員的新功能和錯誤修復)都應集成到現有應用程序中,并以自動化方式連續(xù)地部署到最終用戶。因此,建立完整的 CI/CD 管道是 DevOps 工程師的主要任務和職責。
在完成功能或錯誤修正后,應自動觸發(fā)在 CI 服務器(例如 Jenkins )上運行的管道,該管道:
- 運行測試
- 打包應用程序
- 構建 Docker 鏡像
- 將 Docker Image 推送到工件存儲庫,最后
- 將新版本部署到服務器(可以是開發(fā),測試或生產服務器)
因此,你需要在此處學習技能:
- 設置 CI/CD 服務器
- 構建工具和程序包管理器工具以執(zhí)行測試并打包應用程序
- 配置工件存儲庫(例如 Nexus,Artifactory)
當然,可以集成更多的步驟,但是此流程代表 CI/CD 管道的核心,并且是 DevOps 任務和職責的核心。
學習哪個工具?Jenkins 是最受歡迎的人之一。其他:Bamboo,Gitlab,TeamCity,CircleCI,TravisCI。
6)云提供商
如今,許多公司正在使用云上的虛擬基礎架構,而不是管理自己的基礎架構。這些是基礎架構即服務(IaaS)平臺,可提供一系列服務,例如備份,安全性,負載平衡等。
因此,你需要學習云平臺的服務。例如。對于 AWS,你應該了解以下基本知識:
- IAM 服務-管理用戶和權限
- VPC 服務-你的專用網絡
- EC2 服務-虛擬服務器
- AWS 提供了更多的服務,但是你只需要了解你實際需要的服務即可。例如,當 K8s 集群在 AWS 上運行時,你還需要學習 EKS 服務。
AWS 是功能最強大,使用最廣泛的一種,但也是最困難的一種。
學習哪個工具?AWS 是最受歡迎的一種。其他熱門:Azure,Google Cloud,阿里云,騰訊云。
7)容器編排
如前所述,容器已被廣泛使用,在大公司中,成百上千個容器正在多臺服務器上運行,這意味著需要以某種方式管理這些容器。
為此目的,有一些容器編排工具,而最受歡迎的是 Kubernetes。因此,你需要學習:
- Kubernetes 如何工作
- 管理和管理 Kubernetes 集群
- 并在其中部署應用程序
學習哪個工具?Kubernetes - 最受歡迎。
8)監(jiān)視和日志管理
軟件投入生產后,對其進行監(jiān)視以跟蹤性能,發(fā)現基礎結構以及應用程序中的問題非常重要。因此,作為 DevOps 工程師的職責之一是:
- 設置軟件監(jiān)控
- 設置基礎架構監(jiān)控,例如用于你的 Kubernetes 集群和底層服務器。
學習哪個工具?Prometheus, Grafana...
9)基礎設施即代碼
手動創(chuàng)建和維護基礎架構非常耗時且容易出錯,尤其是當你需要復制基礎架構時,例如用于開發(fā),測試和生產環(huán)境。
在 DevOps 中,希望盡可能地自動化,那就是將“基礎結構即代碼(Infrastructure as Configuration)”引入其中。因此使用 IaC ,我們將使用代碼來創(chuàng)建和配置基礎結構,你需要了解兩種 IaC 方式:
- 基礎設施配置
- 配置管理
使用這些工具,可以輕松地復制和恢復基礎結構。因此,你應該在每個類別中都知道一種工具,以使自己的工作更有效率,并改善與同事的協作。
學習哪個工具?
基礎架構設置:Terraform 是最受歡迎的一種。配置管理:Ansible,Puppet,Chef。
10)腳本語言
作為 DevOps 工程師就常見的工作就是編寫腳本和小型的應用程序以自動化任務。為了能夠做到這一點,你需要了解一種腳本或編程語言。
這可能是特定于操作系統的腳本語言,例如 bash 或 Powershell。
還需要掌握一種獨立于操作系統的語言,例如 Python 或 Go。這些語言功能更強大,更靈活。如果你善于使用其中之一,它將使你在就業(yè)市場上更具價值。
學習哪個工具?Python:目前是最需要的一個,它易于學習,易于閱讀并且具有許多可用的庫。其他:Go,NodeJS,Ruby。
11)版本控制
上述所有這些自動化邏輯都作為代碼編寫,使用版本控制工具(例如Git)來管理這些代碼和配置文件。
學習哪個工具?Git - 最受歡迎和廣泛使用。
網站和博客
- DEOS :DevOps 國際峰會,以案例總結著稱;
- DevOpsDays:大名鼎鼎的 DevOpsDays 社區(qū);
- TheNewStack :綜合性網站,盛產高質量的電子書;
- DevOps.com :綜合性網站;
- DZone : 綜合性網站,盛產高質量的電子書;
- Azure DevOps:綜合性網站,盛產高質量的電子書;
- Martin Fowler :Martin Fowler 的博客;
- CloudBees Devops :Jenkins 背后的公司的博客

浙公網安備 33010602011771號