營銷大促質(zhì)量保障都可以做些啥?
1.為什么要做大促保障
在討論大促質(zhì)量保障可以做些什么之前,我們先了解一下為什么要做大促質(zhì)量保障?
一般而言,平臺大促即意味著流量暴漲和優(yōu)惠力度暴增,特別是每年的618、雙11和雙12等大促更是一場電商圈的狂歡;暴漲的流量對系統(tǒng)穩(wěn)定性的沖擊,高額優(yōu)惠對業(yè)務(wù)資損防控的考驗,都比平常要高出數(shù)倍,出現(xiàn)了問題也會被放大數(shù)倍;這是一場沒有硝煙的戰(zhàn)爭,寧可準(zhǔn)備充足但毫無用武之地,也不能出現(xiàn)問題束手無策。
2.面臨的挑戰(zhàn)
既然大促保障如此重要,那么我們要準(zhǔn)備點什么來確保大促活動的穩(wěn)定性,是我們要重點思考的問題。在得出答案之前,我們首先分析下大促活動我們主要面臨的挑戰(zhàn)點到底有哪些,再針對性的一條條去準(zhǔn)備,去解決,便是當(dāng)下我們比較有效的方案。
2.1 系統(tǒng)穩(wěn)定性
在GMV增長的欣喜之余,暴漲的流量的對系統(tǒng)的穩(wěn)定性沖擊,是首要面臨的一個挑戰(zhàn)點;
由上圖可看出,在有活動的20:00和00:00點,都會有一波瞬時的流量高峰,0點的高峰相對于20:00點前的日常流量有至少3倍以上的增長。那么這里有兩個不同類型的挑戰(zhàn)點:
- 瞬時突增的流量高峰
- 數(shù)倍于平時的流量
與此同時,增加的請求量對服務(wù)器和中間件的考驗等都是我們需要面臨的挑戰(zhàn)點。
2.2 業(yè)務(wù)資損
刨除流量暴增對系統(tǒng)層面的影響之外,另一個需要我們重點關(guān)注的點就是業(yè)務(wù)資損問題。
流量的增長對應(yīng)的就是我們訂單量的增長,此時如果發(fā)生資損問題,那么對應(yīng)的資損金額也會因為單量增加而被放大;再加上大促的節(jié)點一般優(yōu)惠的力度都會比平時要更大一些,就會更進(jìn)一步放大資損的金額。
3.應(yīng)對措施
首先從系統(tǒng)層面來說,對于一些核心的節(jié)點而言,最重要的是保障系統(tǒng)的高可用;在Google SRE中有一個層級模型來描述系統(tǒng)可靠性基礎(chǔ)和高層次需求,由下圖可見,金字塔最底層的基座就是監(jiān)控(Monitoring),再往上的層次是應(yīng)急響應(yīng)(Incident Response)和事后總結(jié)以及根因分析(Postmortem&Root Caue Analysis),也就是我們的復(fù)盤。
3.1 全局評估
- 大促業(yè)務(wù)時長:關(guān)注大促活動的運行周期,在活動前做好一系列的準(zhǔn)備工作,包括各業(yè)務(wù)鏈路人員值班安排、全鏈路壓測時間安排以及緩存預(yù)熱等。
- 業(yè)務(wù)量預(yù)估體量:根據(jù)業(yè)務(wù)給出的預(yù)估業(yè)務(wù)體量來進(jìn)行系統(tǒng)容量規(guī)劃。
- 預(yù)估峰值日期:重點時間段重點保障。
3.2 監(jiān)控&告警
穩(wěn)定性金字塔的底座是監(jiān)控(Monitoring),這是一個系統(tǒng)對于穩(wěn)定性最基礎(chǔ)的要求;缺少監(jiān)控的系統(tǒng),如同蒙上眼睛狂奔的野馬,無從談及可控性,更遑論穩(wěn)定性。所以在針對于大促類的活動,前置就需要梳理出可能的系統(tǒng)及業(yè)務(wù)異常點,做好監(jiān)控和告警。
在進(jìn)行大促穩(wěn)定性監(jiān)控梳理時,要先脫離現(xiàn)有監(jiān)控,先從核心、資損鏈路開始,按照業(yè)務(wù)、應(yīng)用(中間件、JVM、DB)、系統(tǒng)三個層次梳理需要哪些監(jiān)控,再從根據(jù)這些索引找到對應(yīng)的監(jiān)控告警,如果不存在,則相應(yīng)補上;如果存在還要考慮閾值、時間、告警人是否合理。
另外針對一些可能的資損場景,我們也可以增加一些資損或數(shù)據(jù)核對,做一個雙重的保障。
3.3 應(yīng)急響應(yīng)
發(fā)生了問題不可怕,可怕的是短時間內(nèi)不能恢復(fù)導(dǎo)致業(yè)務(wù)受損程度加大;這里就需要從另一層面來考量,這樣來進(jìn)行應(yīng)急響應(yīng),快速定位并解決問題。這里我們可以從以下幾點入手:
3.3.1 限流&降級
每一個系統(tǒng)或者應(yīng)用的承載能力都是有限的,如果有超出保障目標(biāo)之外的流量過來,風(fēng)險就很高,限流能力是必須要有的。所以在大促類的活動中,需要我們評估核心接口的承載能力,增加接口限流配置,防止突增的QPS把系統(tǒng)打掛。也需要增加降級配置,對鏈路中位置的異常進(jìn)行降級處理。
3.3.2 預(yù)案
預(yù)案就是對于突發(fā)情況的應(yīng)對處理,所謂有備無患,執(zhí)行時機和執(zhí)行動作一定要清晰明確并記錄在文檔中,發(fā)生緊急情況時,按照預(yù)案執(zhí)行步驟來操作。針對大促活動的功能或系統(tǒng)預(yù)案前期一定要梳理并完善,大促期間封網(wǎng)無法執(zhí)行線上變更發(fā)布操作,預(yù)案是進(jìn)行線上操作的唯一入口。
有了預(yù)案,那么這個預(yù)案是否能解決相應(yīng)的問題,就需要我們對預(yù)案的有效性進(jìn)行驗證,也就是我們的預(yù)案驗證與演練,在我們的測試環(huán)境一定要完整的走一遍預(yù)案的流程。對于生產(chǎn)環(huán)境,我們可以視具體情況進(jìn)行相應(yīng)的演練驗證。
3.3.3 功能預(yù)演
大促時所用到的業(yè)務(wù)能力,不一定是我們新增的業(yè)務(wù)功能,還有一部分是歷史沉淀的功能,對于這些能力則需要我們進(jìn)行一次有效的功能預(yù)演,確保我們的功能能夠穩(wěn)定運行。
3.3.4 內(nèi)部灰測
像是我們每一次的大促活動,基本的都會有一些新增的功能提供,對于這些功能,在正式開放對外之前,需要我們進(jìn)行一次內(nèi)部小范圍灰測,確保核心能力運行正常。
3.3.5 主會場走查
大促的某些活動往往都是由一個主會場來承載,在大促節(jié)點,不僅僅要關(guān)注我們的核心大促活動的單個能力,也要關(guān)注整個主會場的各模塊功能是否正常,體驗是否良好等。對于主會場我們可以在上線對外之前由內(nèi)部產(chǎn)研和業(yè)務(wù)一起進(jìn)行一輪人工的走查;不過對于眾多的分會場,我們沒有那么多的人力,可以借用我們當(dāng)前的自動化巡檢能力來完成C端頁面的巡檢。
3.3.6 故障演練
我們還可以進(jìn)行故障演練,以此來提高系統(tǒng)、流程和人員在面對突發(fā)狀況的應(yīng)對能力,真正實現(xiàn)故障快速發(fā)現(xiàn),快速止損,快速恢復(fù),提升系統(tǒng)的整體的穩(wěn)定性。
4.案例分析
我們以營銷活動中常見的抽獎功能為例,來看看我們在大促活動中對這些穩(wěn)定性保障手段的實際應(yīng)用情況。這里說的抽發(fā)獎能力也在我們2022年的周年慶及雙十一的大促活動中承受住了考驗,主要功能是在指定的時間段內(nèi)定時去抽取部分參與活動的用戶發(fā)放優(yōu)惠券,C端在指定的時間段內(nèi)連續(xù)公示中獎用戶。整體的玩法流程如下:
4.1 核心功能
這里的抽發(fā)獎流程中,結(jié)合我們的業(yè)務(wù)玩法來看,可以分析出比較重要的是連續(xù)的抽獎能力和后續(xù)的發(fā)獎能力,保障C端能夠連續(xù)的公示出最近中獎的用戶。
以20:00-21:00時間段連續(xù)開獎為例,實際上我們服務(wù)端會在19:55分即開始了第1輪次的抽獎,抽出20個中獎的用戶,供C端在20:00開始每隔15s展示1個中獎人。實際上也是為了留出5分鐘的應(yīng)急響應(yīng)時間。
4.2 穩(wěn)定性保障
4.2.1 全局評估
首先我們需要在上線前明確下我們活動的運行周期,比如我們這里的活動是10.26-11.1運行一周的時間,其中開獎的時間是每天的10:00-20:00,那么在10.26活動正式對外的時候,需要協(xié)調(diào)安排人員值班,關(guān)注線上會場運行情況,每天的10:00-20:00開獎時間段需要對應(yīng)研發(fā)測試全天候在線值班。
- 與業(yè)務(wù)方的溝通中了解到,在其中的某幾天會再購買首頁的中通位投放活動,那么這首頁透出的時間段需要研發(fā)同學(xué)關(guān)注系統(tǒng)水位,關(guān)注系統(tǒng)運行情況,適時調(diào)整機器進(jìn)行縮擴容操作。
4.2.2 監(jiān)控告警
- 接著來看看監(jiān)控告警這一塊,上面分析了我們的重點要保障的能力,那么我們業(yè)務(wù)層面的監(jiān)控就可以從重點能力來展開;以此我們可以得出以下幾個監(jiān)控點:
- 開獎結(jié)果監(jiān)控(成功/失?。?/span>
- 開獎類型監(jiān)控(正常/兜底)
- 開獎數(shù)量監(jiān)控(庫存比對)
同時可以將一些非核心的關(guān)聯(lián)信息打印出來,方便有問題是可以直接獲取信息去排查。
4.2.3 應(yīng)急響應(yīng)
- 預(yù)案:
接下來重點關(guān)注下抽發(fā)獎能力相關(guān)的預(yù)案,假設(shè)19:55分開獎異常,那么在這5min的時間里,我們可以做哪些預(yù)案呢?下面我們按時間維度來分析一下:
如果滿足抽獎資格的人數(shù)不足20人或其他原因?qū)е麻_出的中獎人數(shù)不足20人,未完成當(dāng)前輪次的開獎,則會基于我們的預(yù)案,在接下來的19:56及19:57分再補開2次,只至開出足夠的數(shù)據(jù)。
這樣可以確保在短時發(fā)生了系統(tǒng)或業(yè)務(wù)異常時依然能夠持續(xù)開獎,保障C端用戶不受影響。
以上關(guān)于抽獎這塊功能的預(yù)案,都屬于系統(tǒng)會自動觸發(fā)的類型,無需人工操作,能有效的避免系統(tǒng)及業(yè)務(wù)異常帶來的負(fù)面影響。
預(yù)案準(zhǔn)備完成,那么我們測試環(huán)境就需要針對預(yù)案進(jìn)行驗證,確保我們的預(yù)案能夠正常執(zhí)行,并實現(xiàn)預(yù)期的效果,避免在生產(chǎn)發(fā)生問題時無法及時處理。
- 灰測&走查:
在活動上線之后,我們和業(yè)務(wù)方對活動具體配置進(jìn)行溝通,按生產(chǎn)正式投放標(biāo)準(zhǔn)配置一場測試活動,用于整體功能在生產(chǎn)環(huán)境的驗證,進(jìn)行一輪灰測,確保小流量場景下的功能鏈路能夠正常走通。
灰測正常結(jié)束后也不代表就已經(jīng)完事大吉,業(yè)務(wù)方對于正式活動的配置,也有可能出現(xiàn)差池,所以在正式活動投放出去之前,還需要進(jìn)行一場功能預(yù)演。前期和業(yè)務(wù)方溝通達(dá)成一致,配置的活動開始時間可以從25日下午開始,產(chǎn)研側(cè)可以一起確保配置數(shù)據(jù)正常,同時可以通過直接訪問H5網(wǎng)頁進(jìn)行業(yè)務(wù)功能驗證及整體用戶體驗的評估,確保整體體驗無誤后,活動會在26日0點正式投放對外。
5.總結(jié)
大促相關(guān)活動的質(zhì)量保障壓力會更大一些,需要更多的思考業(yè)務(wù)異常點和對應(yīng)的解決方案,需要做更多的保障措施來保證業(yè)務(wù)及系統(tǒng)的穩(wěn)定性,需要更大范圍的去探索和實踐質(zhì)量保障的措施;這不僅僅是質(zhì)量保障團(tuán)隊需要考慮和落實的措施,也需要研發(fā)、產(chǎn)品、運營和業(yè)務(wù)團(tuán)隊共同參與,相互協(xié)同來保障整個業(yè)務(wù)系統(tǒng)的穩(wěn)定運行,帶來更高的價值產(chǎn)出。