Devops入門手冊
DevOps 是什麼?
“DevOps”這個詞是 development
和 operations
這兩個詞的組合。它是一種促進開發和運維團隊之間的協作,以自動化和可重複的方式更快地將程式碼部署到生產中的 文化 。
DevOps 幫助團體提高軟體和服務的交付速度。它使團隊能夠更好地為客戶服務,並提高在市場中的競爭力。
簡而言之, DevOps 可以定義為通過更好的溝通和協作,使開發和運維保持一致。

本手冊中,您將學到:
- DevOps 與傳統運維有什麼不同?
- DevOps 與敏捷有什麼不同? DevOps VS Agile
- 誰可以做 DevOps 工程師?
- DevOps 工程師的角色、職責和技能
- DevOps 工程師可以掙多少錢?
- DevOps 的未來是怎樣的?
為什麼需要 DevOps ?
- 在實行 DevOps 之前,開發和運維團隊是完全孤立的。
- 測試和部署是設計在構建之後完成的獨立活動。因此,他們比實際構建週期消耗更多時間。
- 在不使用 DevOps 的情況下,團隊成員將大量時間花在測試,部署和設計上,而不是構建專案。
- 手動部署程式碼會導致生產中出現人為錯誤。
- 開發和運維團隊都有各自的時間表,時間的不同步導致生產交付進一步延誤。
提高軟體交付率是業務方最迫切的需求。根據 Forrester Consulting Study 統計,只有17%的團隊可以足夠快地交付軟體。更是證明了這一痛點。
DevOps 與傳統運維有什麼不同?
讓我們將傳統軟體瀑布開發模型與 DevOps 進行比較,以瞭解 DevOps 帶來的變化。
我們假設有一個應用程式計劃在2周內上線,程式碼完成80%。該應用程式是一個新的釋出,從購買伺服器開始
| 瀑布式開發 | DevOps |
| --- | --- |
| 訂購新伺服器後,開發團隊需要進行測試。運維團隊根據需求文件開始部署基礎設施。 | 訂購新伺服器後,開發和運維團隊根據需求文件共同除錯部署新伺服器。這樣開發人員可以更好地瞭解伺服器的基礎架構。|
| 關於故障轉移,冗餘策略,資料中心位置和儲存要求的規劃存在偏差,因為開發人員對應用程式有深入瞭解,但他們無法提供任何協助。 | 由於開發人員的加入,有關故障轉移,冗餘策略,災難恢復,資料中心位置和儲存要求的規劃非常準確。 |
| 運維團隊對開發團隊的進展一無所知。只能根據運維團隊理解制定監控計劃。 | 在 DevOps 中,運維團隊完全瞭解開發人員的進展。通過互動,共同制定滿足運維和業務需求的監控計劃。他們還使用應用程式效能監視(APM)工具以優化應用。 |
| 在上線之前,壓力測試使應用程式崩潰。釋出延遲了。 | 在上線之前,壓力測試使應用程式有點慢。開發團隊迅速解決了瓶頸問題。該應用程式按時釋出。 |
為什麼使用 DevOps ?
DevOps 允許敏捷開發團隊實施持續整合和持續交付。這有助於他們更快地將產品推向市場。
其他重要原因是:
- 可預測性: DevOps 可以顯著降低新版本的故障率。
- 自愈性: 可以隨時將應用回滾到較早的版本。
- 可維護性: 在新版本崩潰或當前系統不可用的情況下,可以毫不費力地進行恢復。
- 上線時間: DevOps 通過簡化軟體交付流程將上線時間縮短至50%。對於網際網路和移動應用時間更短。
- 更高的質量: DevOps 幫助團隊提高應用程式開發的質量。
- 降低風險: DevOps 在軟體交付的生命週期中包含安全檢查。它有助於減少整個軟體生命週期中的安全風險。
- 彈性: 軟體系統的執行狀態更穩定,更安全,更改是可審計的。
- 成本效益: DevOps 在軟體開發過程中提供了成本效益,這始終是網際網路公司管理層所期望的。
- 將大的程式碼庫分成小塊: DevOps 是基於敏捷程式設計方法的。因此,它允許將大的程式碼庫分解為更小且易於管理的塊。
什麼時候使用 DevOps ?
DevOps 應該用於大型分散式應用程式,例如電子商務站點或託管在雲平臺上的應用程式。
什麼時候不使用 DevOps?
它不應該用於關鍵任務應用程式,如銀行,電力設施和其他敏感資料站點。此類應用程式需要對生產環境進行嚴格的訪問控制,詳細的變更管理策略,完善的資料中心訪問控制策略。
DevOps 的生命週期

DevOps 是開發和運維之間的深度整合。在不瞭解 DevOps 生命週期的情況下,是無法真正理解 DevOps 的。
以下是有關 DevOps生命週期的簡要資訊:
- 開發
在此階段,整個開發過程分為小的開發週期。這有利於 DevOps 團隊加快軟體開發和交付過程。 - 測試
QA 團隊使用Selenium
等自動化測試工具來識別和修復新程式碼中的錯誤。 - 整合
在此階段,新功能與主分支程式碼整合,並進行測試。只有持續整合和測試才能實現持續交付。 - 部署
在此階段,部署過程持續進行。它的執行方式是任何時候在程式碼中進行的任何更改都不應影響高流量網站的執行。 - 監測
在此階段,運維團隊將負責處理不合適的系統行為或生產中發現的錯誤。
DevOps 的工作流

工作流允許排列和分離使用者最需要的任務。它還能夠在配置任務時反應其最理想過程。
DevOps 與敏捷有什麼不同? DevOps VS Agile
這是一個典型的IT流程

敏捷解決了客戶和開發人員溝通中的問題

DevOps 解決了開發人員運維人員溝通中的問題

| 敏捷 | DevOps |
| --- | --- |
| 強調打破開發人員和管理層之間的障礙。 | DevOps 是關於軟體開發和運維團隊的。 |
| 解決客戶需求與開發團隊之間的距離。 | 解決開發和運維團隊之間的距離。 |
| 重點關注功能和非功能準備。 | 它側重於運維和業務準備。 |
| 敏捷開發主要涉及公司對開發方式的思考。 | DevOps 強調以最可靠和最安全的方式部署軟體,而這些方式並不總是最快的。 |
| 敏捷開發非常注重培訓所有團隊成員,使他們擁有各種相同的技能。因此,當出現問題時,任何團隊成員都可以在沒有團隊領導的情況下從別的成員那裡獲得幫助。 | DevOps 在開發和運維團隊之間傳播技能,並保持一致的溝通。|
| 敏捷開發管理 “sprint” ,意味著時間更短(不到一個月),並且在此期間將產生和釋出多個功能。 | DevOps 努力爭取主要版本的穩定可靠,而不是更小和更頻繁的釋出版本。 |
DevOps 原則
這裡有六個在採用 DevOps 時必不可少的原則:
- 以客戶為中心: DevOps 團隊必須以客戶為中心,因為是他們不斷向我的產品和服務投資。
- 端到端的責任: DevOps 團隊需要在產品的整個生命週期提供效能支援。這提高了產品的水平和質量。
- 持續改進: DevOps 文化專注於持續改進,以儘量減少浪費。它不斷加快產品或服務改進的速度。
- 自動化一切: 自動化是 DevOps 流程的重要原則。這不僅適用於軟體開發,同時也適用於整個基礎架構環境。
- 作為一個團隊工作: 在 DevOps 文化角色中,設計人員,開發人員和測試人員已經定義。他們所需要做的就是作為一個團隊完成合作。
- 監控和測試所有內容: DevOps 團隊擁有強大的監控和測試程式是非常重要的。
誰可以做 DevOps 工程師?
DevOps 工程師是一名IT專業人員,他與軟體開發人員,系統運維人員和其他IT人員一起管理程式碼釋出。DevOps 應具備與開發,測試和運維團隊進行溝通和協作的硬技能和軟技能。
DevOps 方法需要對程式碼版本進行頻繁的增量更改,這意味著頻繁的部署和測試方案。儘管 DevOps 工程師需要偶爾從頭開始編碼,但重要的是他們應該具備軟體開發語言的基礎知識。
DevOps 工程師將與開發團隊的工作人員一起解決連線程式碼的元素(如庫或軟體開發工具包)所需的編碼和指令碼。
DevOps 工程師的角色、職責和技能
DevOps 工程師負責軟體應用程式平臺的生產和持續維護。
以下是 DevOps 工程師的一些角色,職責和技能:
- 能夠跨平臺和應用程式域執行系統故障排除和問題解決。
- 通過開放的,標準的平臺有效管理專案。
- 提高專案可見性和可追溯性。
- 通過協作提高開發質量並降低開發成本。
- 分析、設計和評估自動化指令碼和系統。
- 通過使用最佳的雲安全解決方案確保系統的安全。
- DevOps 工程師應該具備問題解決者和快速學習者的軟技能。
DevOps 工程師可以掙多少錢?
DevOps 是最熱門的IT專業之一。這就是為什麼那裡都有很多機會的原因。因此,即使是初級DevOps工程師的薪酬水平也相當高。在美國,初級DevOps工程師的平均年薪為78,696美元。
DevOps 培訓認證
DevOps 培訓認證可以幫助任何渴望成為 DevOps 工程師職業的人。認證可從 Amazon web services 、 Red Hat 、 Microsoft Academy 、 DevOps Institute 獲得。
此 DevOps 工程師證書將測試您如何使用最常見的 DevOps 模式在 AWS 上開發,部署和維護應用程式。它還會評估 DevOps 方法的核心原則。
該認證有兩個必要條件:認證費用為300美元,持續時間為170分鐘。
紅帽為 DevOps 專業人士提供不同級別的認證,如下所示:
- Red Hat Certificate of Expertise in Platform-as-a-Service
- Red Hat Certificate of Expertise in Containerized Application Development
- Red Hat Certificate of Expertise in Ansible Automation
- Red Hat Certificate of Expertise in Configuration Management
- Red Hat Certificate of Expertise in Container Administration
Devops Institute是圍繞新興 DevOps 實踐的全球學習社群。該組織正在為 DevOps 能力資格設定質量標準。Devops Institute目前提供三個課程和認證。
公司提供的認證課程有:
- DevOps Foundation
- DevOps Foundation Certified
- Certified Agile Service Manager
- Certified Agile Process Owner
- DevOps Test Engineering
- Continuous Delivery Architecture
- DevOps Leader
- DevSecOps Engineering
DevOps 自動化工具
所有測試流程自動化並對其進行配置以實現至關重要的速度和靈活性。此過程稱為 DevOps 自動化。
維護龐大的IT基礎架構的大型 DevOps 團隊面臨的困難可以簡要分為六個不同的類別。
- 基礎設施自動化
- 配置管理
- 部署自動化
- 效能管理
- 日誌管理
- 監測
讓我們看看每個類別中的工具以及它們如何解決痛點:
基礎設施自動化
亞馬遜網路服務(AWS):作為雲服務,您無需建立實際的資料中心。此外,它們易於按需擴充套件。沒有前期硬體成本。它可以配置為自動根據流量配置更多伺服器。
配置管理
Chef:它是一個有用的 DevOps 工具,用於提升速度,規模和一致性。它可用於簡化複雜任務並執行配置管理。使用此工具,DevOps 團隊可以避免在一萬臺伺服器上進行更改。相反,只需要在一個地方進行更改,這些更改會自動反映在其他伺服器中。
部署自動化
Jenkins:該工具有助於持續整合和測試。通過在部署構建後快速查詢問題,更輕鬆地整合專案更改。
日誌管理
Splunk:可以解決在一個地方聚合,儲存和分析所有日誌的問題的工具。
效能管理
App Dynamic:它是一個 DevOps 工具,提供實時效能監控。此工具收集的資料可幫助開發人員在發生問題時進行除錯。
監控
Nagios:在基礎架構和相關服務出現故障時通知相關人員也很重要。Nagios 就是這樣一種工具,它可以幫助 DevOps 團隊找到並糾正問題。
DevOps 的未來是怎樣的?
- 團隊將程式碼部署週期轉換為數週和數月,而不是數年。
- 很快就會看到,DevOps 工程師可以比企業中的任何其他人更多地接近和管理終端使用者。
- DevOps 正在成為IT人員的重要技能。例如,Linux 招聘進行的一項調查發現,25%的受訪者的求職者尋求 DevOps 工作。
- DevOps 和持續交付將繼續存在。因為公司需要發展,他們別無選擇,只能改變。然而,DevOps 概念的主流化則需要5到10年。
總結
- DevOps 是一種促進開發和運維團隊之間的協作,以自動化和可重複的方式更快地將程式碼部署到生產中的 文化 。
- 在 DevOps 出現之前運維和開發團隊完全獨立。
- 手動部署程式碼會導致生產中出現人為錯誤。
- 在舊的軟體開發流程中,運維團隊不瞭解開發團隊的進度。因此,運維團隊只能根據他們自己的理解制定了基礎設施的購買和監控計劃。
- 在 DevOps 流程中,運維團隊充分了解開發人員的進度。採購和監控計劃準確無誤。
- DevOps 提供可維護性,可預測性,更高質量的程式碼和更準確的上線時間。
- 敏捷流程側重於功能和非功能準備,而 DevOps 則側重於IT基礎架構方面。
- DevOps 生命週期包括開發,測試,整合,部署和監控。
- DevOps 工程師將與開發團隊工作人員合作,以解決編碼和指令碼編寫需求。
- DevOps 工程師應該具備問題解決者的軟技能,並且是一個快速學習者。
- DevOps 認證可從 Amazon web services,Red Hat,Microsoft Academy,DevOps Institute 獲得
- DevOps 可幫助團隊將程式碼部署週期轉換為數週和數月,而不是數年。