爲何大公司必定要使用 DevOps?

究竟什麼是DevOps? 要想回答這個問題,首先要明確DevOps這個過程參與的人員是誰,即開發團隊和IT運維團隊。那麼,DevOps的意圖是什麼呢?即在兩個團隊之間,創建良好的溝通和協做,更快更可靠的建立高質量軟件。安全

事實上,並非這兩個團隊之間的協做幫助交付了更好的軟件,而是「開發」和「運維」團隊之間的統一致使了軟件的改進,並以更快的速度交付。咱們不要忘記DevOps工具在實現自動化方面所扮演的角色。服務器

開發和運維「一體」的感受是由開發人員和操做工程師之間的技能組合和實踐的橋接以及自動化(DevOps)工具的實現引發的。世界各地的大型互聯網公司都已採用DevOps方法來完全改進其性能、安全性和團隊動態。 架構

在本篇文章中,讓咱們看看什麼是DevOps,以及它爲何如此重要。咱們將跟蹤DevOps軟件開發方法的演變,而後探索什麼是DevOps及其生命週期,並經過評估世界頂級公司,來看看如何使用DevOps來得到益處。運維

軟件開發的演變工具

多年來,DevOps從現有的軟件開發策略/方法發展而來,以響應業務需求。讓咱們簡要地看一下這些模型是如何演變的,以及它們最適合的場景。性能

image.png

緩慢而繁瑣的瀑布模型演變成敏捷,開發團隊在短期內完成軟件開發,持續時間甚至不超過兩週。如此短的發佈週期幫助開發團隊處理客戶反饋,並將其與bug修復一塊兒合併到下一個版本中。測試

雖然這種敏捷的SCRUM方法爲開發帶來了敏捷性,但它在運維方面卻失去了敏捷實踐的速度。開發人員和運維工程師之間缺少協做仍然會減慢開發過程和發佈。網站

DevOps方法就是基於對更好的協做和更快的交付的需求而產生的,DevOps容許用較少複雜問題的持續軟件交付來修復和更快地解決問題。spa

如今咱們已經瞭解了DevOps的發展,讓咱們來詳細看看DevOps是什麼。3d

什麼是DevOps?

DevOps是一種軟件開發方法,涉及軟件在整個開發生命週期中的持續開發、持續測試、持續集成、持續部署和持續監控。這些活動只能在DevOps中實現,而不是敏捷或瀑布,這就是爲何頂級互聯網公司選擇DevOps做爲其業務目標的前進方向。DevOps是在較短的開發週期內開發高質量軟件的首選方法,能夠提升客戶滿意度。

在不瞭解DevOps生命週期的狀況下,對DevOps的理解也會片面化。咱們以CORNERSTOEN一站式雲端DevOps平臺爲例。讓咱們看看它的DevOps生命週期,並探討它是如何與下圖所示的軟件開發階段相關聯。

CORNERSTONE | DevOps全流程解決方案

持續開發:

這是DevOps生命週期中軟件不斷開發的階段。與瀑布模型不一樣的是,軟件可交付成果被分解爲短開發週期的多個任務節點,在很短的時間內開發並交付。

image.png

CORNERSTONE任務模塊裏,任務分配給誰,就會是誰的責任。並且任務支持多責任人與子任務關聯,全部的任務和狀態都會體如今任務模塊裏,這個任務過程當中的參與人員隨時知道任務的狀態和目前碰到的問題,可有效推動工做的解決。有了CORNERSTONE可以幫助咱們追溯和監控,促進對於接任務的人員有效負起責任,並可以及時同步到信息。

持續測試:

在這個階段,開發的軟件將被持續地測試bug。CORNERSTONE平臺覆蓋完整的測試流程,可進行測試用例的編寫,創建用例庫,減小重複性操做,讓研發團隊的協做更高效,產品交付更快速。經常使用的兩個功能爲:

1)測試用例管理

經過編寫測試⽤例,制定測試計劃並執⾏,測試結果可直接關聯到缺陷,方便對問題進行跟蹤處理,實現對迭代質量的全程把控。

Clipboard Image.png

2)缺陷管理

強大的缺陷管理與統計功能,經過分組、解決狀態、優先級等列表對缺陷進行全方位記錄與跟蹤,同時明確缺陷責任人,及時跟進解決缺陷;同時支持導入導出功能,導出時支持任意格式,不受模板限制。

Clipboard Image.png

持續集成:

這是支持新功能的代碼與現有代碼集成的階段。因爲軟件在不斷地開發,更新後的代碼須要不斷地集成,並順利地與系統集成,以反映對最終用戶的需求更改。更改後的代碼,還應該確保運行時環境中沒有錯誤,容許咱們測試更改並檢查它如何與其餘更改發生反應。

image.png

CORNERSTONE⽀持將持續集成的結果部署到對應的測試環境,全部部署版本在測試環境中可隨時訪 問,⽀持灰度發佈到⽣產環境中。

持續部署:

它是將代碼部署到生產環境的階段。在這裏,咱們確保在全部服務器上正確部署代碼。若是添加了任何功能或引入了新功能,那麼應該準備好迎接更多的網站流量。所以,系統運維人員還有責任擴展服務器以容納更多用戶。

Clipboard Image.png

CORNERSTONE支持依賴腳本pipeline實現的DevOps,支持持續集成與自動化部署,可直接在可視化的服務器上進行操做,同時知足多種開發語言,完全解決敏捷開發在運維層面的瓶頸,方便開發人員對項目開發生命週期進行全盤管理。

持續監控:

這是DevOps生命週期中很是關鍵的階段,旨在經過監控軟件的性能來提升軟件的質量。這種作法涉及運營團隊的參與,他們將監視用戶活動中的錯誤/系統的任何不正當行爲。這也能夠經過使用專用監控工具來實現,該工具將持續監控應用程序性能並突出問題。

CORNERSTONE嵌⼊一體化監控運維平臺,實現IT環境的數字化、標準化,直接運維分析的基礎,減小人工干預,下降⼈工成本。

Clipboard Image.png

既然咱們已經肯定了DevOps的重要性,而且瞭解了它的不一樣階段以及所涉及的DevOps工具,如今讓咱們看看Facebook的一個案例研究,並理解爲何他們從敏捷轉向DevOps。咱們將採用Facebook曾推出的新特性的用例,這些新特性致使Facebook從新評估其產品交付並採用DevOps方法。

DevOps案例研究

曾經,Facebook向遍及全球的若干億用戶推出了一系列新功能——時間軸,推薦和音樂功能。發佈後Facebook上產生的巨大流量致使服務器崩潰, 推出的功能得到了用戶的大規模超常規響應,這致使了新功能產生了不可控的結果,使他們沒有預料到。

這致使了Facebook從新評估和戰略調整,從而使Facebook推出了暗啓動技術。使用DevOps原則,Facebook爲其新版本的發佈建立了如下方法。

image.png

Facebook暗啓動技術

暗啓動是在新功能徹底發佈給全部用戶以前,逐步將新功能,推廣到選定的一組用戶的過程。這容許開發團隊儘早得到用戶反饋,測試錯誤,而且還能夠測試基礎架構性能。

這種發佈方法是持續交付的直接結果,有助於實現更快,更迭代的版本,確保應用程序性能不會受到影響,而且用戶能夠很好地更新該版本。

image.png

在暗啓動技術中,新功能經過專用的部署管道發佈給小型用戶羣。在上面給出的Facebook暗啓動圖表中,能夠看到只打開了一個部署管道,將新功能部署到一組選定用戶。此時剩餘的數百條管道所有關閉。

持續監視部署功能的特定用戶羣,以收集反饋並識別錯誤。這些錯誤和反饋將被歸入開發,測試和部署在同一用戶羣中,直到功能變得穩定。一旦實現穩定性,經過啓用其餘部署管道,將逐步在其餘用戶羣上部署這些功能。

Facebook經過將代碼包裝在功能標記或功能切換中來實現此目的,該切換用於控制誰能夠看到新功能以及什麼時候查看。與此同時,模擬向用戶啓動代碼的所有效果,在向用戶開放所有功能以前,能夠及早的暴露應用程序基礎架構的痛點和區域,功能穩定後,將經過多個版本將其部署到其他用戶。

經過這種方式,Facebook擁有一個受控或穩定的機制,能夠爲其龐大的用戶羣開發新功能。相反,若是功能沒有獲得很好的響應,他們能夠選擇徹底回滾部署。這也幫助他們爲部署準備服務器,由於他們能夠預測網站上的用戶活動,並相應地擴展服務器。

總結

騰訊,阿里巴巴,百度以及許多領先的科技巨頭,在向全部人發佈以前,都使用暗發佈逐漸向一小部分用戶發佈和測試新功能。

DevOps的目的是更快速、更可靠地建立質量更好的軟件,同時開發、運維團隊之間進行更多的溝通和協做。它是一個自動化過程,容許快速、安全和高質量的軟件開發和發佈,同時保持全部利益相關者在一個循環中。這就是DevOps得到愈來愈多的大型互聯網公司青睞的真正緣由。想要了解更多DevOps解決方案,請百度搜索CORNERSTOEN官網瞭解體驗!

相關文章
相關標籤/搜索