業務高速增長過程中的技術演進

  在業務高速增長的過程中,來自技術的挑戰也不可忽視。貝貝網從一個電商新秀到行業獨角獸,只用了短短兩三年的時間,看似順利,但其中的酸甜苦辣只有我們自己知道。所以今天就想扒扒皮,和你分享一下我們業務擴張過程中在技術上踩過的那些坑,以及我們是如何應對的。

業務規模和複雜度快速增長帶來的挑戰

其實,創業最初,我們曾懷疑過貝貝網這個平臺的可能性,因爲在早期的電商淡季時期,我們連三個九的業績都達不到。後來,在雙十一流量壓力的作用下,我們把業績做到了四個九以上,纔打消了我們的疑慮。

另外,最開始我們是移動電商,APP 版本的迭代速度非常慢,早期可能一個月更新一個版本都非常困難。後來,經過技術的不斷演進、團隊的不斷迭代,我們能夠做到每週更新一個版本,而且新版本的缺陷率從原先的 50% 降低到 5% 以上。50% 意味着,在早期,我們上線的 100 個需求裏面,有 50 個需求是有缺陷的,需要返工的。

版本更新速度的提升與相應錯誤率的下降,這背後起支撐的是一個團隊的持續迭代。一個人可以走得很快,但唯有一個團隊,才能走得更遠。

再來看來自於技術的挑戰。公司在快速發展過程中,相應的業務量也是快速增長的,最初可能只有一個單一的產品、一個簡單的業務,到後面,隨着業務、產品的成熟,逐漸將它鋪開後,可能會出現多個產品,甚至數十條業務線,都需要並行迭代的情況。此時便會衍生出更多的問題,具體可以分爲三點:

第一個問題是,原先我們習慣於在一個工程或一個系統應用上進行開發,長期以往,代碼會越堆越多,導致這個系統越來越腐化,架構越來越不穩定,出現越來越多的耦合。

這時就會發現,團隊的新成員進來後不敢寫代碼,團隊中的老人也不敢對這個存在複雜耦合性的系統輕舉妄動。因爲,極有可能你動了某個地方,就會導致整個系統出現更大的問題。一旦這種可能性發生,那之前的什麼代碼衝突,相較而言就是非常小意思的事情了。

第二個問題是,當大家都在一個工程、一個應用上進行開發,並且有多條業務線並行迭代的時候,你會發現,每個團隊直接的步伐並不一致,互相之間可能會有諸多爭論。這樣就會導致版本更新的效率大大降低,也加大了需求上線的難度,比如大家可能需要花費半天的時間才能夠完成上線驗證,效率極其低下。

第三個問題是,由於系統太過耦合,可能某個新功能上線後對於全站業績增長的影響非常有限,但因爲系統扛不住新功能帶來的流量,結果導致核心鏈路交易服務都不可用了。

業務系統解耦合及平臺化推進

說了這麼多問題,我們當時是如何應對這些技術難題的呢?

首先,我們要明確一個觀點:保證生存是首要目的,永遠沒有非常完美的產品方案,我們必須要不停地進行開發和迭代。所以,我們必須具備一種快速試錯、低成本試錯的能力,使產品和業務完成快速迭代。並且,當這個模式成熟後,能夠幫助產品和業務快速進行規模化,再通過這種規模化的能力,實現公司商業價值最大化。

回到具體的技術挑戰,公司規模上來後,我們在每個技術領域都有非常大的技術演進,是基於全棧的技術演進,從 APP 端組件化動態化,到業務層組件化,到服務化,一直到底層數據庫拆分、運維自動化、持續集成能力的提升等,我們都做了很多佈局,而且很多都被證明是非常有效的。同時,整個系統的基礎架構設施也在不斷完善和配套。最有力的表現就是,後臺研發同學的交付能力,直接是翻倍的提升。

其實,歸納起來就是通過服務框架對應用進行拆分解耦、採用異步消息來對系統進行解耦、使用分佈式數據訪問實現數據層的無限擴容。

在 APM 應用性能管理方面,我們自研了一套從客戶端到後端的全鏈路應用市場監控,便於我們對性能進行優化。其監控管理對象也從最初的單應用演進爲多應用。

在應用拆分、服務化之後,我們還自研了一套私有云系統,改進了系統的部署方式,從原來的集中式部署,到分佈式部署,再演進到單元化部署。這樣一來,原本交付一個資源至少需要一天以上,現在只需要幾分鐘就能進行擴容,效果立竿見影。

在監控告警方面,我們從原來的單機房部署,一路演進到異地多機房部署,基於這樣的監控告警體系,當我們的業務指標發生變化時,能夠做到一分鐘之內告警,特別是核心業務指標發生變化時,我們可以及時進行處理。

在持續集成方面,我們也從最初的單系統優化做到後面的結構型優化,能夠提供非常靈活的灰度發佈機制、非常快捷的回滾機制,確保即使出現問題,它的影響也能控制到最小。

在大數據方面,我們很早就開始佈局,並組建大數據團隊,目前已經演進到機器學習階段。比方說在客服上,機器客服能夠幫助節省一半的客服人員,減少人力資源消耗。另外,對運營也有非常大的幫助,比如通過自動化排期,基本能做到減少 1/3 運營人員的投入。

當然,在技術之外,流程是保證保證快速迭代的關鍵,對此,我們定了兩點原則:一是每個階段都實行准入制度,明確需求;二是每個環節都檢查輸出,包括質量和時間兩個維度。在具體執行中,我們推行短項目迭代制,正如之前提到的,沒有完美的產品方案,我們要先求有,再求優,小步快跑、快速迭代,而所有的技術與系統都要能支撐我們能夠迅速驗證產品。

總結一下,技術上的挑戰,來自於業務高速增長形成規模化之後,帶來的系統複雜度的上漲,而解決的重點在於,通過服務框架對應用進行拆分解耦、採用異步消息來對系統進行解耦、使用分佈式數據訪問實現數據層的無限擴容。

然而需要注意的是,對創業團隊來說,如果想要把握住機會,就必須做到快,因此,在技術演進的時候,也要學會剋制自己的技術潔癖,不要追求完美,適合的纔是最好的。

作者簡介

徐裕鍵,貝貝網合夥人兼研發副總裁。負責貝貝技術團隊管理,從 0 到 1 搭建貝貝移動電商產品和技術架構,推動集團各個技術領域快速演進,完善技術團隊的梯隊搭建和文化建設。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章