什麼是 DevOps

一個小白2020發表於2020-05-11

  尋找一種快速完成應用程式開發,提高應用程式交付速度的方式已經成為現在很多企業的重中之重,隨著敏捷開發的不斷髮展,現在出現了DevOps,那麼什麼是DevOps呢?下面一起來了解一下相關的知識吧!

   什麼是 DevOps

  目前對 DevOps 有太多的說法和定義,不過它們都有一個共同的思想:解決開發者與運維者之間曾經不可逾越的鴻溝,增強開發者與運維者之間的溝通和交流。

  DevOps 是透過自動化的基本設施、自動化的工作流程和持續可測量的應用效能,來整合開 發團隊和運維團隊,以達到更高的合作效率和生產率。

  然而筆者認為 DevOps 不僅僅侷限在開發者和運維之間,更是一種文化的改變和鼓勵溝通、 交流、合作的行動,目的在於更加快速穩定地構建高質量的應用系統,這恰好體現了精益管理 的原則。我們也可以把 DevOps 看作一種能力。

   如何獲得這種能力呢?

  關鍵有兩點:

  一是全域性觀,要從軟體交付的全域性出發, 加強各角色的之間的合作;

  二是自動化,人機互動就意味著手工操作,應選擇那些支援指令碼化、無須人機互動介面的強大管理工具,比如各種受版本控制的指令碼,以及類似於 Zabbix 這樣的基礎設施監控工具和類似於 SaltStack、 Ansible 這樣的基礎設施配置管理工具等。

   DevOps 可以用一個公式表達:

  文化觀念的改變 + 自動化工具 = 不斷適應快速變化的市場

   其核心價值在於以下兩點:

  1.更快速的交付,響應市場的變化;

  2.更多地關注業務的改進與提升;

   精益管理的7個原則:

  消除浪費;

  增強學習;

  延遲決策;

  快速交付;

  團隊授權;

  內建完整性(完整性是為了讓客戶對產品的體驗具備平滑性和一致性);

  考慮全域性;

   DevOps的開發流程:

  提交

  工程師將程式在本地測試後,提交到版本控制系統如Git等;

  編譯

  持續整合系統(如 Jenkins CI),在檢測到版本更新時,便自動從 Git 倉庫里拉取 最新的程式,進行編譯、構建。

  單元測試

  Jenkins 完成編譯構建後,會自動執行指定的單元測試程式碼。

  部署到測試環境中

  在完成單元測試後, Jenkins 可將程式部署到與生產環境相近的測試環境中進行測試。

  預生產測試

  在預生產測試環境裡,可以進行一些最後的自動化測試,例如 Selenium 測試及與實際情況類似的測試,可由開發人員或客戶手動進行。

  部署到生產環境

  透過所有測試後,便可將最新的版本部署到實際生產環境裡。

  敏捷開發 2.0 解決的問題

  敏捷開發 2.0 是相對於敏捷開發而言的,敏捷開發意味著讓我們全面擁抱需求的變化, 但 是對於瞬息萬變的市場反饋還遠遠不足以應對,因此為了更加快速地發現問題和得到市場的快 速反饋,引入了持續整合(Continuous Integration, CI)和持續交付(Continuous Delivery, CD), 來更加高效地進行敏捷開發,即敏捷開發 2.0。現在的無程式碼開發平臺、低程式碼開發平臺、零程式碼開發平臺也是敏捷開發的產物,都是為了幫助企業提高應用程式的開發效率。

  持續整合

是一種軟體開發實踐,要求團隊成員經常整合其工作,每個人至少每天整合 一次會導致每天有多個整合。 整合是透過自動化的構建進行驗證的,這些構建執行回 歸測試,以儘快檢測整合中的錯誤。團隊慢慢會發現,這種方法有利於整合問題的大幅減少,更快地實現有凝聚力的軟體開發方式。持續整合也是 的一個重要特徵,可以幫助企業提高應用程式開發的效率。

  持續交付

  是在持續整合的基礎上,將整合後的程式碼部署到更貼近真實的執行環境的預 生產環境中。比如,我們完成單元測試後,可以把程式碼部署到連線資料庫的 Staging 環境中進行測試。如果程式碼沒有任何問題,則可以繼續部署到生產環境中 。

  持續部署

  是持續交付的更高階階段,即所有透過了自動化測試的改動都自動地部署到生產環境中。大多數公司如果沒有受制度的約束或其他條件的影響,則都應該以持續部署為目標。 在很多業務場景裡, 一種業務需要等待其他功能完成了才能上線, 這使得持續部署不可能實現。雖然可以使用功能轉換解決很多這樣的問題,但並不是每次都會這樣。 所以,持續部署是否適合某個公司是基於該公司的業務需求的,而不是技術限制。

  總結

  DevOps 不能只關注開發及運維,還應該關注產品、開發、測試、運維, 甚至對客戶的需求 也要有了解。而敏捷開發 2.0 要求將大而全的專案拆分成小的相對獨立的服務, 從一開始就不 僅僅只關注自動化部署,還要關注整個專案是否具備自動化的、可快速擴充套件的、完善的容錯機 制,以及零巖機和便捷的監控管理。為了實現敏捷開發 2.0, 我們需要採用持續部署、 微服務和 容器這三種技術方案。

  持續部署:能夠持續自動反饋應用程式的提交狀態,減少錯誤等; 同時為產品的交付提 供了質量保證,能快速投入市場。

  微服務:使技術選型、構架系統更自由:開發更快速、週期更短: 服務更容易擴充套件。

  容器: 使部署成百上千的微服務更加容易,系統更加穩定。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69968176/viewspace-2691213/,如需轉載,請註明出處,否則將追究法律責任。

相關文章