究竟什麼是DevOps? 要想回答這個問題,首先要明确DevOps這個過程參與的人員是誰,即開發團隊和IT運維團隊。那麼,DevOps的意圖是什麼呢?即在兩個團隊之間,建立良好的溝通和協作,更快更可靠的建立高品質軟體。
事實上,并不是這兩個團隊之間的協作幫助傳遞了更好的軟體,而是“開發”和“運維”團隊之間的統一導緻了軟體的改進,并以更快的速度傳遞。我們不要忘記DevOps工具在實作自動化方面所扮演的角色。
開發和運維“一體”的感覺是由開發人員和操作工程師之間的技能組合和實踐的橋接以及自動化(DevOps)工具的實作引起的。世界各地的大型網際網路公司都已采用DevOps方法來徹底改進其性能、安全性和團隊動态。
在本篇文章中,讓我們看看什麼是DevOps,以及它為什麼如此重要。我們将跟蹤DevOps軟體開發方法的演變,然後探索什麼是DevOps及其生命周期,并通過評估世界頂級公司,來看看如何使用DevOps來獲得益處。
軟體開發的演變
多年來,DevOps從現有的軟體開發政策/方法發展而來,以響應業務需求。讓我們簡要地看一下這些模型是如何演變的,以及它們最适合的場景。

緩慢而繁瑣的瀑布模型演變成靈活,開發團隊在短時間内完成軟體開發,持續時間甚至不超過兩周。如此短的釋出周期幫助開發團隊處理客戶回報,并将其與bug修複一起合并到下一個版本中。
雖然這種靈活的SCRUM方法為開發帶來了靈活性,但它在運維方面卻失去了靈活實踐的速度。開發人員和運維工程師之間缺乏協作仍然會減慢開發過程和釋出。
DevOps方法就是基于對更好的協作和更快的傳遞的需求而産生的,DevOps允許用較少複雜問題的持續軟體傳遞來修複和更快地解決問題。
現在我們已經了解了DevOps的發展,讓我們來詳細看看DevOps是什麼。
什麼是DevOps?
DevOps是一種軟體開發方法,涉及軟體在整個開發生命周期中的持續開發、持續測試、持續內建、持續部署和持續監控。這些活動隻能在DevOps中實作,而不是靈活或瀑布,這就是為什麼頂級網際網路公司選擇DevOps作為其業務目标的前進方向。DevOps是在較短的開發周期内開發高品質軟體的首選方法,可以提高客戶滿意度。
在不了解DevOps生命周期的情況下,對DevOps的了解也會片面化。我們
以CORNERSTOEN一站式雲端DevOps平台為例。讓我們看看它的DevOps生命周期,并探讨它是如何與下圖所示的軟體開發階段相關聯。
持續開發:
這是DevOps生命周期中軟體不斷開發的階段。與瀑布模型不同的是,軟體可傳遞成果被分解為短開發周期的多個任務節點,在很短的時間内開發并傳遞。
在
CORNERSTONE任務子產品裡,任務配置設定給誰,就會是誰的責任。而且任務支援多責任人與子任務關聯,所有的任務和狀态都會展現在任務子產品裡,這個任務過程中的參與人員随時知道任務的狀态和目前碰到的問題,可有效推進工作的解決。有了
能夠幫助我們追溯和監控,促進對于接任務的人員有效負起責任,并能夠及時同步到資訊。
持續測試:
在這個階段,開發的軟體将被持續地測試bug。
平台覆寫完整的測試流程,可進行測試用例的編寫,建立用例庫,減少重複性操作,讓研發團隊的協作更高效,産品傳遞更快速。常用的兩個功能為:
1)測試用例管理
通過編寫測試⽤例,制定測試計劃并執⾏,測試結果可直接關聯到缺陷,友善對問題進行跟蹤處理,實作對疊代品質的全程把控。
2)缺陷管理
強大的缺陷管理與統計功能,通過分組、解決狀态、優先級等清單對缺陷進行全方位記錄與跟蹤,同時明确缺陷責任人,及時跟進解決缺陷;同時支援導入導出功能,導出時支援任意格式,不受模闆限制。
持續內建:
這是支援新功能的代碼與現有代碼內建的階段。由于軟體在不斷地開發,更新後的代碼需要不斷地內建,并順利地與系統內建,以反映對最終使用者的需求更改。更改後的代碼,還應該確定運作時環境中沒有錯誤,允許我們測試更改并檢查它如何與其他更改發生反應。
⽀持将持續內建的結果部署到對應的測試環境,所有部署版本在測試環境中可随時訪 問,⽀持灰階釋出到⽣産環境中。
持續部署:
它是将代碼部署到生産環境的階段。在這裡,我們確定在所有伺服器上正确部署代碼。如果添加了任何功能或引入了新功能,那麼應該準備好迎接更多的網站流量。是以,系統運維人員還有責任擴充伺服器以容納更多使用者。
支援依賴腳本pipeline實作的DevOps,支援持續內建與自動化部署,可直接在可視化的伺服器上進行操作,同時滿足多種開發語言,徹底解決靈活開發在運維層面的瓶頸,友善開發人員對項目開發生命周期進行全盤管理。
持續監控:
這是DevOps生命周期中非常關鍵的階段,旨在通過監控軟體的性能來提高軟體的品質。這種做法涉及營運團隊的參與,他們将監視使用者活動中的錯誤/系統的任何不正當行為。這也可以通過使用專用監控工具來實作,該工具将持續監控應用程式性能并突出問題。
嵌⼊一體化監控運維平台,實作IT環境的數字化、标準化,直接運維分析的基礎,減少人工幹預,降低⼈工成本。
既然我們已經确定了DevOps的重要性,并且了解了它的不同階段以及所涉及的DevOps工具,現在讓我們看看Facebook的一個案例研究,并了解為什麼他們從靈活轉向DevOps。我們将采用Facebook曾推出的新特性的用例,這些新特性導緻Facebook重新評估其産品傳遞并采用DevOps方法。
DevOps案例研究
曾經,Facebook向遍布全球的若幹億使用者推出了一系列新功能——時間軸,推薦和音樂功能。釋出後Facebook上産生的巨大流量導緻伺服器崩潰, 推出的功能獲得了使用者的大規模超正常響應,這導緻了新功能産生了不可控的結果,使他們沒有預料到。
這導緻了Facebook重新評估和戰略調整,進而使Facebook推出了暗啟動技術。使用DevOps原則,Facebook為其新版本的釋出建立了以下方法。
Facebook暗啟動技術
暗啟動是在新功能完全釋出給所有使用者之前,逐漸将新功能,推廣到標明的一組使用者的過程。這允許開發團隊盡早獲得使用者回報,測試錯誤,并且還可以測試基礎架構性能。
這種釋出方法是持續傳遞的直接結果,有助于實作更快,更疊代的版本,確定應用程式性能不會受到影響,并且使用者可以很好地更新該版本。
在暗啟動技術中,新功能通過專用的部署管道釋出給小型使用者群。在上面給出的Facebook暗啟動圖表中,可以看到隻打開了一個部署管道,将新功能部署到一組標明使用者。此時剩餘的數百條管道全部關閉。
持續監視部署功能的特定使用者群,以收集回報并識别錯誤。這些錯誤和回報将被納入開發,測試和部署在同一使用者群中,直到功能變得穩定。一旦實作穩定性,通過啟用其他部署管道,将逐漸在其他使用者群上部署這些功能。
Facebook通過将代碼包裝在功能标記或功能切換中來實作此目的,該切換用于控制誰可以看到新功能以及何時檢視。與此同時,模拟向使用者啟動代碼的全部效果,在向使用者開放全部功能之前,可以及早的暴露應用程式基礎架構的痛點和區域,功能穩定後,将通過多個版本将其部署到其餘使用者。
通過這種方式,Facebook擁有一個受控或穩定的機制,可以為其龐大的使用者群開發新功能。相反,如果功能沒有得到很好的響應,他們可以選擇完全復原部署。這也幫助他們為部署準備伺服器,因為他們可以預測網站上的使用者活動,并相應地擴充伺服器。
總結
騰訊,阿裡巴巴,百度以及許多領先的科技巨頭,在向所有人釋出之前,都使用暗釋出逐漸向一小部分使用者釋出和測試新功能。
DevOps的目的是更快速、更可靠地建立品質更好的軟體,同時開發、運維團隊之間進行更多的溝通和協作。它是一個自動化過程,允許快速、安全和高品質的軟體開發和釋出,同時保持所有利益相關者在一個循環中。這就是DevOps獲得越來越多的大型網際網路公司青睐的真正原因。想要了解更多DevOps解決方案,請百度搜尋
CORNERSTOEN官網了解體驗!