摘要:主要介紹了美團(tuán)智能支付業(yè)務(wù)在穩(wěn)定性方向遇到的挑戰(zhàn),并重點(diǎn)介紹在穩(wěn)定性測試中的一些方法與實(shí)踐。其中,智能支付作為新擴(kuò)展的業(yè)務(wù)場景,去年也成為了美團(tuán)增速最快的業(yè)務(wù)之一。
本文根據(jù)美團(tuán)高級測試開發(fā)工程師勛偉在美團(tuán)第43期技術(shù)沙龍“美團(tuán)金融千萬級交易系統(tǒng)質(zhì)量保障之路”的演講整理而成。主要介紹了美團(tuán)智能支付業(yè)務(wù)在穩(wěn)定性方向遇到的挑戰(zhàn),并重點(diǎn)介紹QA在穩(wěn)定性測試中的一些方法與實(shí)踐。背景
美團(tuán)支付承載了美團(tuán)全部的交易流量,按照使用場景可以將其分為線上支付和智能支付兩類業(yè)務(wù)。線上支付,支撐用戶線上消費(fèi)場景,處理美團(tuán)所有線上交易,為團(tuán)購、外賣、酒店旅游等業(yè)務(wù)線提供支付能力;智能支付,支撐用戶到店消費(fèi)場景,處理美團(tuán)所有線下交易,通過智能POS、二維碼支付、盒子支付等方式,為商家提供高效、智能化的收銀解決方案。其中,智能支付作為新擴(kuò)展的業(yè)務(wù)場景,去年也成為了美團(tuán)增速最快的業(yè)務(wù)之一。
面臨的挑戰(zhàn)而隨著業(yè)務(wù)的快速增長,看似簡單的支付動(dòng)作,背后系統(tǒng)的復(fù)雜度卻在持續(xù)提升。體現(xiàn)在:上層業(yè)務(wù)入口、底層支付渠道的不斷豐富,微服務(wù)化背景下系統(tǒng)的縱向分層、服務(wù)的橫向拆分,還有對外部系統(tǒng)(營銷中心、會(huì)員中心、風(fēng)控中心等)、內(nèi)部基礎(chǔ)設(shè)施(隊(duì)列、緩存等)的依賴也越來越多,整條鏈路上的核心服務(wù)節(jié)點(diǎn)超過20個(gè),業(yè)務(wù)復(fù)雜度可想而知。
此外,技術(shù)團(tuán)隊(duì)在短時(shí)間內(nèi)就完成了從幾個(gè)人到近百人規(guī)模的擴(kuò)張,這也是一個(gè)潛在的不穩(wěn)定因素。曾經(jīng)在一段時(shí)間內(nèi),整個(gè)系統(tǒng)處在“牽一發(fā)而動(dòng)全身”的狀態(tài),即使自身系統(tǒng)不做任何發(fā)版升級,也會(huì)因?yàn)橐恍┗A(chǔ)設(shè)施、上下游服務(wù)的問題,業(yè)務(wù)會(huì)毫無征兆地受到影響。
痛定思痛,我們對發(fā)生過的線上問題進(jìn)行復(fù)盤,分析影響服務(wù)穩(wěn)定性的原因。通過數(shù)據(jù)發(fā)現(xiàn),72%的嚴(yán)重故障集中在第三方服務(wù)和基礎(chǔ)設(shè)施故障,對應(yīng)的一些典型事故場景,比如:第三方支付通道不穩(wěn)定、基礎(chǔ)設(shè)施(如消息隊(duì)列)不穩(wěn)定,進(jìn)而導(dǎo)致整個(gè)系統(tǒng)雪崩,當(dāng)依賴方故障恢復(fù)后,我們的業(yè)務(wù)卻很難立即恢復(fù)。
解決方案基于這些問題,我們開展了穩(wěn)定性建設(shè)專項(xiàng),目的很明確:提升服務(wù)的可用性。目標(biāo)是逐步將系統(tǒng)可用性從2個(gè)9提升到3個(gè)9,再向4個(gè)9去努力。這個(gè)過程中最核心的兩個(gè)策略:柔性可用,意思是盡可能保證核心功能可用,或在有損情況下盡可能保證核心用戶體驗(yàn),降低影響;另一個(gè)是快速恢復(fù),即用工具或機(jī)制保證故障的快速定位和解決,降低故障修復(fù)時(shí)間。
圍繞這兩個(gè)策略,在穩(wěn)定性建設(shè)中的常見操作:限流、熔斷降級、擴(kuò)容,用于打造系統(tǒng)的柔性可用;故障響應(yīng)SOP、故障自動(dòng)處理,用于故障處理時(shí)的快速恢復(fù)。而QA的工作更側(cè)重于對這些“常見操作”進(jìn)行有效性驗(yàn)證。基于經(jīng)驗(yàn),重點(diǎn)介紹“三把利劍”:故障演練、線上壓測、持續(xù)運(yùn)營體系。
故障演練的由來舉個(gè)真實(shí)的案例,在一次處理某支付通道不穩(wěn)定的線上問題時(shí),開發(fā)同學(xué)執(zhí)行之前已經(jīng)測試通過的預(yù)案(服務(wù)端關(guān)閉該通道,預(yù)期客戶端將該支付通道的開關(guān)置灰,并會(huì)提示用戶使用其他支付方式),但執(zhí)行中卻發(fā)現(xiàn)預(yù)案無法生效(服務(wù)端操作后,客戶端該支付通道仍處于開啟狀態(tài))。非故障場景下預(yù)案功能正常,故障場景下卻失效了。
這就是故障演練的由來,我們需要盡可能還原故障場景,才能真正驗(yàn)證預(yù)案的有效性。
故障演練的整體方案故障演練的整體方案,主要分為三部分:
負(fù)載生成模塊,負(fù)責(zé)盡可能還原系統(tǒng)的真實(shí)運(yùn)行場景(要求覆蓋核心業(yè)務(wù)流程)。
故障注入模塊,包含故障注入工具、故障樣本庫(涵蓋外部服務(wù)、基礎(chǔ)組件、機(jī)房、網(wǎng)絡(luò)等各種依賴,并重點(diǎn)關(guān)注超時(shí)、異常兩種情況)。
業(yè)務(wù)驗(yàn)證模塊,結(jié)合自動(dòng)化測試用例和各個(gè)監(jiān)控大盤來進(jìn)行。
為了更高效地開展故障演練,我們的策略是分為兩個(gè)階段進(jìn)行。首先,針對單系統(tǒng)進(jìn)行故障演練,從故障樣本庫出發(fā),全面覆蓋該系統(tǒng)所有的保護(hù)預(yù)案;在此基礎(chǔ)上,進(jìn)行全鏈路故障演練,聚焦核心服務(wù)故障,驗(yàn)證上下游服務(wù)的容錯(cuò)性。
故障演練的效果事實(shí)證明,故障演練確實(shí)給我們帶來了很多“驚喜”,暴露了很多隱患。這里列舉三類問題:數(shù)據(jù)庫主從延遲影響交易;基礎(chǔ)設(shè)施故障時(shí),業(yè)務(wù)未做降級;依賴服務(wù)超時(shí)設(shè)置不合理、限流策略考慮不足等。
線上壓測的由來面對業(yè)務(wù)的指數(shù)級增長,我們必須對系統(tǒng)可承載的流量做到心中有數(shù)。對于QA來說,需要找到精準(zhǔn)、高效的系統(tǒng)容量評估方法。我們碰到的難點(diǎn)包括:鏈路長、環(huán)節(jié)多、服務(wù)錯(cuò)綜復(fù)雜,線下環(huán)境與線上差異大等等,基于測試有效性和測試成本考慮,我們決定要做線上壓測,而且要實(shí)現(xiàn)全鏈路的線上壓測。
線上壓測的整體方案全鏈路壓測的實(shí)現(xiàn)方案,與業(yè)界主流方案沒有太大區(qū)別。根據(jù)壓測流程,首先,場景建模,以便更真實(shí)的還原線上系統(tǒng)運(yùn)行場景;其次,基礎(chǔ)數(shù)據(jù)構(gòu)造,應(yīng)滿足數(shù)據(jù)類型以及量級的要求,避免數(shù)據(jù)熱點(diǎn);之后,流量構(gòu)建,讀寫流量構(gòu)造或回放,同時(shí)對壓測流量進(jìn)行標(biāo)記和脫敏;再之后,壓測執(zhí)行,過程中收集鏈路各節(jié)點(diǎn)的業(yè)務(wù)運(yùn)行狀態(tài)、資源使用情況等;最后,生成壓測報(bào)告。
基于全鏈路線上壓測方案,可以根據(jù)業(yè)務(wù)需求,靈活地進(jìn)行單鏈路壓測、分層壓測等。更為重要的是,基于壓測我們可以進(jìn)行線上的故障演練,用于更加真實(shí)的驗(yàn)證系統(tǒng)限流、熔斷等保護(hù)預(yù)案。
線上壓測的效果通過全鏈路線上壓測,一方面讓我們對系統(tǒng)容量做到心中有數(shù),另一方面也讓我們發(fā)現(xiàn)了線上系統(tǒng)運(yùn)行過程中的潛在問題,而且這些問題一般都是高風(fēng)險(xiǎn)的。同樣列舉三類問題:基礎(chǔ)設(shè)施優(yōu)化,如機(jī)房負(fù)載不均衡、數(shù)據(jù)庫主從延遲嚴(yán)重等;系統(tǒng)服務(wù)優(yōu)化,如線程池配置不合理、數(shù)據(jù)庫需要拆分等;故障預(yù)案優(yōu)化,如限流閾值設(shè)置過低,有的甚至已經(jīng)接近限流邊緣而渾然不知等等。
持續(xù)運(yùn)營體系的由來智能支付的穩(wěn)定性建設(shè)是作為一個(gè)專項(xiàng)在做,持續(xù)了近3個(gè)月的時(shí)間;在效果還不錯(cuò)的情況下,我們從智能支付延伸到整個(gè)金融服務(wù)平臺,以虛擬項(xiàng)目組的方式再次運(yùn)轉(zhuǎn)了3個(gè)月的時(shí)間。通過項(xiàng)目方式,確實(shí)能集中解決現(xiàn)存的大部分穩(wěn)定性問題,但業(yè)務(wù)在發(fā)展、系統(tǒng)在迭代,穩(wěn)定性建設(shè)必然是一項(xiàng)長期的工作。于是,QA牽頭SRE、DBA、RD,建立了初步的穩(wěn)定性持續(xù)運(yùn)營體系,并在持續(xù)完善。
持續(xù)運(yùn)營體系的整體方案下面介紹持續(xù)運(yùn)營體系的三大策略:
流程規(guī)范工具化,盡可能減少人為意識因素,降低人力溝通和維護(hù)成本。
如:配置變更流程,將配置變更視同代碼上線,以PR方式提交評審;代碼規(guī)范檢查落地到工具,盡可能將編碼最佳實(shí)踐抽取為規(guī)則,將人工檢查演變?yōu)楣ぞ邫z查。
質(zhì)量度量可視化,提取指標(biāo)、通過數(shù)據(jù)驅(qū)動(dòng)相關(guān)問題的PDCA閉環(huán)。
如:我們與SRE、DBA進(jìn)行合作,將線上系統(tǒng)運(yùn)維中與穩(wěn)定性相關(guān)的指標(biāo)提取出來,類似數(shù)據(jù)庫慢查詢次數(shù)、核心服務(wù)接口響應(yīng)時(shí)長等等,并對指標(biāo)數(shù)據(jù)進(jìn)行實(shí)時(shí)監(jiān)控,進(jìn)而推進(jìn)相關(guān)問題的解決。
演練壓測常態(tài)化,降低演練和壓測成本,具備常態(tài)化執(zhí)行的能力。
如:通過自動(dòng)化的觸發(fā)演練報(bào)警,驗(yàn)證應(yīng)急SOP在各團(tuán)隊(duì)實(shí)際執(zhí)行中的效果。
基于以上三個(gè)策略,構(gòu)建穩(wěn)定性持續(xù)運(yùn)營體系。強(qiáng)調(diào)閉環(huán),從質(zhì)量度量與評價(jià)、到問題分析與解決,最終完成方法與工具的沉淀;過程中,通過平臺建設(shè)來落地運(yùn)營數(shù)據(jù)、完善運(yùn)營工具,提升運(yùn)營效率。
持續(xù)運(yùn)營體系的效果簡單展示當(dāng)前持續(xù)運(yùn)營體系的運(yùn)行效果,包含風(fēng)險(xiǎn)評估、質(zhì)量大盤、問題跟進(jìn)以及最佳實(shí)踐的沉淀等。
未來規(guī)劃綜上便是智能支付QA在穩(wěn)定性建設(shè)中的重點(diǎn)工作。對于未來工作的想法,主要有3個(gè)方向。第一,測試有效性提升,持續(xù)去擴(kuò)展故障樣本庫、優(yōu)化演練工具和壓測方案;第二,持續(xù)的平臺化建設(shè),實(shí)現(xiàn)操作平臺化、數(shù)據(jù)平臺化;第三,智能化,逐步從人工運(yùn)營、自動(dòng)化運(yùn)營到嘗試智能化運(yùn)營。
作者介紹勛偉,美團(tuán)高級測試開發(fā)工程師,金融服務(wù)平臺智能支付業(yè)務(wù)測試負(fù)責(zé)人,2015年加入美團(tuán)點(diǎn)評。
招聘如果你想學(xué)習(xí)互聯(lián)網(wǎng)金融的技術(shù)體系,親歷互聯(lián)網(wǎng)金融業(yè)務(wù)的爆發(fā)式增長,如果你想和我們一起,保證業(yè)務(wù)產(chǎn)品的高質(zhì)量,歡迎加入美團(tuán)金融工程質(zhì)量組。有興趣的同學(xué)可以發(fā)送簡歷到:fanxunwei#meituan.com。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/8890.html
摘要:現(xiàn)在,組委會(huì)決定公開測試開發(fā)大會(huì)視頻含資料,作為獻(xiàn)給社區(qū)用戶和測試從業(yè)人員的年度大禮,期待推進(jìn)行業(yè)進(jìn)步。自年舉辦以來,近萬名有從業(yè)經(jīng)驗(yàn)的測試開發(fā)工程師測試經(jīng)理和質(zhì)量管理人員參加了大會(huì),好評如潮。 過去的幾年中,軟件測試與質(zhì)量保障行業(yè)悄然間發(fā)生了很大變化,TesterHome 社區(qū)作為行業(yè)見證人,通過 MTSC 大會(huì)記錄了測試行業(yè)技術(shù)趨勢與人才結(jié)構(gòu)的變革歷程。 showImg(https...
摘要:端基于生成列進(jìn)行內(nèi)部分區(qū),不侵入業(yè)務(wù)??偨Y(jié)天貓雙全球狂歡節(jié)成交額超過億,成功經(jīng)受住了考驗(yàn),全面支撐了支付寶核心鏈路,平穩(wěn)抗住時(shí)的峰值壓力,夯實(shí)三年戰(zhàn)略百萬支付的底盤能力。 小螞蟻說: 你們都很關(guān)心的 OB雙11大促實(shí)戰(zhàn)分享 專題來啦!本系列將為你系統(tǒng)性的介紹OceanBase支撐螞蟻雙11背后的技術(shù)原理和實(shí)戰(zhàn)分享。從平臺到架構(gòu),再到實(shí)現(xiàn),一起來探索螞蟻雙11這場神秘的技術(shù)之旅吧! sh...
摘要:以太坊背后的主要人物是。以太坊通過在區(qū)塊鏈上引入智能合約,徹底改變了加密世界。以太坊使用名為以太坊虛擬機(jī)的虛擬機(jī)執(zhí)行其智能合約。以太坊最終將利用協(xié)議轉(zhuǎn)向權(quán)益證明。截至目前,以太坊在可擴(kuò)展性方面都失敗了。 不同的區(qū)塊鏈智能合約和區(qū)塊鏈技術(shù)現(xiàn)在風(fēng)靡一時(shí)。越來越多的人出于某種原因試圖進(jìn)入這個(gè)神奇的世界。如果你是這項(xiàng)技術(shù)的新手并正在尋找基于區(qū)塊鏈的開發(fā)平臺的快速入門,那么本指南非常適合你。我們...
摘要:原文發(fā)表于以太坊智能合約開發(fā)第二篇理解以太坊相關(guān)概念很多人都說比特幣是區(qū)塊鏈,以太坊是區(qū)塊鏈。它是以太坊智能合約的運(yùn)行環(huán)境。是由以太坊節(jié)點(diǎn)提供。以太坊社區(qū)把基于智能合約的應(yīng)用稱為去中心化的應(yīng)用。 原文發(fā)表于:以太坊智能合約開發(fā)第二篇:理解以太坊相關(guān)概念 很多人都說比特幣是區(qū)塊鏈1.0,以太坊是區(qū)塊鏈2.0。在以太坊平臺上,可以開發(fā)各種各樣的去中心化應(yīng)用,這些應(yīng)用構(gòu)成了以太坊的整個(gè)生態(tài)...
閱讀 1774·2021-10-11 10:57
閱讀 2364·2021-10-08 10:14
閱讀 3404·2019-08-29 17:26
閱讀 3363·2019-08-28 17:54
閱讀 3032·2019-08-26 13:38
閱讀 2913·2019-08-26 12:19
閱讀 3617·2019-08-23 18:05
閱讀 1288·2019-08-23 17:04