為什麼大公司一定要使用 DevOps?

CORNERSTONE發表於2019-10-18

究竟什麼是 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任務模組裡,任務分配給誰,就會是誰的責任。而且任務支援多責任人與子任務關聯,所有的任務和狀態都會體現在任務模組裡,這個任務過程中的參與人員隨時知道任務的狀態和目前碰到的問題,可有效推進工作的解決。有了CORNERSTONE能夠幫助我們追溯和監控,促進對於接任務的人員有效負起責任,並能夠及時同步到資訊。


持續測試:


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



1)測試用例管理


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




2)缺陷管理


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



持續整合:


這是支援新功能的程式碼與現有程式碼整合的階段。由於軟體在不斷地開發,更新後的程式碼需要不斷地整合,並順利地與系統整合,以反映對終端使用者的需求更改。更改後的程式碼,還應該確保執行時環境中沒有錯誤,允許我們測試更改並檢查它如何與其他更改發生反應。



CORNERSTONE⽀持將持續整合的結果部署到對應的測試環境,所有部署版本在測試環境中可隨時訪 問,⽀持灰度釋出到⽣產環境中。


持續部署:


它是將程式碼部署到生產環境的階段。在這裡,我們確保在所有伺服器上正確部署程式碼。如果新增了任何功能或引入了新功能,那麼應該準備好迎接更多的網站流量。因此,系統運維人員還有責任擴充套件伺服器以容納更多使用者。



CORNERSTONE支援依賴指令碼 pipeline 實現的 DevOps,支援持續整合與自動化部署,可直接在視覺化的伺服器上進行操作,同時滿足多種開發語言,徹底解決敏捷開發在運維層面的瓶頸,方便開發人員對專案開發生命週期進行全盤管理。


持續監控:


這是 DevOps 生命週期中非常關鍵的階段,旨在通過監控軟體的效能來提高軟體的質量。這種做法涉及運營團隊的參與,他們將監視使用者活動中的錯誤/系統的任何不正當行為。這也可以通過使用專用監控工具來實現,該工具將持續監控應用程式效能並突出問題。


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



既然我們已經確定了 DevOps 的重要性,並且瞭解了它的不同階段以及所涉及的 DevOps 工具,現在讓我們看看 Facebook 的一個案例研究,並理解為什麼他們從敏捷轉向 DevOps。我們將採用 Facebook 曾推出的新特性的用例,這些新特性導致 Facebook 重新評估其產品交付並採用 DevOps 方法。 DevOps 案例研究


曾經,Facebook 向遍佈全球的若干億使用者推出了一系列新功能——時間軸,推薦和音樂功能。釋出後 Facebook 上產生的巨大流量導致伺服器崩潰, 推出的功能獲得了使用者的大規模超常規響應,這導致了新功能產生了不可控的結果,使他們沒有預料到。 這導致了 Facebook 重新評估和戰略調整,從而使 Facebook 推出了暗啟動技術。使用 DevOps 原則,Facebook 為其新版本的釋出建立了以下方法。



Facebook 暗啟動技術


暗啟動是在新功能完全釋出給所有使用者之前,逐步將新功能,推廣到選定的一組使用者的過程。這允許開發團隊儘早獲得使用者反饋,測試錯誤,並且還可以測試基礎架構效能。


這種釋出方法是持續交付的直接結果,有助於實現更快,更迭代的版本,確保應用程式效能不會受到影響,並且使用者可以很好地更新該版本。



在暗啟動技術中,新功能通過專用的部署管道釋出給小型使用者群。在上面給出的 Facebook 暗啟動圖表中,可以看到只開啟了一個部署管道,將新功能部署到一組選定使用者。此時剩餘的數百條管道全部關閉。


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


Facebook 通過將程式碼包裝在功能標記或功能切換中來實現此目的,該切換用於控制誰可以看到新功能以及何時檢視。與此同時,模擬向使用者啟動程式碼的全部效果,在向使用者開放全部功能之前,可以及早的暴露應用程式基礎架構的痛點和區域,功能穩定後,將通過多個版本將其部署到其餘使用者。


通過這種方式,Facebook 擁有一個受控或穩定的機制,可以為其龐大的使用者群開發新功能。相反,如果功能沒有得到很好的響應,他們可以選擇完全回滾部署。這也幫助他們為部署準備伺服器,因為他們可以預測網站上的使用者活動,並相應地擴充套件伺服器。


總結


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


DevOps 的目的是更快速、更可靠地建立質量更好的軟體,同時開發、運維團隊之間進行更多的溝通和協作。它是一個自動化過程,允許快速、安全和高質量的軟體開發和釋出,同時保持所有利益相關者在一個迴圈中。這就是 DevOps 獲得越來越多的大型網際網路公司青睞的真正原因。想要了解更多 DevOps 解決方案,請百度搜尋CORNERSTOEN 官網瞭解體驗!


更多原創文章乾貨分享,請關注公眾號
  • 為什麼大公司一定要使用 DevOps?
  • 加微信實戰群請加微信(註明:實戰群):gocnio

相關文章