什麼是 DevOps
尋找一種快速完成應用程式開發,提高應用程式交付速度的方式已經成為現在很多企業的重中之重,隨著敏捷開發的不斷髮展,現在出現了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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 什麼是DevOps?dev
- Devops-01-devops 是什麼?dev
- 【Azure DevOps系列】什麼是Azure DevOpsdev
- 關於什麼是 DevOpsdev
- DevOps是什麼?DevOps能夠給我們帶來什麼?dev
- DevOps是什麼?5分鐘帶你瞭解DevOpsdev
- [專業術語]什麼是DevOps?dev
- DevOps的目標是什麼?有什麼好處?dev
- 讀材料後筆記:什麼是DevOps筆記dev
- 什麼是DevOps團隊拓撲? - atlassiandev
- 什麼是 SRE?它和 DevOps 是怎麼關聯的?dev
- DevOps是什麼?K8S在DevOps場景下的應用!devK8S
- 什麼是DevOps的三步工作法?dev
- 阿里巴巴DevOps實踐指南(一)| 為什麼DevOps的必然趨勢是BizDevOps阿里dev
- DevOps工程師到底做些什麼?dev工程師
- 給產品經理講講,什麼是持續交付和DevOpsdev
- 作為DevOps角色能做些什麼?dev
- [轉]DevOps究竟是什麼鬼?dev
- DevOps興起意味著專職測試人員消失?三分鐘測試:什麼是DevOps?dev
- DevOps vs. Agile有什麼共同點?dev
- 什麼是DNS,什麼是HostsDNS
- 這是什麼這是什麼
- 什麼是分而治之?什麼是WBS?
- 什麼是WebAuthn、FIDO 是什麼?Web
- 什麼是cookie,什麼是sessionCookieSession
- ###什麼是Linux核心###什麼是MMULinux
- ITIL是什麼意思?ITIL是什麼?
- SNP全稱是什麼? SNP是什麼公司? SNP是什麼意思?
- 資料庫DBA為什麼拒絕DevOps?資料庫dev
- 為什麼說容器和DevOps不分彼此?dev
- 人是什麼?人生是什麼?人為什麼會變?
- 什麼是正向代理?什麼是反向代理?
- NLA是什麼?NLA的原理是什麼?
- ftp是什麼,ftp是什麼東西?FTP
- Java是什麼_Java是做什麼的?Java
- 什麼是this
- 為什麼要有 Servlet ,什麼是 Servlet 容器,什麼是 Web 容器?ServletWeb
- 為什麼說GitOps是基礎架構即程式碼 (IaC) 和 DevOps 最佳實踐?Git架構dev