<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一文看懂云原生時代 DevOps 如何選型

          共 7394字,需瀏覽 15分鐘

           ·

          2022-03-06 00:03

          前? ? 言

          今天的中國互聯(lián)網(wǎng),正加速從消費互聯(lián)網(wǎng)向產(chǎn)業(yè)互聯(lián)網(wǎng)轉型,數(shù)字化變革逐漸滲透到每一個具體產(chǎn)業(yè),彈性算力已變成各行各業(yè)的水電煤,從底層驅動產(chǎn)業(yè)變革。以區(qū)塊鏈、IoT、人工智能、大數(shù)據(jù)等先進技術為代表,新的云原生基礎設施已經(jīng)就緒并將繼續(xù)演進,同時也會伴隨著與之配套的技術和管理范式的演進。DevOps 作為數(shù)字化時代 IT 研發(fā)和管理范式,是企業(yè)數(shù)字化轉型重要的組成部分。

          當前互聯(lián)網(wǎng)組件生態(tài)中,DevOps 工具和系統(tǒng)林林總總,令人眼花繚亂。選用與當前企業(yè)發(fā)展階段不適配的 DevOps 組件會導致:

          • 工具能力溢出,大量功能閑置,同時增加使用人員的上手成本;

          • 工具能力不足或功能過于泛化,無法滿足企業(yè)研發(fā)體量需求或無法靈活定制細節(jié);

          • 工具本身質量欠佳,后續(xù)相應的社區(qū)支持或服務保障缺失,導致穩(wěn)定性風險。

          基于以上問題,本文致力于為企業(yè)提供 DevOps 工程效率和運維環(huán)節(jié)(后續(xù)簡稱效維)工具說明及全景圖,并結合典型中國互聯(lián)網(wǎng)研發(fā)場景,提出適配不同體量和階段的企業(yè)的效維工具鏈選型,希望能幫助企業(yè)快速滿足數(shù)字化變革的要求,加速業(yè)務發(fā)展,引領業(yè)務創(chuàng)新。

          DevOps 及工具鏈概述

          DevOps 是 Development 和 Operations 的組合詞。它是一組過程、方法與系統(tǒng)的統(tǒng)稱,用于促進開發(fā)(應用程序 / 軟件工程)、技術運營和質量保障(QA)部門之間的溝通、協(xié)作與整合。

          圖 1 DevOps 范疇

          它是一種重視“軟件開發(fā)人員(Dev)”和“IT 運維技術人員(Ops)”之間溝通合作的文化、運動或慣例。透過自動化“軟件交付”和“架構變更”的流程,來使得構建、測試、發(fā)布軟件能夠更加地快捷、頻繁和可靠,把敏捷開發(fā)部門和運維部門之間的圍墻打通,形成閉環(huán)。

          在 DevOps 流程下,運維人員會在項目開發(fā)期間就介入到開發(fā)過程中,了解開發(fā)人員使用的系統(tǒng)架構和技術路線,從而制定適當?shù)倪\維方案。而開發(fā)人員也會在運維的初期參與到系統(tǒng)部署中,并提供系統(tǒng)部署的優(yōu)化建議。

          完整的 DevOps 生命周期一般包括以下六個階段。

          圖 2 DevOps 生命周期

          其中集成、部署、監(jiān)控三個環(huán)節(jié)屬于 DevOps 生命周期中核心環(huán)節(jié),是本文主要關注點。貫穿云原生 DevOps 整個生命周期的工具鏈全景圖如下:

          圖 3 云原生 DevOps 工具全景圖

          持續(xù)集成 & 持續(xù)部署

          持續(xù)集成可以幫助開發(fā)人員更加頻繁地(有時甚至每天)將代碼更改合并到共享分支或“主干"中。一旦開發(fā)人員對應用所做的更改被合并,系統(tǒng)就會通過自動構建應用并運行不同級別的自動化測試(通常是單元測試和集成測試)來驗證這些更改,確保這些更改沒有對應用造成破壞。持續(xù)集成的輸入是代碼,所以一個好的代碼托管工具是必不可少的。

          持續(xù)部署指的的是自動將開發(fā)人員的更改從存儲庫發(fā)布到生產(chǎn)環(huán)境,以供客戶使用。它主要為了解決因手動流程降低應用交付速度,從而使運維團隊超負荷的問題。部署過程中可能還會涉及到平滑遷移新老版本流量的過程,所以對服務發(fā)現(xiàn)工具也有一定的依賴。

          要實現(xiàn)持續(xù)集成和持續(xù)部署,自動化的流水線是基礎。本節(jié)將從代碼托管工具、集成流水線工具、服務發(fā)現(xiàn)工具三個方面進行工具對比介紹。

          代碼托管工具

          在選擇代碼托管工具的時候,主要關注以下三點:

          1. 可協(xié)同:在功能層面要包含倉庫管理、分支管理、權限管理、提交管理、代碼評審等代碼存儲和版本管理等功能,讓開發(fā)者更好的協(xié)同工作;

          2. 可集成:好的代碼托管服務應該具備靈活和簡易的三方工具集成能力,降低 DevOps 的實施落地成本 ;

          3. 安全可靠:這是最重要的一點,對于個人開發(fā)者可能無感,但是對于企業(yè)而言,代碼的安全性、服務的穩(wěn)定性、數(shù)據(jù)是否存在丟失的風險,是會最被優(yōu)先考量的點。

          常用代碼托管工具見下表:


          表 1 代碼托管工具對照表


          集成流水線工具

          集成流水線就像傳統(tǒng)的工業(yè)流水線一樣,在經(jīng)歷構建、測試、交付之后,生產(chǎn)出一代一代更新迭代的軟件版本。實現(xiàn)了軟件產(chǎn)品小步迭代、高頻發(fā)布、適時集成、穩(wěn)定的系統(tǒng)演進線路圖。在選擇集成流水線工具的時候,我們需要關注:

          1. 版本控制工具的支持;

          2. 每個構建是否可以支持指定多個代碼源 URLS;

          3. 是否支持構建產(chǎn)物管理庫,如公有云對象存儲等;

          4. 是否支持部署流水線,類似于一個或多個構建完成后觸發(fā)另一個構建;

          5. 是否支持并行構建;

          6. 是否支持構建網(wǎng)格,以及對網(wǎng)格內(nèi)機器管理的能力。如能否將多個構建同時分配到多個構建機器上執(zhí)行,以提高執(zhí)行速度;

          7. 是否有良好的開放 API,比如觸發(fā)構建 API、結果查詢 API、標準的 Report 接口等;

          8. 賬戶體系,是否支持第三方賬戶接入,如企業(yè) LDAP 等;

          9. 是否有良好的 Dashboard;

          10. 多語言支持;

          11. 與構建工具(如 Maven,Make,Rake,Nant、Node 等)和測試工具的集成。

          常用集成流水線工具如下表所示:

          2 持續(xù)集成&持續(xù)部署組件對照表

          服務注冊發(fā)現(xiàn)工具

          服務發(fā)現(xiàn)為 Deploy 的最后環(huán)節(jié),缺一不可。無論是四七層負載均衡,還是微服務、RPC 服務框架,服務發(fā)現(xiàn)都是產(chǎn)品投產(chǎn)的臨門一腳。服務注冊發(fā)現(xiàn)工具選型需要從生態(tài)發(fā)展、便利性、語言無關性等角度來綜合考量。

          常用的組件工具如下表:

          ?

          表 3 服務注冊組件對照表

          持續(xù)監(jiān)控

          服務的穩(wěn)定性離不開監(jiān)控系統(tǒng)的保駕護航。監(jiān)控系統(tǒng)為服務穩(wěn)定運行提供數(shù)據(jù)可視化、異常報警、異常定位、故障追蹤等能力;同時監(jiān)控系統(tǒng)還為服務持續(xù)優(yōu)化升級提供依據(jù)和考量標準。

          監(jiān)控系統(tǒng)有三大基石:指標、日志、分布式追蹤。

          指標體系:聚焦于故障發(fā)現(xiàn)環(huán)節(jié),服務以數(shù)字形式評估出服務 QPS、成功率、延遲、容量等關鍵指標,搭配報警系統(tǒng)可以保證當核心指標異常時及時通知開發(fā) / 運維人員。除了核心指標外,服務還可以將各模塊 / 階段的瓶頸點、外部依賴指標量化,建立更加完善服務狀態(tài)概覽,以便服務開發(fā) / 運維人員快速定位異常,完成根因分析。指標系統(tǒng)優(yōu)勢是聚合能力,用較少的存儲資源和計算資源表達系統(tǒng)內(nèi)部狀態(tài)。

          常用工具及功能對照如下:

          表 4 指標組件對照表格

          日志系統(tǒng):用于記錄服務內(nèi)發(fā)生的各類事件。日志系統(tǒng)聚焦故障定位環(huán)節(jié),與指標系統(tǒng)相比,日志系統(tǒng)具有更強的描述性,但也伴隨著更大的存儲空間和計算存儲資源要求。日志是常用的監(jiān)控方法,比如在具有外部依賴系統(tǒng)的服務中,一般會將外部系統(tǒng)發(fā)生的錯誤和錯誤原因以日志形式記錄下來,以便在故障定位和復盤時恢復異?,F(xiàn)場環(huán)境。常用方案為 ELK(Elasticsearch、Logstash 和 Kibana )。

          分布式追蹤系統(tǒng):用于分析服務調(diào)用關系。在微服務盛行的今天,服務之間調(diào)用關系越來越復雜,微服務之間相互影響也更加難以定位和排查。分布式追蹤系統(tǒng)聚焦于故障定位環(huán)節(jié),與指標體系和日志體系不同,分布式追蹤系統(tǒng)可以提供服務之間依賴拓撲信息,對于梳理系統(tǒng)調(diào)用拓撲、追蹤下游依賴導致的異常意義重大。

          常用工具及功能對照如下:

          表 5 分布式追蹤組件對照表

          企業(yè)評估模型
          DevOps 成熟度

          DevOps 成熟度是評估效維工具選擇的首要參考維度。不同企業(yè) DevOps 發(fā)展階段不一,為了更好地選擇適配企業(yè)實際情況的效維工具,我們需要從多維度進行評估:

          • 組織與文化:DevOps 需要文化與組織的變革,包括研發(fā)與運維、IT 與業(yè)務之間的隔閡及部門墻的打破。組織支持 DevOps 的力度,以及現(xiàn)階段文化與 DevOps 的匹配程度是這個維度的關鍵。

          • 敏捷開發(fā):DevOps 是敏捷開發(fā)理念的更科學的實踐體系,因此前期敏捷做得好不好直接影響到 DevOps 的效果,兩者是相輔相成的。

          • CI/CD:CI/CD 不僅僅是工具或流程,更是一種方法論,“持續(xù)"是其核心。CI/CD 管控從代碼提交那一刻到代碼運行在生產(chǎn)環(huán)境的整個過程。

          • 可視化與自動化:可視化是讓 DevOps 人性化的重要一環(huán),通過良好的可視化看板,可以快速發(fā)現(xiàn) DevOps 流程中的阻塞點和風險點。自動化一方面是為了更快推動價值流從左向右流動,另一方面也為了將人為失誤的風險降到最低。

          • 運維監(jiān)控與預警:開發(fā)與運維緊密合作,甚至是一個團隊,對于運維的監(jiān)控和預警對所有相關方可見。

          • 持續(xù)度量與改進:DevOps 的效果也是需要度量的,“如果你無法度量它,你就無法改進它”。DevOps 提倡更頻繁的直面問題,度量則是一種很好的方式幫助我們發(fā)現(xiàn)問題,并持續(xù)改進。

          幾乎沒有嘗試任何 DevOps 實踐,或只做了一些基礎的 DevOps 工作的企業(yè),適合選取更低門檻甚至是一站式的工具,功能可以比較單一,但主要注重價值流的流轉效率。而對于能成熟運用各種 DevOps 實踐的企業(yè),適合根據(jù)自己的實際需求選取特定環(huán)節(jié)的組件,并根據(jù)團隊和組織情況進行修改或定制。

          研發(fā)團隊規(guī)模

          效維團隊的人員規(guī)模,也會影響 CI/CD 及監(jiān)控工具鏈的選擇。我們把 20 人以下的效維團隊定義為中小團隊,20 至百人以上定義為大型團隊。正常來說,效維團隊的規(guī)模也同比研發(fā)團隊的規(guī)模。對于中小團隊來說,選擇學習曲線低、能快速搭建且有較完備社區(qū)或官方服務提供后續(xù)支持的工具為主,容忍功能相對單一。大型團隊因為有較充足的人力及技術實力,有條件選用有一定上手成本,但功能全面且支持深度定制甚至重構的工具。

          質量與穩(wěn)定性要求

          業(yè)務對運維服務質量的要求,也深度影響效維工具鏈的選擇和搭建。比如金融業(yè)務,對穩(wěn)定性和精確性有極高的要求,并且面臨外部強合規(guī)性的監(jiān)管,效維質量要求較高。而其它類似推薦的業(yè)務,即使出現(xiàn)問題也只是降低客戶體驗,比如展現(xiàn)相關度不高的商品或新聞,整體并不造成災難性的后果,效維質量就相對要求不高。

          針對于效維質量要求較高的項目,工具鏈的選擇傾向于功能覆蓋率較全,有大廠背書或業(yè)界口碑,歷史 bug 率不高的工具,整個的效維流程的時延以及效率相對較重。針對要求較低的項目,工具鏈的選擇傾向于能快速搭建,能覆蓋基本功能的工具鏈條。

          服務治理標準化程度

          企業(yè)的服務治理標準化程度也會影響效維工具鏈的選擇。服務治理標準化包括硬件的標準化、OS 的標準化、語言棧的標準化、通信協(xié)議的標準化、框架的標準化等。標準化程度較高的企業(yè),效維工具功能可以相對比較聚焦,不需要覆蓋各層級多種標準導致的技術復雜度。標準化程度較低的企業(yè),效維工具的體系和結構會比較龐雜,甚至在有些鏈路環(huán)節(jié)無法做到完全統(tǒng)一和自動化,需要效維人員深度參與修改與定制。

          典型企業(yè)型態(tài)效維工具鏈推薦

          結合以上的評估維度,我們認為典型的公司型態(tài)包括以下三種:

          初創(chuàng)型小微公司

          創(chuàng)業(yè)型企業(yè)一般選擇此種模型,此時公司以快速迭代服務、提升開發(fā)效率為第一個原則,運維能力有限。

          這種模型推薦使用如下方式搭建 DevOps 工具鏈:

          圖 4 建議工具鏈

          如上圖所示:

          • 推薦使用 GitLab 代碼管理,GitLab 是企業(yè)級的開源代碼托管軟件、生態(tài)成熟、穩(wěn)定、社區(qū)龐大、使用簡單。DevOps 代碼托管流程描述如下:

            1.Zadig 完成 CI/CD 流程,提供開發(fā) / 運維友好的 Web UI;

            2.構建服務鏡像,將鏡像推送到 Harbor,完成鏡像和服務版本管理;

            3.將服務部署于 Kubernetes,完成服務升級。

          • 推薦使用 Kubernetes 服務部署,Kubernetes 是 Google 開源的服務部署平臺,它具有開源、高效、穩(wěn)定、社區(qū)龐大的優(yōu)點。目前 Kubernetes 已經(jīng)成為了云原生的標準服務部署平臺,它大大減少了運維人員工作負擔。在團隊人數(shù)較少時采用 Kubernetes,不僅節(jié)省人力、服務部署升級效率高,還具有強大的系統(tǒng)可擴展性。采用 Kubernetes 部署服務流程描述如下:

            1.使用 Kubernetes Deployment,YAML/Helm chart 部署服務;

            2.使用 Kubernetes NodePort Service 進行服務發(fā)現(xiàn),這種方式簡單又高效;

            3.通過 Nginx 暴露服務,Nginx 掛載 NodePort Service 后端地址。

            4.Kubernetes 可以使用 BridgX 搭建,BridgX 支持管理公有云和私有云計算資源,基于 BridgX 搭建的運維系統(tǒng)可擴展性更高;

            5.使用公有云計算資源底座,成本低,運維難度低。

          • 推薦使用 CudgX + Grafana 搭建監(jiān)控系統(tǒng)

            1.使用 CudgX 建立指標體系,CudgX 是源代碼開放的智能診斷平臺,具有高可用、高性能、服務負載評估、服務冗余度保持等功能特點,采用 CudgX 存儲核心指標為服務自動擴縮容提供更高的可擴展性,同時 CudgX 兼容 Prometheus 生態(tài),已有基于 Prometheus 的監(jiān)控系統(tǒng)可以平滑遷移到 CudgX 系統(tǒng)。

            2.Grafana 是目前最為流行的監(jiān)控視圖軟件,并提供了簡單易用的報警功能,團隊規(guī)模較小時采用,既不會浪費太多運維時間,又能保證服務質量,還可以保證系統(tǒng)的可擴展性。

          采用此種監(jiān)控方案總結如下:

          • 使用 CudgX 業(yè)務打點,同時也能使用 Prometheus + CudgX 的組合;

          • 基于 Grafana 搭建視圖和報警功能。

          中型腰部公司

          此模型適合于業(yè)務穩(wěn)定性要求較高的企業(yè),此時企業(yè)一般有穩(wěn)定的服務和客戶群體,服務質量至關重要,需要完善的 DevOps 流程保障服務更新 / 發(fā)布過程中穩(wěn)定性要求,并滿足提高開發(fā)效率的訴求。

          此時推薦使用如下所示的方式搭建 DevOps 工具鏈:

          圖 5 建議工具鏈

          如上圖所示:

          • CI/CD 推薦使用 GitLab ,同時搭配 Zadig 提供易于用戶操作的 UI。采用此種代碼管理方式流程描述如下:

            1.使用 Zadig 持續(xù)集成,Zadig 提供了用戶友好的 WebUI,使用 Sonar 完成代碼檢查,完成單元 /C2C 測試流程,當所有驗證通過后觸發(fā)部署;

            2.構建服務鏡像,將鏡像推送到 Harbor,完成鏡像和服務版本管理;

            3.自動灰度流量到 SchedulX 。

          • 推薦使用 SchedulX 服務部署,原因為 SchedulX 具有完善的金絲雀發(fā)布功能,同時支持物理機和容器化部署。對于服務質量要求較高,代碼發(fā)布、服務更新應該有完善的灰度到全量更新流程,并且當核心指標異常時,應該阻斷變更,SchedulX 配合 CudgX 可以實現(xiàn)金絲雀發(fā)布、變更阻斷、動態(tài)擴縮容等功能,最大程度上保證服務質量。在服務質量要求較高的場景下,部分服務可能由于網(wǎng)絡或者資源隔離的原因,希望將服務部署在獨立的物理機中,SchedulX 既支持 Kubernetes 又支持物理機部署。采用 SchedulX 服務部署流程描述如下:

            1.服務更新請求提交至 SchedulX;SchedulX 根據(jù)服務部署類型,將服務灰度部署于物理機或者 Kubernetes;

            2.SchedulX 監(jiān)控核心指標,滾動發(fā)布,金絲雀發(fā)布,當指標異常時回滾更新操作;

            3.按照服務規(guī)模和復雜程度不同,用戶可能使用微服務架構,此時服務發(fā)現(xiàn)可以基于 Consul ;

            4.向外暴露服務可以通過 Nginx,向內(nèi)暴露服務可以通過 LVS;

          • 推薦使用 CudgX + Nightingale + ELK + Jaeger + Grafana 搭建監(jiān)控系統(tǒng)?;?CudgX 建立業(yè)務指標體系,具有高可用、高性能、高擴展性的特點,同時搭配 SchedulX 可以完成變更阻斷和服務自動擴縮容,大大提供服務穩(wěn)定性?;?Nightingale 完成基礎指標監(jiān)控,可以盡早預測 / 捕獲宿主機異常,避免或降低異常影響?;?ELK 完成日志收集,服務異常時快速定位故障環(huán)節(jié),降低故障影響?;?Jaeger 搭建分部署追蹤系統(tǒng),快速定位系統(tǒng)瓶頸點,定位故障服務。基于 Grafana 搭建監(jiān)控視圖和報警,為服務穩(wěn)定性保駕護航。

          基于此方案搭建監(jiān)控系統(tǒng)總結如下:

          • 使用 CudgX 完成業(yè)務指標打點與指標收集,完成業(yè)務指標監(jiān)控;

          • 使用 Nightingale 完成基礎指標打點與收集,完成物理機基礎指標(如 CPU/Memory/ 網(wǎng)卡等)監(jiān)控;

          • 使用 ELK 搭建日志系統(tǒng);

          • 使用 Jaeger 搭建分布式追蹤系統(tǒng);

          • 使用 Grafana 搭建視圖和報警系統(tǒng)。

          大型頭部公司

          此模型企業(yè)內(nèi)各服務和組件都趨于成熟,企業(yè)有高穩(wěn)定性要求的核心服務,有專業(yè)的運維團隊,需要完善的 DevOps 平臺來保障復雜的微服務體系下的服務質量。企業(yè)更關注于系統(tǒng)平臺化,將各類組件分門別類組合成為系統(tǒng)平臺,并搭建 CMDB 管理服務元數(shù)據(jù),按組織架構管理服務。

          此模型下平臺化成為主題,各組件有獨立部門負責平臺支持和運維,從微服務、監(jiān)控平臺、服務部署平臺三個平臺角度看,推薦系統(tǒng)架構如下所示:


          圖 6 建議工具鏈

          結? ? 語

          本文針對不同 DevOps 成熟度的企業(yè),量身推薦了持續(xù)集成、持續(xù)部署以及持續(xù)監(jiān)控的工具集合,希望能幫助廣大互聯(lián)網(wǎng)企業(yè),尤其是中小企業(yè),快速搭建起自己的效能及運維的平臺,助力企業(yè)快速交付,在日益激烈的行業(yè)競爭中收獲技術紅利。

          本文大部分內(nèi)容來自《星漢未來綜合運維解決方案》白皮書,適合各公司收藏以備技術選型時參考,感興趣的可以點擊【閱讀原文】鏈接下載。

          作者介紹

          田良智,星漢未來資深技術專家,曾就職于新浪等公司,擁有十多年運維經(jīng)驗,參與過多個運維系統(tǒng)從 0 開始搭建的過程。


          推薦閱讀:

          世界的真實格局分析,地球人類社會底層運行原理

          不是你需要中臺,而是一名合格的架構師(附各大廠中臺建設PPT)

          企業(yè)IT技術架構規(guī)劃方案

          論數(shù)字化轉型——轉什么,如何轉?

          華為干部與人才發(fā)展手冊(附PPT)

          企業(yè)10大管理流程圖,數(shù)字化轉型從業(yè)者必備!

          【中臺實踐】華為大數(shù)據(jù)中臺架構分享.pdf

          華為的數(shù)字化轉型方法論

          華為如何實施數(shù)字化轉型(附PPT)

          超詳細280頁Docker實戰(zhàn)文檔!開放下載

          華為大數(shù)據(jù)解決方案(PPT)

          瀏覽 52
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产精品视频免费在线观看 | 羞羞草视频| 青草九九在线观看视频 | 麻豆成人精品国产免费 | 国产一级a毛一级a看免费漫画 |