網易嚴選如何建設 DevOps 工具鏈?

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"嚴選經過數年的發展,服務數已經過千,研發人員從數十人到數百人,項目交付的效率要求越來越高,這也意味着對產品研發效能提出了更大的挑戰。而研發效能的提升就很難繞開 DevOps 這個老生常談的名詞。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"背景"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"嚴選經過數年的發展,服務數已經過千,研發人員從數十人到數百人,項目交付的效率要求越來越高,這也意味着對產品研發效能提出了更大的挑戰。而研發效能的提升就很難繞開 DevOps 這個老生常談的名詞。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/87\/51\/877abe5a7202bb1cfdc64429c8d5c251.jpg","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"DevOps = Culture + Tools"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"DevOps 是一個循環遞進的過程。通過文化的指引,打造符合當前組織和文化的相關工具鏈,固化協作的規範、流程;然後隨着工具落地、實踐推廣,促使組織更快地發展和改進產品,從而進一步加強協作文化和方式。所有未通過工具 \/ 平臺固化下來的流程規範,如果僅僅依靠文檔和意識,當團隊快速擴大時,其腐化速度是超過想象的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"簡而言之,嚴選從 2019 年開始重整 DevOps 工具鏈的原因有三:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"需求變化快,研發效能挑戰變大。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"歷史規範和流程腐化,協同成本變高。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"整體架構開始轉向基於容器的微服務體系,工具鏈需要適應容器,適應雲。"}]}]}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"從哪裏做起"}]},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/e0\/8c\/e0cdbd12e51929a11b95958b33a5a28c.jpg","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"DevOps 中的每個環節都不是孤立的,工具鏈的建設需要着眼於“鏈”這個關鍵字,在規劃期就得考慮到各個環節的互通和協同。在嚴選,這些環節對應的核心職能分別是:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Plan :主要對應的是項目管理職能"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Build(Code):對應的是開發職能"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Test :主要對應的是質量保障職能"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Release(Deploy):主要對應在質量保障和運維職能"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Monitor :開發、質量保障和運維都會涉及"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"以嚴選現有的研發團隊人員構成,往小了說:建設 DevOps 工具鏈,就是將 PM、QA、SA 等不同崗位的職能,通過工具 \/ 平臺的方式賦能給開發團隊,進而讓整個項目團隊變“輕”,變敏捷,在保持質量的前提下提升交付 \/ 迭代效率。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們把核心環節中涉及到的事物抽象成以下 5 大關鍵對象,工具鏈的打造完全圍繞着這些關鍵對象的管理和對象之間關聯 \/ 轉換流程的管控來補缺及優化。優先確保各對象本身管理能力的補足,然後優化關聯 \/ 轉換的管控,例如:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"產品的監控管理能力覆蓋面不足,這是需要補缺的。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"項目自身管理的工具現有 Jira,符合需求;但缺失項目到工程關聯管理,也是要補缺的。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"工程到產品的轉換流程,工具已經不滿足需求,需要迭代更新。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/a0\/a3\/a00506e8b7f771a3739a62f515057ba3.jpg","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"整個工具鏈建設的核心原則:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"貼合組織架構,底層能力系統避免重複造輪子,上層流程系統根據業務和團隊現狀量身打造。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"能自動化的一定要自動化;一步做不到自動化的,要想着分幾步去達到,適量過度設計。"}]}]}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"切入的重點"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"CMDB"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"嚴選 CMDB 本質上是爲了管理產品,資源,人員這三者之間的關聯關係,不僅爲相關工具提供統一的模型概念,避免不同工具內對相同關聯模型的重複維護(不同於項目和工程,前者只在 jira 上管理,後者幾乎都在 gitlab;產品,資源涉及到的工具衆多,並且隨着架構演進,工具也更容易發生迭代);同時用於對齊開發、QA、SRE 之間的名詞 \/ 術語,降低溝通成本。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"嚴選 CMDB 中關鍵配置項的關係拓撲如下。最核心的配置項是:“服務”,通過服務串聯其他的配置項,也是爲了指引各團隊都能站在服務的角度去看待問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/32\/f4\/32bbd69f69dab36809b1bc4512c824f4.jpg","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"監控體系"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"監控體系需要的是全面性,才能在問題產生時第一時間被發現,並且避免遺漏。根據現有的技術積累,我們把監控分成 3 個板塊進行建設:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"資源監控:"},{"type":"text","text":"用於監控服務運行時所需資源。這一部分依賴開源的 open-falcon,基本功能完備,基本上開箱可用,有足夠好的擴展性。UI 交互比較反人類,上手門檻比較高。但這塊需要直接操作的人員有限,我們把最常用的資源可視化展示單獨基於 grafana 做成展示視圖。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"應用監控:"},{"type":"text","text":"用於監控應用的可用性和性能指標,包含了 app、web 前端、後端服務的全鏈路調用痕跡。底層依託嚴選的 caesar 系統(基於 pinpoint 的二次開發定製版),前端、客戶端部分由嚴選自研完成。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"架構大圖:"}]},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/42\/8f\/42a9cbd8854b31288e88df207e95468f.png","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"業務監控:"},{"type":"text","text":"用於監控應用的業務邏輯是否正確,基於數據湖的理念,提供海量數據秒級響應的實時監控能力。用戶能通過平臺快速完成數據源接入、數據模型構建、監控大盤定製和報警配置:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"各種數據源(日誌 \/binlog)快速接入大盤和報警功能"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"大促期間的數據實時監控。支撐若干日誌文件數萬至數十萬 rps(每秒記錄數) 的秒級計算"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"高併發。針對多個大盤,每個大盤多個圖表的情況,能夠支撐大促實際使用"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"業務實時監控(GoldenEye)底層強依賴嚴選自研的日誌平臺,支持容器化應用的日誌收集,放個架構圖:"}]},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/66\/0f\/66f9755c555c62e36a72630a9669540f.jpg","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"CI\/CD"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"CI\/CD 可以說是 DevOps 中的核心流程,嚴選在這塊碰到的問題有以下幾個:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"分支管理策略的不一致:大部分是主幹發佈方式,但也存在分支發佈方式,即使都屬於主幹發佈策略,分支命名方式也存在差異。分支合併的策略也有差異。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"CI\/CD 工具的統一性:有些團隊用的是 gitlab-ci;有些用的是 jenkins。用 gitlab-ci 的和代碼工程結合自然,可以省略 jenkins 上配置,易用性好;用 jenkins 的,可以更好地管控必需的 CI 任務,並且可以利用 jenkins 各種豐富插件,但需要每個項目團隊都有對 jenkins 比較瞭解的成員。相應的發佈工具也有不止一套系統。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"自動化測試覆蓋率不足:能夠真正達到比較高自動化程度的模塊較少,很多情況下是需要人工觸發,或者是人工執行並校驗的。CI\/CD 整個流程中,不同職能角色之間需要頻繁地交叉溝通。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"解決這些問題的抓手是統一“製品”概念, 以製品爲中心來編排和解耦整個 CICD 流程。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/07\/yf\/07b36df7b125689bc5d550665d720yyf.png","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"原本無論是單元測試階段,還是聯調階段,驗證的應用都是直接從代碼分支中編譯打包的;只有當 QA 驗證完畢後,纔會打出製品進行線上部署(也會有合併到主幹,並打出 tag,部署時基於指定 tag 完成編譯、打包、發佈上線流程)。這種方式下,很容易出現測試環境進行驗證的製品和實際上線的製品並不是同一個的情況(即使代碼相同,不同編譯打包流程下,比如打包的配置文件不一樣,就會導致應用包實際執行邏輯有差異),存在質量風險的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們的期望:開發交付給 QA 和最終線上部署的時候,製品是一致的,所有因環境不同導致的差異性配置信息應該基於配置中心動態獲取(也有做法是把不同環境的配置文件全部打包在製品內,然後通過環境變量動態挑選,而不是通過配置中心。但這種做法存在一定安全風險,比如在測試環境內會看到線上的一些連接地址、密鑰等)。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"因此,爲了能夠落地此規範,嚴選把“製品“的產出時機做了變化:從持續交付 (Continuous Delivery) 提前到持續集成 (Continuous Integration)  階段,確保 QA 的驗證流程是始於製品,而不是始於代碼庫。此外,把製品的產出規範落地到 CI 階段也更匹配應用容器化的建設。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"最終,CI\/CD 這塊的解決方案爲:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"從代碼到製品的 CI 過程,全部依賴 gitlab-ci 完成。梳理分支管理策略,觸發不同的集成流程,統一由開發完成。工程編譯,打包,代碼規範,基本測試的跟進修訂,這些本身就是開發更爲熟悉,採用 gitlab-ci 的方式,和工程結合更緊密,當工程變更的時候調整相應的 ci 任務也會更自然。同時,貫徹 Pipeline as Code 的方式,有助於後繼向 Auto-DevOps 演進。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"候選製品通過 QA 測試,並最終確定爲可部署的驗證流程在自動化測試體系內完成,目前通過嚴選自研的質量管理平臺管控必需的驗證任務,確保製品質量準出規範落實。這個環節可以全部由 QA 完成,不再需要強耦合開發。後繼通過自動化測試體系的不斷建設完善,執行效率會越來越高。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"製品管理、發佈計劃、不同資源上的部署實現由嚴選自研的 Opera 發佈平臺完成。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"研發效能平臺"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"整個 DevOps 體系高效運轉的前提是需要有一個統一的流水線,把各個環節進行有機地聯動,打通各個垂直領域內的能力。在嚴選,目前選擇集團的 Overmind 作爲這一板塊的解決方案,關鍵特性有以下三點:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":" 一站式"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"建立端到端持續交付流水線,讓研發團隊的注意力放在價值流動上,而不是放在各階段的待辦任務上,降低不同平臺的使用成本。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"可視化"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"整個流程的可視化,易於管控流程中的卡點,確保全鏈路的規範和過程質量。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"全流程的度量分析"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"\"If You Can't Measure It, You Can't Improve It\", 通過效能平臺能夠串聯不同領域的效能數據,發現數據和數據之間的關聯關係,從而在更全局的角度去審視可改進,可優化的瓶頸,避免長期處於頭痛醫頭,腳痛醫腳的救火狀態。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"後繼"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"嚴選 DevOps 工具鏈將會伴隨業務和研發團隊的發展所需,以螺旋向上的方式持續建設:一個階段重點建設各領域內的能力系統,提升具體方向上的功能深度和執行效率;一個階段重點建設跨領域的能力協作平臺,更有效地搭配不同能力,降低使用成本,並檢視能力覆蓋的缺失點。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"目前的建設主要在以下幾個方面:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"變更過程中的風險管控,整合不同系統的變更事件,統一風險定義並量化,爲 CD 提供輔助決策。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"服務的環境治理,用於解決 DevOps 流程中的環境衝突問題。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"將現有能力接口進行插件的標準化,便於後繼的能力迭代與輸出。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一張近期全景圖作爲本文總結:"}]},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/d5\/ec\/d555d2c45d018f10fdfab0dae00652ec.jpg","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"作者簡介"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Saga, 網易嚴選基礎技術部技術總監,負責嚴選技術中後臺建設,目前專注在業務中臺、DevOps 等效能提升方向的體系搭建和發展。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章