網易嚴選基於“服務畫像”的長效穩定效能力建設實踐
本文根據張偉傑在【第十五屆中國系統架構師大會(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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Serverless:基於個性化服務畫像的彈性伸縮實踐Server
- 生活服務商家如何實現從“網紅”到“長紅”的長效增長?
- 網易嚴選離線數倉治理實踐
- 多利熊基於分散式架構實踐穩定性建設分散式架構
- 研效優化實踐:WeTest提效測試優化
- 網易蜂巢:基於容器和微服務迭代加速實踐微服務
- 研效最佳化實踐:WeTest提效測試
- win10怎麼刪除無效的服務_win10刪除無效的服務方法Win10
- 剖析多利熊業務如何基於分散式架構實踐穩定性建設分散式架構
- 日處理資料量超10億:友信金服基於Flink構建實時使用者畫像系統的實踐
- 生活服務商家如何實現長效經營?可以從這些方面著手!
- 績效管理之KPI設定KPI
- 順豐慢其實很好解決,瞭解服務時效合理選擇很重要
- 超高價效比 AMD和Oracle合作推出基於霄龍處理器的雲服務Oracle
- 騰訊高手出品!動效設計基礎(二):動效的應用
- 基於Azkaban的任務定時排程實踐
- 螞蟻集團TRaaS入選中國信通院《資訊系統穩定性保障能力建設指南》最佳實踐案例
- 工商銀行基於 Dubbo 構建金融微服務架構的實踐-服務發現篇微服務架構
- 畫像標籤體系構建與應用實踐
- 基於 Nuxt 的 Vue.js 服務端渲染實踐UXVue.js服務端
- 基於 SpringMVC 的 RESTful HTTP API 實踐(服務端)SpringMVCRESTHTTPAPI服務端
- IIS設定預設主頁無效
- 基於 GraphQL 的雲音樂 BFF 建設實踐
- vivo 服務端監控體系建設實踐服務端
- 基於 RocketMQ 的 MQTT 服務架構在小米的實踐MQQT架構
- 優效學院 基於微服務的秒殺專案實戰 Spring Boot 2.0基礎微服務Spring Boot
- 注重實效的程式設計師程式設計師
- 短期爆發不難,長期運營是關鍵!生活服務商家如何實現長效經營?
- 基於three.js的3D粒子動效實現JS3D
- 構建基於RocketMQ的分散式事務服務MQ分散式
- 基於大資料的使用者畫像構建(理論篇)大資料
- 網易嚴選的wkwebview測試之路WebView
- 數倉服務平臺在唯品會的建設實踐
- 網易有道成人教育數倉建設實踐
- 低延時、穩定、極具價效比的香港伺服器-VeCloud伺服器Cloud
- 快手基於 Apache Flink 的實時數倉建設實踐Apache
- 安全穩定可信賴 亞馬遜雲科技如何構建可靠的雲服務亞馬遜
- 信創雲安全建設實踐|構建更加智慧、安全的政務雲服務體系