DevOps – 快速釋出的解決方案
快速將新產品或新功能推向市場對於全球各組織來說都是一項具有挑戰性的任務。最艱難的任務是將開發、質量保證和IT運營等不同的團隊整合在一起,以最快的方式完成工作,儘快釋出產品。
人們已經發現,流程和實踐一直在不斷發展以克服這些挑戰。僅僅十年前,我們的企業界還沒有DevOps這個術語,但在2009年之後,一種方法定義了一套流程來協同開發、質量保證和IT運營,從而顯著減少產品上市時間,這通常被稱為DevOps。
DevOps方法論是一套旨在透過有效的溝通和協作來彌合開發、QA和運營之間差距的實踐,它將持續整合過程與自動化部署相結合。其目的是建立一個環境,以便快速可靠地開發、測試和釋出軟體產品。
傳統方法與DevOps方法
在傳統的瀑布方法中,開發人員根據其本地環境中的需求編寫程式碼。一旦產品構建完成,質量保證(QA)團隊就會在類似於生產環境的環境中測試產品。最後,當滿足所需需求時,產品就會發布到運營部門使用。從需求提出到產品部署到運營部門,整個過程需要很長時間。由於開發和運營兩個團隊獨立工作,產品最終在較長時間後到達運營部門的可能性很高。此外,產品可能無法按預期工作,或者可能面臨一些障礙。
而DevOps流程則採用了一種改進的方法來處理這些情況。它強調開發團隊、QA團隊和運營團隊之間的溝通和協作,以執行持續開發、持續整合、持續交付和持續監控流程,並藉助各種工具,從而彌合它們之間的巨大差距,並加快工作速度,實現更快的釋出。更快的釋出到運營部門使組織能夠快速響應業務需求的變化。
敏捷和DevOps之間的關係
DevOps的出現考慮了敏捷軟體開發方法的一個重要優勢,即使組織能夠快速釋出產品。但進一步新增更多流程使DevOps有別於敏捷。
敏捷原則僅適用於開發和QA流程,它相信建立小型團隊以便在短期內構建和釋出可工作的軟體,稱為衝刺。團隊只關注衝刺,與運營部門沒有溝通。
而DevOps更側重於在整個開發生命週期中持續參與開發、QA和運營團隊。運營團隊應該在討論專案目標、高階釋出時間表和其他業務需求時持續參與開發團隊。從一開始,運營團隊就應該向開發團隊提供與運營相關的需求,並且還需要驗證這些需求。對專案的持續監控以及持續有效的溝通可以加快週轉速度。
你能從DevOps中得到什麼?
讓我們討論一下我們可以從DevOps文化和流程中獲得的一些好處。
- 我們將獲得的最重要的益處是,它透過彌合相關團隊之間的差距並遵循持續開發流程,顯著縮短了產品上市時間。
- 團隊之間更好的同步為團隊成員提供了對正在進行的工作的**透明視野**,因此他們可以在問題或障礙真正出現之前看到它們。這有助於他們更好地規劃如何克服這些問題。
- 由於此流程的透明性,開發人員在開發產品時會有**一種所有權感**。他們實際上擁有從構思到運營的程式碼。
- 使用自動化工具在多個環境中進行**自動部署**允許您快速識別與環境相關的問題。通常,當環境不同時,需要花費大量時間來找出與環境相關的問題。
DevOps 的多種工具
由於DevOps是開發、QA和運營的協作,很明顯,單一工具無法滿足所有需求。因此,每個階段都需要多種工具才能成功執行所有操作。
讓我們來看看在不同階段可以使用的一些工具。
- 監控工具 – Nagios、NewRelic、Graphite等。
- 虛擬化和容器化工具 – Vagrant、VMware、Xen、Docker等。
- 構建、測試和部署工具 – Jenkins、Maven、Ant、Travis、Bamboo、Teamcity等。
- 配置管理工具 – Puppet、Chef、Ubuntu Juju、Ansible、cfengine等。
- 編排工具 – Zookeeper、Noah等。
- 雲服務 – Azure、Openstack、Rackspace等。
還有其他此類工具可用於程式碼合併、版本控制等,以有效地應用DevOps流程。
圍繞DevOps的誤解
儘管DevOps在幾十年前就出現了,但它對許多人來說仍然是一個新術語。因此,誤解是不可避免的。
有些人認為,實施DevOps允許開發人員奪走運營的工作。這完全是錯誤的。DevOps強調兩個團隊的協作努力,因此,擁有運營技能的開發人員將在快節奏的業務週期中獲得更大的優勢。
人們普遍認為,只需為所有工作實施一套工具就可以實踐DevOps。這是錯誤的;僅僅使用一些工具我們無法實現DevOps,但透過實踐其流程並明智地使用工具可以幫助我們實現其核心價值。
DevOps 正在日益流行,因為它透過開發和運營部門的協作,採用持續開發、持續整合、持續交付和持續監控流程,從而顯著縮短了產品上市時間。