想轉行DevOps工程師?快來看看DevOps工程師的學習路徑,少走彎路

DevOps方法論

:::tips
DevOps方法論的主要來源是Agile, Lean 和TOC, 獨創的方法論是持續交付。
:::

DevOps 是一種軟件開發方法,涉及持續開發,持續測試,持續集成,部署和監視。這一系列過程跨越了傳統上孤立的開發和運營團隊,DevOps 試圖消除它們之間的障礙。
因此,DevOps 工程師基本上與 Development 和 Operations 團隊合作,DevOps 是這兩個主要部分之間的鏈接。
devopsgroup_blog_pipeline_assessment.jpg

DevOps經典圖書

  • 《DevOps實踐指南》
  • 《持續交付:發佈可靠軟件的系統方法》&《持續交付 2.0》
  • 《鳳凰項目》
  • 《Effective DevOps》

必備技能

DevOps 包括諸如構建自動化、CI/CD、基礎架構即代碼等概念,並且有許多工具可以實現這些概念。由於這些工具數量衆多,因此可能會造成混亂和壓倒性的結果。
最重要的是要了解概念,併爲每個類別的學習找一種特定的工具。例如,當你已經知道什麼是 CI/CD 並知道如何使用 Jenkins 時,也將很容易學習同類型的其他替代工具。

接下來讓就來看看學習 DevOps 需要掌握哪些技能。

1)軟件開發的概念

作爲一名 DevOps 工程師,你不會直接對應用程序進行編程,但是當你與開發團隊緊密合作以改善和自動化他們的任務時,你需要了解以下概念:

  • 開發人員的工作方式
  • 他們正在使用哪個 git 工作流程
  • 如何配置應用程序
  • 自動化測試

2)操作系統

作爲 DevOps 工程師,你負責準備在操作系統上部署應用程序的所需要的基礎結構環境。並且由於大多數服務器是 Linux 服務器,因此你需要了解 Linux 操作系統,並善於使用命令行,所以你需要知道:

  • 基本的 Shell 命令
  • Linux 文件系統
  • 管理服務器的基礎知識
  • SSH 密鑰管理
  • 在服務器上安裝不同的工具

3)網絡與安全

你還需要了解網絡和安全性的基礎知識才能配置基礎架構,例如:

  • 配置防火牆以保護應用程序
  • 瞭解 IP 地址,端口和 DNS 的工作方式
  • 負載均衡器
  • 代理服務器
  • HTTP/HTTPS

但是,要在 DevOps 和 IT Operations 之間劃清界線,你不是系統管理員。因此,在這裏不需要高級知識,理解和了解基本知識就夠了。IT 方面是這些 SysAdmins,Networking 或 Security Engineers 人的專長。

4)容器化

隨着容器成爲新標準,你可能會將應用程序作爲容器運行,這意味着你需要大致瞭解:

  • 虛擬化的概念
  • 容器的概念
  • 學習哪個工具?Docker - 當今最受歡迎的容器技術

5)持續集成和部署

在 DevOps 中,所有代碼更改(例如開發人員的新功能和錯誤修復)都應集成到現有應用程序中,並以自動化方式連續地部署到最終用戶。因此,建立完整的 CI/CD 管道是 DevOps 工程師的主要任務和職責。
在完成功能或錯誤修正後,應自動觸發在 CI 服務器(例如 Jenkins )上運行的管道,該管道:

  • 運行測試
  • 打包應用程序
  • 構建 Docker 鏡像
  • 將 Docker Image 推送到工件存儲庫,最後
  • 將新版本部署到服務器(可以是開發,測試或生產服務器)

因此,你需要在此處學習技能:

  • 設置 CI/CD 服務器
  • 構建工具和程序包管理器工具以執行測試並打包應用程序
  • 配置工件存儲庫(例如 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)監視和日誌管理

軟件投入生產後,對其進行監視以跟蹤性能,發現基礎結構以及應用程序中的問題非常重要。因此,作爲 DevOps 工程師的職責之一是:

  • 設置軟件監控
  • 設置基礎架構監控,例如用於你的 Kubernetes 集羣和底層服務器。

學習哪個工具?Prometheus, Grafana...

9)基礎設施即代碼

手動創建和維護基礎架構非常耗時且容易出錯,尤其是當你需要複製基礎架構時,例如用於開發,測試和生產環境。
在 DevOps 中,希望儘可能地自動化,那就是將“基礎結構即代碼(Infrastructure as Configuration)”引入其中。因此使用 IaC ,我們將使用代碼來創建和配置基礎結構,你需要了解兩種 IaC 方式:

  • 基礎設施配置
  • 配置管理

使用這些工具,可以輕鬆地複製和恢復基礎結構。因此,你應該在每個類別中都知道一種工具,以使自己的工作更有效率,並改善與同事的協作。
學習哪個工具?
基礎架構設置:Terraform 是最受歡迎的一種。配置管理:Ansible,Puppet,Chef。

10)腳本語言

作爲 DevOps 工程師就常見的工作就是編寫腳本和小型的應用程序以自動化任務。爲了能夠做到這一點,你需要了解一種腳本或編程語言。
這可能是特定於操作系統的腳本語言,例如 bash 或 Powershell。
還需要掌握一種獨立於操作系統的語言,例如 Python 或 Go。這些語言功能更強大,更靈活。如果你善於使用其中之一,它將使你在就業市場上更具價值。
學習哪個工具?Python:目前是最需要的一個,它易於學習,易於閱讀並且具有許多可用的庫。其他:Go,NodeJS,Ruby。

11)版本控制

上述所有這些自動化邏輯都作爲代碼編寫,使用版本控制工具(例如Git)來管理這些代碼和配置文件。
學習哪個工具?Git - 最受歡迎和廣泛使用。

網站和博客


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章