DevOps 初學者指南

DevOps 的重要性是什麼,它對 IT 專業人員意味著什麼,方法、框架和工具的描述。

DevOps 初學者指南

自從 DevOps 一詞在 IT 世界流行以來,發生了很多事情。 由於生態系統的大部分內容都是開源的,因此重新考慮它的啟動原因以及它對 IT 職業意味著什麼非常重要。

什麼是 DevOps

雖然沒有單一的定義,但我相信 DevOps 是一個技術框架,它使開發和營運團隊之間能夠協作,從而更快地將程式碼部署到生產環境中,並具有迭代和自動化的能力。 我們將用本文的其餘部分來解釋這個主張。

「DevOps」這個詞是「開發」和「運營」這兩個詞的組合。 DevOps 有助於提高應用程式和服務的交付速度。 這使得組織能夠有效地服務客戶並在市場上更具競爭力。 簡而言之,DevOps 是開發和 IT 營運之間的結合,具有更有效的溝通和協作。

DevOps 涉及一種文化,其中開發、營運和業務團隊之間的協作被認為至關重要。 這不僅是工具的問題,組織中的 DevOps 也不斷讓客戶受益。 工具、人員和流程是其支柱之一。 DevOps 提高了組織在盡可能短的時間內交付高品質解決方案的能力。 DevOps 還可以自動化所有流程,從建置到部署、應用程式或產品。

DevOps 討論的重點是開發人員、以編寫軟體為生的人員以及負責維護該軟體的操作人員之間的關係。

開發團隊面臨的挑戰

開發人員往往熱情並渴望實施新方法和技術來解決組織問題。 然而,他們也面臨一些問題:

  • 競爭激烈的市場給按時交付產品帶來了很大的壓力。
  • 他們必須負責管理生產就緒程式碼並引入新功能。
  • 發布週期可能很長,因此開發團隊在實施應用程式之前必須做出一些假設。 在這種情況下,需要更多時間來解決部署到生產或測試環境期間出現的問題。

營運團隊面臨的挑戰

營運團隊歷來關注 IT 服務的穩定性和可靠性。 這就是為什麼營運團隊透過改變資源、技術或方法來尋求穩定性。 他們的任務包括:

  • 隨著需求的增加管理資源分配。
  • 處理生產環境中使用所需的設計或自訂變更。
  • 自行部署應用程式後診斷並解決生產問題。

DevOps 如何解決開發和營運問題

該公司不是一次推出大量應用程式功能,而是嘗試看看是否可以透過一系列發布迭代向客戶推出少量功能。 這種方法有很多優點,例如更好的軟體品質、更快的客戶回饋等。 這反過來又確保了客戶的高度滿意度。 為了實現這些目標,公司需要:

  • 降低發布新版本時的失敗率
  • 增加部署頻率
  • 在發布新應用程式時實現更快的平均恢復時間。
  • 減少修正時間

DevOps 執行所有這些任務並協助確保不間斷交付。 組織正在使用 DevOps 來實現幾年前難以想像的生產力水平。 他們每天執行數十、數百甚至數千次部署,同時提供世界一流的可靠性、穩定性和安全性。 (了解有關批量大小的更多信息 及其對軟體交付的影響)。

DevOps 嘗試解決過去方法所帶來的各種問題,包括:

  • 開發和營運團隊之間的工作隔離
  • 測試和部署是設計和建置之後發生的獨立階段,並且需要比建置週期更多的時間。
  • 花費過多時間進行測試、部署和設計,而不是專注於建立核心業務服務
  • 手動程式碼部署導致生產錯誤
  • 開發和營運團隊日程安排的差異導致額外的延誤

DevOps 初學者指南

DevOps、敏捷與傳統 IT 的對抗

人們經常將 DevOps 與其他 IT 實踐結合起來討論,特別是敏捷和瀑布式 IT。

敏捷是一套軟體生產的原則、價值和實踐。 因此,舉例來說,如果您有一個想要轉化為軟體的想法,您可以使用敏捷原則和價值觀。 但這個軟體只能運行在開發或測試環境中。 您需要一種簡單、安全的方法來快速、可重複地將軟體投入生產,而這種方法就是透過 DevOps 工具和技術。 敏捷軟體開發專注於開發流程,DevOps 負責以最安全、最可靠的方式進行開發和部署。

將傳統瀑布模型與 DevOps 進行比較是了解 DevOps 帶來的好處的好方法。 以下範例假設應用程式將在四個星期內上線,開發已完成 85%,應用程式將上線,並且購買伺服器來交付程式碼的過程才剛開始。

傳統工藝
DevOps 中的流程

訂購新伺服器後,開發團隊開始進行測試。 此工作組負責處理企業部署基礎架構所需的大量文件。
一旦下了新伺服器的訂單,開發和營運團隊就會共同製定安裝新伺服器的流程和文書工作。 這使您可以更好地了解您的基礎設施需求。

有關故障轉移、冗餘、資料中心位置和儲存要求的資訊被歪曲,因為沒有來自具有深厚領域知識的開發團隊的輸入。
由於開發團隊的輸入,有關故障轉移、冗餘、災難復原、資料中心位置和儲存要求的詳細資訊都是已知且正確的。

營運團隊不知道開發團隊的進度。 她還根據自己的想法制定了監控計劃。

營運團隊充分了解開發團隊所取得的進展。 她也與開發團隊互動,共同製定滿足 IT 和業務需求的監控計畫。 他們還使用應用程式效能監控(APM)工具。

在應用程式啟動之前進行的負載測試會導致應用程式崩潰,從而延遲其啟動。
在運行應用程式之前執行負載測試會導致效能不佳。 開發團隊快速解決瓶頸,應用程式按時啟動。

開發營運生命週期

DevOps 涉及採用某些普遍接受的實踐。

持續規劃

持續規劃依賴精實原則,從小事做起,確定測試業務或願景價值所需的資源和產出,不斷適應、衡量進度、從客戶需求中學習、根據需要改變方向以適應敏捷性,並重新制定業務計劃。

共同開發

協作開發流程允許分佈在不同時區的企業、開發團隊和測試團隊持續交付高品質的軟體。 這包括多平台開發、跨語言程式支援、使用者故事創建、構思開發和生命週期管理。 協同開發包括持續整合的流程和實踐,它促進了頻繁的程式碼整合和自動化建置。 透過頻繁地將程式碼部署到應用程序,可以在生命週期的早期(當它們更容易修復時)識別整合問題,並且隨著專案顯示持續且可見的進展,透過持續回饋減少整體整合工作。

持續測試

持續測試可以幫助開發團隊平衡速度和質量,從而降低測試成本。 它還透過服務虛擬化消除了測試瓶頸,並可輕鬆創建虛擬化測試環境,並可隨著系統變更輕鬆共享、部署和更新。 這些功能降低了配置和維護測試環境的成本,並縮短了測試週期時間,從而允許整合測試在生命週期的早期進行。

持續發布和部署

這些技術帶來了核心實踐:持續發布和部署。 這是透過自動化關鍵流程的連續管道來確保的。 只需按一下按鈕即可部署,從而減少手動步驟、資源等待時間和返工,從而實現更多發布、更少錯誤和完全透明。

自動化對於確保軟體發布穩定可靠發揮關鍵作用。 最大的挑戰之一是採用手動流程(例如建置、回歸、部署和基礎設施創建)並將其自動化。 這就需要源碼版本控制; 測試和部署場景; 基礎設施和應用程式配置資料; 以及應用程式依賴的庫和套件。 另一個重要因素是查詢所有環境狀態的能力。

持續監控

持續監控提供企業級報告,幫助開發團隊在將應用程式部署到生產之前了解生產環境中應用程式的可用性和效能。 持續監控提供的早期回饋對於減少錯誤成本和引導專案朝正確方向發展至關重要。 這種做法通常包括監控工具,這些工具通常會揭示與應用程式效能相關的指標。

持續反饋和優化

持續的回饋和優化提供了客戶流程的可視化表示並找出問題區域。 回饋可以包含在售前和售後階段,以實現價值最大化並確保更多交易成功完成。 所有這些都提供了影響客戶行為和業務影響的客戶問題根本原因的即時視覺化。

DevOps 初學者指南

DevOps 的好處

DevOps 可以幫助創建一個開發人員和維運團隊作為一個團隊工作以實現共同目標的環境。 這個過程中的一個重要里程碑是持續整合和持續交付(CI/CD)的實施。 這些技術將使團隊能夠以更少的錯誤更快地將軟體推向市場。

DevOps 的重要好處是:

  • 可預測性:DevOps 顯著降低了新版本的故障率。
  • 可維護性:如果新版本失敗或應用程式發生故障,DevOps 可以輕鬆恢復。
  • 可重複性:建置或程式碼的版本控制可讓您根據需要還原早期版本。
  • 更高的品質:解決基礎設施問題可以提高應用程式開發的品質。
  • 上市時間:優化軟體交付可將上市時間縮短 50%。
  • 降低風險:在軟體生命週期中實施安全性可以減少整個生命週期中的缺陷數量。
  • 成本效率:軟體開發中對成本效率的追求吸引了高階管理層。
  • 穩定性:軟體系統更穩定、安全,變更可審計。
  • 將較大的程式碼庫分解為可管理的部分:DevOps 基於敏捷開發方法,它允許您將大型程式碼庫分解為較小的、可管理的部分。

開發營運原則

DevOps 的採用催生了幾項已經發展(並將繼續發展)的原則。 大多數解決方案提供者都開發了自己的各種技術修改版。 所有這些原則都基於 DevOps 的整體方法,任何規模的組織都可以使用它們。

在類似生產的環境中進行開發和測試

其想法是使開發和品質保證 (QA) 團隊能夠開發和測試行為類似於生產系統的系統,以便他們可以在準備好部署之前了解應用程式的行為和執行方式。

應用程式應在其生命週期中儘早連接到生產系統,以解決三個主要的潛在問題。 首先,它允許您在接近真實環境的環境中測試應用程式。 其次,它允許您提前測試和驗證應用程式交付流程。 第三,它允許營運團隊在生命週期的早期測試部署應用程式時其環境的行為方式,從而允許他們創建高度客製化的、以應用程式為中心的環境。

使用可重複、可靠的流程進行部署

這項原則允許開發和營運團隊在整個軟體生命週期中支援敏捷軟體開發流程。 自動化對於創建迭代、可靠和可重複的流程至關重要。 因此,組織必須創建一個交付管道,以實現持續、自動化的部署和測試。 頻繁部署還允許團隊測試部署流程,從而降低即時發布期間部署失敗的風險。

監控和檢查工作品質

組織擅長監控生產中的應用程序,因為他們擁有即時擷取指標和關鍵績效指標 (KPI) 的工具。 這項原則將監控移至生命週期的早期,確保自動化測試在流程的早期監控應用程式的功能和非功能屬性。 每當測試和部署應用程式時,都必須檢查和分析品質指標。 監控工具可以對生產過程中可能出現的操作和品質問題提供預警。 這些指標必須以所有利害關係人均可存取和理解的格式收集。

改善回饋循環

DevOps 流程的目標之一是使組織能夠更快地做出回應並做出更改。 在軟體交付中,此目標要求組織儘早收到回饋,然後快速從所採取的每項行動中學習。 這項原則要求組織創建溝通管道,允許利害關係人以回饋方式存取和互動。 可以透過調整專案計劃或優先順序來完成開發。 製造業可以透過改善生產環境來發揮作用。

開發

  • 規劃: Kanboard、Wekan 和其他 Trello 替代品; GitLab、Tuleap、Redmine 和其他 JIRA 替代品; Mattermost、Roit.im、IRC 和其他 Slack 替代品。
  • 編寫程式碼: Git、Gerrit、Bugzilla; Jenkins 和其他 CI/CD 開源工具
  • 集會: Apache Maven、Gradle、Apache Ant、Packer
  • 測試: JUnit、Cucumber、Selenium、Apache JMeter

行動

  • 發布、部署、操作: Kubernetes、Nomad、Jenkins、Zuul、Spinnaker、Ansible、Apache ZooKeeper、etcd、Netflix Archaius、Terraform
  • 監控: Grafana、Prometheus、Nagios、InfluxDB、Fluentd 以及本指南中介紹的其他內容

(*操作工具已按照操作團隊使用的順序進行編號,但它們的工具與發布和部署工具的生命週期階段重疊。為了便於閱讀,編號已被刪除。)

總之

DevOps 是一種越來越流行的方法,旨在將開發人員和營運人員整合為一個整體。 它是獨一無二的,不同於傳統的 IT 運營,並且是敏捷的補充(但不夠靈活)。

DevOps 初學者指南

了解如何透過參加 SkillFactory 的付費線上課程從頭開始獲得受歡迎的職業或在技能和薪水方面升級:

更多課程

useful

來源: www.habr.com

添加評論