![](https://s4.itho.me/sites/default/files/ruan_ti_ce_shi_shi_wu_2-960.jpg)
街口支付無時無刻面對眾多第三方合作商的業務流量,對於第三方合作商服務不穩定、或是不可用的問題發生時,我們必須快速感知、視業務影響狀況進行通報,並執行服務維護止血、業務分流等緊急處理。問題發生的當下,街口測試團隊依照業務的重要程度分階段進行維護的流程,並實測業務線上真實狀況進行通報與說明。當第三方合作商完成修復後,需要街口測試團隊再次驗證通過,才能認定修復完成。若是街口服務本身的問題,也會立即除錯,以恢復線上功能並確保資料的正確性。
快速感知業務狀況並即時止血
我們需要一個完整的業務監控方案,當服務不可用時能快速地觀測並進行後續操作,目的是將線上服務的異常影響降到最低。而街口選擇了主流的監控方案EFK(Elasticsearch、Fluentd、Kibana),幫助街口實現實時監控、自動告警、自動維護、自動切流,而每個服務的異常容許範圍依業務量大小與業務場景會有所不同。
街口對於每個業務領域都會篩選出有業務性質意義的結果,並以Kibana提供的即時圖表統計功能,達到實時監控業務的效果,以便讓團隊能即時掌握線上服務狀況,例如:遇到不穩定錯誤筆數持續發生或流量急遽變化時,能在第一時間感知並進行處理。
搭配Kibana實時監控服務示意圖
不過如果要透過監測介面實時監測線上服務異常狀況,人力上也無法做到24小時服務監控,如果當第三方異常時,透過實時監控的成本過重,從發現異常到通報問題的時間不夠即時,街口則透過告警套件進行自動通報,並搭配公司內部的通訊軟體進行整合,達到「自動告警」掌握當下服務狀況。街口根據網站可靠性工程:Google的系統管理之道的「四個黃金信號」,作為基礎的監控條件:
●延遲(Latency):監控P99 Response Time,確認請求服務的回應時間,建議過濾失敗請求並追蹤業務的成功請求時長,使回應時間的計算結果保持準確。
●錯誤(Error):監控系統層級的錯誤日誌筆數或是非預期的系統代碼與內容,確認線上功能正常。
●流量(Traffic):監控服務業務流量,因為產品業務流量有一定峰值變化,當業務流量急遽變化時,必須確認服務運作是否順利。
●飽和度(Saturation):監控機器資源使用狀況,由於機器資源吃緊的狀況下,會影響服務效能,必須確認機器效能保持最佳的狀況。
值得注意的是,上述並未提及到憑證過期的狀況。當憑證過期,換發憑證都是需要一定的時間,所以街口測試團隊也會針對服務憑證的有效期限進行監測。
即使有自動告警,也與實時監控一樣難以確保當下發生異常時有維運人力可以進行相關維護流程,服務不可用時長也將依賴著維運人員當下的人力狀況,而有所差異。既然有辦法自動告警,那就可以透過程式即時處理維護流程,讓原本需要耗費的人力維運轉變成程式自動維運,以降低當下因告警疲乏而未即時處理的可能性,例如:使用相關開源專案ElastAlert或.Net Polly Circuit Breaker設定異常閾值,如有偵測線上狀況達到異常閾值時,進行通報並觸發維護管理系統功能。
如果設定異常閾值(Treshold)不當,則會無法發揮正常的告警作用,例如:設定比業務平時太低的異常閾值,則容易造成虛假警報(False Alert);相對地,設定太高則無法即時止血。所以業務異常閾值需要與團隊一同根據該服務的業務流量,制定合理的業務閾值,進行自動維運服務,才能即時提醒用戶該服務目前不可用,街口正在積極處理,避免讓用戶不斷試錯。
即使達到自動維護後,根據10 Usability Heuristics for User Interface Design此文提及的明確系統狀態的可視性(Visibility of System Status)概念,透過後端通知前端顯示維護狀態並無法選擇該異常項目,使用戶理解系統目前的狀態後避免不斷重試,但是有可能仍然沒滿足用戶當下使用需求,並會認為該功能不可用。
若街口要掌握服務可用性的控制權,則需要思考第三方服務是否有替代的可能性,以佔比街口交易行為最大的「街口信用卡交易服務」來說明,信用卡服務所串接的第三方服務為收單行,而市場有多家收單行可以選擇合作,因此街口可以串接多家收單行來幫助街口信用卡業務更穩定,一旦其中一間收單行發生異常時,觸發監控閾值後,會將該收單行進行自動維護,並將交易切流至其餘穩定運作的收單行,達到「自動切流」,讓信用卡交易服務保持運作正常且用戶體驗不中斷。
對於服務異常造成流程出錯,或是造成企業、用戶等資金耗損(資損)時,更應該即時阻止該類錯誤繼續發生。例如:用戶選擇信用卡交易方式時,卻無法獲得正確的交易回饋,雖然對於用戶來說,並不影響其交易流程,但是在已造成用戶資損的情況下,街口應感知並即時處理,維護發生問題的交易方式以避免錯誤的金流發生。而街口對於線上問題的處理原則,可分為用戶感知服務的可用性與資損狀況進行維度的劃分。
服務異常並提供客製錯誤訊息
街口App作為平台方承接許多第三方服務的業務入口,會盡可能即時顯示服務不穩定的狀況,以降低對用戶所造成的困擾。當銀行進行維護服務時,會透過付款畫面讓用戶得知銀行的系統狀態並不能使用,幫助用戶更換街口內其他付款方式,並不讓用戶嘗試目前維護中而不可用的付款管道。
系統維運圖及錯誤訊息轉譯圖
不過第三方所提供的錯誤訊息部分含有技術術語並不適合使用,因為用戶會不理解該錯誤訊息所表達的意思,例如:銀行在部分錯誤情境下會回覆「身分認證失敗」,透過與銀行討論其本意後,街口將會轉譯「當前綁定之銀行帳戶已失效,請刪除後重新綁定,或選擇其他扣款方式,若有疑義請洽銀行。」街口會幫助用戶理解問題點並給予相應處理單位的聯絡方式。如果處理單位一時無法解決該問題,街口除了將服務的流量入口暫時關閉以外,也讓用戶清楚目前該服務不可使用,幫助用戶節省試錯的時間,以延續良好的用戶體驗。(本文摘錄整理自《軟體測試實務[II]》,作者/傅韋傑、張正朋、闕帝雄、江仁豪《街口支付》,博碩文化提供)
圖片來源_博碩文化
書名 軟體測試實務:業界成功案例與高效實踐[II]
李信杰/主編;江仁豪、呂昇峰、邱志傑等合著
博碩文化出版
定價:600元
作者簡介
李信杰(主編)
現任國立成功大學計中/資訊工程學系副教授,亦為全球最熱門開源測試軟體Selenium IDE V3、Katalon Recorder與Qualys Recorder原型創造者,目前國際上超過80萬名軟體測試人員受惠。
李教授著有80餘篇國內外期刊與會議論文、獲得10餘項最佳論文獎,並擔任90餘項國內外學術服務職務。李教授熱愛軟體工程實務型研究,著迷於鑽研科學化的軟體測試方法。
熱門新聞
2024-09-06
2024-09-06
2024-09-06
2024-09-06
2024-09-06
2024-09-06
2024-09-06
2024-09-06