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

来源:https://www.cnblogs.com/3xmq/archive/2018/08/27/devops.html
-Advertisement-
Play Games

在本篇文章中,讓我們看看什麼是DevOps,為什麼它如此重要! 我們將首先跟蹤導致DevOps的軟體開發方法的演變,然後探索什麼是DevOps及其生命周期,並通過評估世界頂級公司如何使用DevOps來獲得益處。 ...


0 DevOps的意圖

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

事實上,並不是這兩個團隊之間的協作幫助交付了更好的軟體,而是“開發”和“運維”團隊之間的統一導致了軟體的改進,並以更快的速度交付。我們不要忘記DevOps工具在實現自動化方面所扮演的角色。

開發和運維“一體”的感覺是由開發人員和操作工程師之間的技能組合和實踐的橋接以及自動化(DevOps)工具的實現引起的。 世界各地的大型互聯網公司已採用DevOps方法來徹底改進其性能,安全性和團隊動態。 

在本篇文章中,讓我們看看什麼是DevOps,為什麼它如此重要! 我們將首先跟蹤導致DevOps的軟體開發方法的演變,然後探索什麼是DevOps及其生命周期,並通過評估世界頂級公司如何使用DevOps來獲得益處。

1 軟體開發的演變 

 

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

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

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

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

現在我們已經瞭解了DevOps的發展,讓我們來詳細看看DevOps是什麼。

2 什麼是DevOps? 

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

在不瞭解DevOps生命周期的情況下,對DevOps的理解也會片面化。現在讓我們看看DevOps生命周期,並探討它們如何與下圖所示的軟體開發階段相關聯。

持續開發:

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

 

這個階段包括編碼和構建階段,並使用Git和SVN等工具來維護不同版本的代碼,以及Ant、Maven、Gradle等工具來構建/打包代碼到可執行文件中,這些文件可以轉發給自動化測試系統進行測試。 

持續測試:

在這個階段,開發的軟體將被持續地測試bug。對於持續測試,使用自動化測試工具,如Selenium、TestNG、JUnit等。這些工具允許質量管理系統完全並行地測試多個代碼庫,以確保功能中沒有缺陷。在這個階段,使用Docker容器實時模擬“測試環境”也是首選。一旦代碼測試通過,它就會不斷地與現有代碼集成。

持續集成:

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

Jenkins是一個非常流行的用於持續集成的工具。使用Jenkins,可以從git存儲庫提取最新的代碼修訂,並生成一個構建,最終可以部署到測試或生產伺服器。可以將其設置為在git存儲庫中發生更改時自動觸發新構建,也可以在單擊按鈕時手動觸發。

持續部署:

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

由於新代碼是連續部署的,因此配置管理工具可以快速,頻繁地執行任務。 Puppet,Chef,SaltStack和Ansible是這個階段使用的一些流行工具。

容器化工具在部署階段也發揮著重要作用。 Docker和Vagrant是流行的工具,有助於在開發,測試,登臺和生產環境中實現一致性。 除此之外,它們還有助於輕鬆擴展和縮小實例。

持續監控:

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

使用的一些流行工具是Splunk,ELK Stack,Nagios,NewRelic和Sensu。這些工具可幫助密切監視應用程式和伺服器,以主動檢查系統的運行狀況。它們還可以提高生產率並提高系統的可靠性,從而降低IT支持成本。發現的任何重大問題都可以向開發團隊報告,以便可以在持續開發階段進行修複。

這些DevOps階段連續迴圈進行,直到達到所需的產品質量。下麵的圖表將顯示可以在DevOps生命周期的哪個階段使用哪些工具。

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

3 DevOps案例研究 

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

這導致了Facebook重新評估和戰略調整,從而使Facebook推出了暗啟動技術。 使用DevOps原則,Facebook為其新版本的發佈創建了以下方法。

Facebook暗啟動技術

暗啟動是在新功能完全發佈給所有用戶之前,逐步將新功能,推廣到選定的一組用戶的過程。 這允許開發團隊儘早獲得用戶反饋,測試錯誤,並且還可以測試基礎架構性能。 這種發佈方法是持續交付的直接結果,有助於實現更快,更迭代的版本,確保應用程式性能不會受到影響,並且用戶可以很好地更新該版本。

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

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

 

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

4 總結 

微信,淘寶,以及許多領先的科技巨頭,在向所有人發佈之前,都使用暗發佈逐漸向一小部分用戶發佈和測試新功能。

DevOps的目的是更快速,更可靠地創建質量更好的軟體,同時開發,運維團隊之間進行更多的溝通和協作。 它是一個自動化過程,允許快速,安全和高質量的軟體開發和發佈,同時保持所有利益相關者在一個迴圈中。 這就是DevOps獲得越來越多的大型互聯網公司青睞的真正原因。

作者:帝都羊 出處: http://3xmq.cnblogs.com/ 本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。如果覺得還有幫助的話,可以點一下右下角的【推薦】
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 智表(zcell)是一款瀏覽器仿excel表格jquery插件。智表可以為你提供excel般的智能體驗,支持雙擊編輯、設置公式、設置顯示小數精度、下拉框、自定義單元格、複製粘貼、不連續選定、合併單元格、插入行列、刪除行列、隱藏行列、鍵盤操作等。 ...
  • 一:JavaScript原生的方法 1:拿到select對象: var myselect=document.getElementById(“test”); 2:拿到選中項的索引:var index=myselect.selectedIndex ; // selectedIndex代表的是你所選中項的 ...
  • 展示: HTML: CSS: JavaScript: ...
  • import React, { Component } from 'react'; import '../assets/css/App.css'; import '../assets/css/Myone.css'; import 'element-theme-default'; import { B... ...
  • import React, { Component } from 'react'; import '../assets/public.css' import '../assets/App.css' import '../assets/chinatwo.css' import { Button,Ico... ...
  • 我們用原生JS進行開發時,經常會用到兩種更新DOM節點的方法:innerHTML 和 appendChild() 。其中 innerHTML 會完全替換掉原先的節點內容,如果我們是想向元素追加子節點的話,那麼 innerHTML 顯然滿足不了需求。 轉而我們就會想到 appendChild() 方法 ...
  • 從很久之前就已經接觸過了angularjs了,當時就已經瞭解到,angularjs是通過臟檢查來實現數據監測以及頁面更新渲染。之後,再接觸了vue.js,當時也一度很好奇vue.js是如何監測數據更新並且重新渲染頁面。今天,就我們就來一步步解析vue.js響應式的原理,並且來實現一個簡單的demo。 ...
  • Apache Kafka是分散式發佈-訂閱消息系統,在 kafka官網上對 kafka 的定義:一個分散式發佈-訂閱消息傳遞系統。 它最初由LinkedIn公司開發. Linkedin於2010年貢獻給了Apache基金會併成為頂級開源項目。Kafka是一種快速、可擴展的、設計內在就是分散式的,分區 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...