公司的SaaS平臺中,有一條產品線 --- 外賣(此外賣非彼美團、餓了麼外賣)姑且稱之為“雲平臺外賣”,我們在哪些方面做了穩定性、又是如何落地的?我們從一個用戶視角的訂單全生命週期流程中,來看下我們“雲平臺外賣”處在什麼環節:
- 以普通用戶的視角來看,一個外賣訂單從下單後,會經歷支付、商家接單、配送、用戶收貨、售後及訂單完成多個階段。
- 以技術的視角來看,每個階段依賴於多個子服務緊密配合,確保訂單順利完成。
2. 挑戰
- 流程較長且實時性要求高
外賣訂單業務是一個需要即時送的業務,對實時性要求很高。從用戶訂餐到最終送達用戶,一般在1小時內。如果最終送達用戶時間變長,會帶來槽糕的用戶體驗。 - 訂單量高且集中
一天內訂單量會規律變化,訂單會集中在中午、晚上兩個“飯點”附近,而其它時間的訂單量較少。這樣,飯點附近系統壓力會相對較大。
我們的“雲平臺外賣”是處在商家接單的環節;商家接單,也是一個非常複雜的處理流程,我們抽象成簡單的流程:
我們面臨的挑戰:
- “實時”接單無延遲
- “實時”接單無丟單
任何一種情況發生,客戶都會面臨著營業額減少甚至客戶門店被外賣平臺關閉的風險。
二、何為系統穩定性
軟件系統的穩定性,很難有一個恰當的模型表述。如果採用數字量化的話,我們也可以採用SLA服務協議說明系統的穩定性。
正所謂“千里之堤,潰於蟻穴”,看似無關緊要的代碼片段可能會帶來整體軟件系統的崩潰。
三、影響系統穩定性因素
軟件系統穩定性影響因素比較多,我們從軟件工程開發過程中,梳理出常見的因素:
我們要在軟件設計的階段,要充分考慮系統穩定性因素;一旦考慮不周,當線上系統面臨快速增長的業務時,噩夢就會連連。
四、如何保障系統的穩定性
1. 系統穩定性保障的指導思想
- 負反饋調節法
- 確定目標,並加入控制條件;根據反饋結果不斷調整,朝著可能性空間縮小的方向發展,使目標差在一次次控制中慢慢減少
2. 系統穩定性保障的基本準則
- 規範流程
- 自己不作死
- 不被隊友搞死
- 多部門間的協作聯動
3. 系統穩定性保障的技術措施
我們從多個方面通過嚴謹的流程、架構、技術、測試以及運維保障系統等手段來保障系統的穩定性。但是,要保障系統的持續健康運行,還需要多部門間的積極的協助聯動。
五、總結
上述梳理,我們知道線上系統故障主要是:
- 自身系統的問題
- 外部系統的問題
- 基礎設施的問題
所有的軟件系統問題,最終癥結在於架構、產品質量和技術工程方面的問題。