網易嚴選基於“服務畫像”的長效穩定效能力建設實踐

陶然陶然發表於2022-12-27

  本文根據張偉傑在【第十五屆中國系統架構師大會(SACC2022)】線上演講內容整理而成。

本期分享嘉賓

網易高階技術專家 張偉傑

  【嘉賓介紹】來自網易嚴選,12年起從事技術質量工作,先後就職阿里、網易公司。目前作為穩定性保障、資料演算法質量團隊負責人,從事效能&穩定性、大資料&演算法質量、研發效能等方向解決方案建設。

   本文摘要:微服務架構下的複雜線上系統,在保證系統穩定性方面存在以下典型難點:

  1,從微觀視角看,除了基建、運維的傳統專職角色外,穩定性保障職責大多拆分到了各個“小型”研發團隊手中。在繁重的需求壓力下,各研發團隊面臨精力有限、目標模糊、人員交替等難題,導致穩定性建設水平參差不齊、依賴“事故驅動”。

  2,從宏觀視角看,由於複雜的呼叫鏈路和依賴關係,大量微服務組成了一個高頻迭代的大型系統,對線上執行風險的快速識別和上線前攔截提出了較高挑戰。

  網易嚴選技術團隊在過去幾年中,面對上述挑戰,從基礎能力搭建到研發模式調整,逐步建立起一套技術團隊廣泛實施、覆蓋全站1.5k個服務端應用的穩定性解決方案。

   分享大綱:

  1、嚴選穩定性建設的背景和難點

  2、完善基建:工具鏈搭建和落地應用

  3、落地長效機制:基於服務畫像的標準化方案,以及在研發團隊、迭代模式中的適配

  4、擁抱DevOps:高頻迭代下的穩定性風險釋出卡點策略

   背景和難點

  網易嚴選是一家獨立品牌電商,技術系統涉及C端:導購、交易、使用者等;B端:庫存、商品、客服等;資料&演算法:智慧營銷、搜尋、個推等;技術平臺:自研、開源引入;PaaS/IaaS基建:自研、網易集團。

  網易嚴選技術系統有兩大特點:其一,高度微服務化,擁有1500+後端應用(服務)、30+特性研發團隊;其二,業務需求飽和,全站服務端每週1000+次釋出。

  關於穩定效能力建設目標,網易嚴選希望透過工具、流程、團隊等方面建設,持續、有效的識別和消除系統執行風險。如今正面臨諸多挑戰:

  首先,風險難以充分識別,僅靠線上運維兜底是不行的,導致我們頻繁救火、覆盤;其次,需求迭代壓力很大,投入不足,運動式治理、難以持續;最後,團隊多、人員流轉,導致標準混亂,依賴個人能力,人走政息、落地不易。

  針對上述挑戰,2019年嚴選決定建設一套長效的穩定性保障能力,並制定了階段性目標,目標一:風險能力要充分識別,大促無故障;目標二:在高強度迭代壓力下,持續性消費風險;目標三:守住基線,更快交付。

   基礎能力建設

  從2019年開始,嚴選頻繁落實研發標準和規範,以及快速建設了一些工具和平臺。在工具平臺建設方面,主要包括四大部分,即監控-報警-快恢、效能和容量管理、可靠性評估和治理、變更管控。  

  在效能、可靠性評估能力方面,下圖左側是生產環境全鏈路壓測,導購交易鏈路,覆蓋200+個線上應用叢集,從2019年開始累積識別、修復風險點500+。  

  上圖右側是生產環境故障攻防演練,應用層故障識別流量標記後生效,讓使用者無感知,從2019年開始累積識別、修復風險點70+。

  在應急預案管理方面,嚴選第一件工作就是把預案標準化,建立了5W1H標準化線上管理,300+線上預案,已支撐20+場大促。嚴選將預案實現了自動化,打通了各個技術平臺,所有預案可一鍵執行,在大促高峰時段,做到了自動提前執行、自動恢復。同時,嚴選還建立了預案防腐,在S級大促之前,要做到100%評審、演練透過率。  

   落地長效機制

  要知道,在研發規範、工具平臺都具備後,仍然存在落地困難等諸多問題:

  第一,工具需要更好用,最好是無人值守;第二,對系統“穩定性”的“水平”、“當前風險”,各團隊、各職能缺少標準定義,溝通、協作成本高;第三,目標不清晰、成果難量化;第四,迭代需求繁重,難以驅動研發團隊改進。因此,工具+規範並不等於實際落地。

  對於落地長效機制,嚴選認為由三部分組成,包括更低成本的風險識別和治理能力、合理的度量能力和適應高速迭代的技術運營方案。  

  如何把風險識別和攔截做到更低的成本?例如,不僅要在大促之前做壓測,平時也可以進行測試,實現常態化效能基線,安全保障是前提,做到基於依賴鏈路自動審計,將SOP線上化、壓測值班線上化。據瞭解,從2020H1起,嚴選就實現了雙週固定核心鏈路線上壓測,完整實施小於30分鐘每次。  

  在依賴變異監測方面,微服務整體穩定性存在“水桶效應”,歷史事故和線上問題,30%以上來自不合理的依賴呼叫。常見高風險場景如過大呼叫扇出扇入比,危害是下游輕微抖動,上游成倍放大;在過大超時設定時,會導致被下游拖垮、雪崩等等。

  嚴選方面採用了全域呼叫拓撲,據統計,約有10萬個邏輯節點(介面)10萬+條邊,且隨著迭代高頻變更,人工治理成本高。嚴選的思路是自動化變異監測,T+1更新構建全域依賴拓撲,預發環境每日無人值守遍歷故障注入。最終效果是覆蓋100%依賴拓撲,做到每日自動監測,識別風險項6000+,低成本,不到人工review的千分之一。

  在穩定性風險標準化度量方面,度量是改進的前提,合理的穩定性風險量化方案,應該具備哪些條件?為什麼不直接選用SLA?我們考慮了以下幾個指標:

  1,指標成熟度:易理解、有共識、可獲取

  2,抗干擾能力:客觀事實資料、減少人為干擾;能拉齊不同實現難度

  3,指標透明能力:引入灰盒、白盒指標,方便下鑽治理、方便任務分解和排期

  4,指標靈活性:權重可調,牽引團隊階段性重心

  針對上述需求,嚴選推出全新的度量方式——服務穩定性畫像。其設有六大評估維度,即SLA可用分、基線壓測分、容災能力分、應用風險修復分、儲存風險修復分、配置規範分。據嚴選統計,事實指標占比80%+,灰盒/白盒指標占比70%。  

  下圖是目前嚴選採用的服務畫像  

  嚴選實現了資料層統一聚合,彙總500+表,建設全域穩定性&質量&效能數倉;在服務/介面/叢集、專案/迭代/需求、工程/分支/commit、團隊/個人、日/周/月/季等多維度分析;在低成本視覺化方面,採用敏捷BI報表。

  在長效技術運營方面,嚴選設定了研發團隊OKR,L1服務大於85,L2/L3服務大於80,在協作流程方面設定了虛擬技術運營小組,月度Story做到提前篩選排序,開發+QA自主拆解,月度覆盤。

  在最近一年多的時間裡,嚴選長效技術運營已覆蓋後端應用1500+,覆蓋C端、B端各業務線共30+特性研發團隊,達成OKR基線的服務,佔比從80%提升到95%。  

  在C端研發團隊穩定性治理任務上,嚴選治理事項當月完成率從過去最低50%,提升到85%以上,研發團隊用於穩定性治理的總投入降低30%以上,嚴選正在從“大促+事故驅動”到“常態運營”轉換,目前,嚴選已經連續20個月無穩定性事故。  

   擁抱DevOps

  嚴選如何在DevOps流程中實現穩定性的治理?我們認為本質是在不損失交付效率的前提下,確保質量基線,同時進一步確保質量+穩定性基線。

  下面這張圖是嚴選天樞-DevOps研發效能平臺  

  在產品方面有需求管理和交付協作,在研發方面有服務新建或維護、git倉庫、程式碼掃描等等,在測試方面有編譯構建、測試驗證、整合迴歸、預發驗證、上線稽核和生產釋出,在測試時有染色環境,整合迴歸時也有相應的迴歸環境,在預發和上線之前,我們會做效能基線卡點和變更風險監測。

  簡單總結,我們做了三件事情:第一,服務畫像分,影響釋出視窗:高分服務,不受視窗限制,大促不封版;第二,預發環境效能基線卡點:服務效能退化釋出前自動攔截;第三,變更風險自動檢測:DB、配置中心、MPS訂閱配置完備性檢查,釋出前後監控數量對比,異常第一時間識別。

  下面是系統截圖  

  左圖是效能基線釋出卡點,我們發現流水線自動觸發,預發發布階段增加了3分鐘,據統計,從2022Q3開始,攔截5例效能退化釋出。

  右圖是變更風險檢測,據統計在釋出風險攔截方面,已經成功攔截變更錯誤367次,在製品合規性檢查方面,不合規制品攔截5310次。

   未來展望

  未來,嚴選將持續深度融合DevOps流程,穩定性風險攔截環節持續左移,希望在研發階段、測試階段、甚至是需求階段就能夠實現風險的提早識別,而不是把所有的工作放到後面。同時,嚴選還希望引入演算法能力,將風險探測和攔截能力增強,體感減弱。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28285180/viewspace-2929699/,如需轉載,請註明出處,否則將追究法律責任。

相關文章