申通快遞核心業務系統雲原生化上雲技術詳解

如果說,快遞行業上半場的競爭拼的是規模、服務乃至價格,進入下半場,快遞企業們還需要比拼硬核的技術實力。

隨着雲計算的快速發展和成熟,越來越多的企業正在把自己的核心繫統向雲上遷移,從而享受雲計算帶來的技術紅利。IDC發佈的《全球雲計算IT基礎設施市場預測報告》顯示:2019年全球雲上的IT基礎設施佔比超過傳統數據中心,成爲市場主導者。在技術層面,雲計算在成本、穩定、安全和效率層面已經遠超傳統IT。對於企業而言,上雲後綜合成本下降一半,穩定性有10倍以上提升,安全性更是提升50倍。這些信號都在標誌着以雲計算爲基礎的數字化時代全面到來。

申通快遞創建於1993年,是國內較早經營快遞業務的民營快遞品牌。與很多同行一樣,早期的信息系統建設也採用外包承接的方式運作。2016年年底,申通快遞正式登陸深交所。作爲快遞行業巨頭之一,申通上市的目的,除了要把業務規模做大外,很重要的一點是要在技術上下功夫,打造公司核心的競爭力,構建行業的高生態壁壘,抵抗“外敵”入侵。

2019年年底,申通選擇全面遷移至阿里雲,也因此成爲業內首個全面上雲的快遞企業。這次全面上雲,不只是變革基礎架構,更是對研發模式的一次重要變革。今年6月,申通通用雲原生計算平臺被雲原生開源產業聯盟、CNCF基金會聯合選爲“2020年度雲原生應用十大優秀案例”之一。以下是關於申通快遞核心業務系統雲原生化上雲的詳解,

爲什麼要用雲原生應用架構?

快遞公司是非常典型的雲邊一體架構,實操環節很重。大量的業務邏輯下沉到邊緣,所以申通在上雲改造過程中,也在嘗試做雲邊一體化的架構升級。 通過雲邊一體,可以讓開發在同一個平臺上面完成雲上業務及邊緣側的業務開發。同時快遞公司還有典型的大數據處理場景,全網每天會新增幾億條掃描數據,需要對這些數據進行實時分析,對數據的處理要求非常高。

申通以前使用線下機房作爲計算及數據存儲平臺,隨着業務量的快速增長,原有的IT系統遇到了一些瓶頸,比如軟件交付週期過長,大促保障對資源的要求高、系統穩定性差等。從申通內部看,基於傳統IOE架構構建的系統無法支撐業務高速增長後的數據量膨脹,受限於容量訂單系統,只能保留3~6個月的信息查詢,且無法對歷史包裹進行在線搜索,相關應用都會受阻。從外部看,包裹流轉如何藉助數據技術和IoT等技術來提升效率日益成爲快遞行業的競爭焦點。

雲原生技術天然適合解決傳統應用升級緩慢、架構臃腫、不能快速迭代等問題。具體來看,雲原生有四點優勢是企業迫切需要的,一是速度快,通過雲原生技術可以做到業務快速上線部署,這就在市場需求多變的競爭中搶得了先機;另外,在業務爆發式增長的時候,雲原生可以對資源的需求做到開箱即用。

二是提升業務的穩定性。通過監控埋點、業務日誌收集、鏈路監控等手段可以保證業務系統在快速迭代過程中保持穩定性。依賴Kubernetes爲核心的數據中心,通過應用編排、業務故障自愈的能力讓整個系統更穩定。

三是節省資源。通過對計算資源的水位監測,結合業務的峯值情況,當發現資源利用率偏低時,採用降配規格及數量,降低整個資源的費用。相比於一次性投入租建機房及相應的維護費用,使用公有云成本投入更低。利用公有云低成本的硬件、無需關注基礎設施、零交付週期的優勢,結合容器技術可以做到業務實時按需動態伸縮資源。

四是採用微服務架構,將之前臃腫的架構進行合理拆分,再結合容器編排的能力做到持續交付,可以讓企業成功轉型成爲一家Devops驅動的公司。

正是看中了雲原生技術爲企業帶來的優勢,最終申通選擇核心系統以雲原生化的方式上雲。

申通雲原生應用架構設計路線

申通原來的IT架構是基於VMware+Oracle數據庫的架構,與阿里雲原生團隊溝通後,決定採用基於Kubernetes的雲原生架構體系。對應用服務架構進行,主要做了程序代碼改造升級和引入雲原生數據庫。

1. 程序代碼改造升級

申通程序代碼改造升級主要兩部分升級,一是應用容器化,跟虛擬機比起來,容器可以同時提升效率和速度,讓其更適合微服務場景。引入容器技術,解決了環境不一致的問題,保證應用在開發、測試、生產環境的一致性。二是微服務改造,原來,申通的很多業務是基於Oracle的存儲過程及觸發器完成,系統之間的服務依賴也是依靠數據庫OGG同步完成。這麼做帶來的問題就是系統維護非常困難,穩定性非常差。通過引入Kubernetes的服務發現來做微服務方案,按業務域進行拆分,使整個系統更易於維護。

2. 引入雲原生數據庫方案

通過引入OLTP和OLAP型數據庫,將在線數據與離線分析邏輯拆到兩種數據庫中,不再完全依賴Oracle。這就解決了在歷史數據查詢場景下Oracle支持不了的業務需求。綜合考慮申通業務和技術特點,最終選擇了阿里雲ACK+神龍+雲數據庫的雲原生解決方案,實現核心應用搬遷上阿里雲。申通雲原生應用技術框架如下圖所示。
011.png

在基礎設施層面,全部的計算資源取自阿里雲的神龍裸金屬服務器,相比於ECS,Kubernetes搭配神龍服務器能夠獲得更佳的性能及更合理的資源利用率。特別適合大促場景,雲上資源可以按量付費,大促結束之後資源使用完就釋放。相比於線下自建機房和常備機器,雲上資源操作更方便,管理成本也更低。

在流量接入層面,共有2套流量接入,一套是面向公網請求,另外一套是服務內部調用。域名解析採用雲DNS及PrivateZone。藉助Kubernetes的Ingress能力來做統一的域名轉發,這樣可以節省公網SLB的數量便於運維管理。

在平臺層,申通基於Kubernetes打造的雲原生PaaS平臺如下圖所示。

0223.jpeg

該平臺的特點如下:
• 測試、集成、預發、生產統一環境,打通DevOps閉環。
• 天生資源隔離,機器資源利用率高。
• 流量接入可實現精細化管理。
• 集成了日誌、鏈路診斷、Metrics平臺。
• 統一ApiServer接口和擴展,天生支持多雲跟混合雲部署

在應用服務層,每個應用都在Kubernetes上面創建單獨的一個Namespace,應用跟應用之間資源隔離。通過定義各個應用的配置YAML模板,當應用在部署的時候直接編輯其中的鏡像版本即可快速完成版本升級,當需要回滾的時候直接在本地啓動歷史版本的鏡像就能快速回滾。

在運維管理上,線上Kubernetes集羣都是採用了阿里雲託管版容器服務,免去了運維Master節點的工作,只需要制定Worker節點上線及下線流程即可。同時上面跑的業務系統均通過PaaS平臺完成業務日誌搜索,按照業務需求投交擴容任務,系統自動完成擴容操作,降低了直接操作Kubernetes集羣帶來的風險。

雲原生應用服務特點

1. API接口化

API接口化應用場景主要有兩個,一是封裝Kubernetes管控API:包括創建StatefulSet,修改資源屬性,創建Service資源等,通過封裝這些管控API,可以通過一站式的PaaS平臺來管理在線應用。二是雲原生業務系統,雲上的業務系統封裝了各類雲資源的API,如封裝SLS的API,將在線數據寫入SLS再跟Maxcompute或Flink集成。封裝OSS的API,方便在應用程序中將文件上傳。

2. 應用和數據遷移

雲上的業務系統及業務中間件都是通過鏡像的方式部署,應用的服務通過Service發現,全部的在線應用(300+)對應的Pod及Service配置均保存在PaaS平臺裏面,每個應用歷史版本對應的鏡像版本都保存到系統中,可以基於這份配置快速構建一套業務生產環境。數據遷移如下圖所示。

67.jpeg

通過DTS工具將業務系統的數據從IDC存儲及增量遷移到雲上。在線數據穩定地存儲在雲原生的數據庫上面,如OLTP類型的RDS、PolarDB支撐高併發的實時處理,OLAP類型的ADB支持海量數據分析。同時對於小文件存儲保存在OSS上面。引入NAS做共享存儲介質,通過Volume直接掛載到神龍節點來實現應用數據共享。

3. 服務集成

雲原生PaaS服務集成如下圖所示。

08.jpeg

持續集成通過Git做版本控制,利用雲效的持續集成功能實現了雲原生應用的構建、編譯及鏡像上傳,全部的業務鏡像均保存在雲端的鏡像服務倉庫,底層是Kubernetes集羣作爲整個業務的計算資源。其他集成的服務包括:

• 日誌服務,通過集成日誌服務方便研發人員方便定位業務及異常日誌。
• 雲監控,通過集成監控能力,方便運維研發人員快速發現故障。
• 服務接入,通過集成統一的接入,整個應用流量可做到精細化管理。
• 彈性伸縮,藉助ESS的能力對資源進行動態編排,結合業務高低峯值做到資源利用率最大化。

4. 服務高可用

ACK集羣多層級高可用示意如下圖所示。
099.png

架構說明:
• 支持多可用區部署架構,由用戶自定義分配比例。
• 容器集羣內故障遷移。
• AZ故障整體容器遷移。

Kubernetes集羣通過控制應用的副本數來保證集羣的高可用。當某個Pod節點出現宕機故障時,通過副本數的保持可以快速在其他Worker節點上再啓新的Pod。通過引入監控體系主動發現業務問題,快速解決故障。監控採集示意如下圖所示。

010.jpeg

在同一個Pod裏面部署了兩個容器,一個是業務容器,一個是Logtail容器。應用只需要按照運維定的目錄將業務日誌打進去,即可完成監控數據採集。

技術創新點

1. 從虛擬機到Kubernetes

相比於通過虛擬機來運維應用,Kubernetes可以將各類資源定義成描述文件,整個應用環境通過容器的方式統一,避免環境不一致的風險。通過修改副本數即可輕鬆完成應用容器的擴縮容操作。Kubernetes提供了一個非常容易的機制來幫助用戶打包應用,並且能快速部署到任意一個環境中,實現快速擴容、縮容的目的。

2. 從單體應用到微服務

單體架構,系統與系統之間是緊耦合模式。隨着代碼庫的不斷加大,添加或者改變單體應用程序的功能就變得越來越複雜。而微服務架構是松耦合狀態,每一個團隊做一個服務,每個服務執行一個功能,系統與系統之間是相互獨立的狀態,可以讓不同的團隊開發不同的服務,通過輕量級的API調用來實現服務與服務之間的串聯。對某個服務進行擴展,只擴展單個系統就能實現,修改代碼也不影響其他應用。

3. 基於Terway讓Pod和ECS網絡處於同等地位

優勢:不依賴VPC路由表,就能打通網絡,節點規模不受路由表Quota限制;不需要額外爲Pod規劃Overlay的網段;混合雲專線打通也無需額外配置路由;可以直接將POD掛到SLB後端;性能高,相比於社區的Flannel提升至少10%。

4. 定義三套接入環境及三套業務環境

定義三套環境主要是爲了解決研發環境的問題,定義日常、預發、生產環境,方便研發做測試迴歸;定義三套業務環境主要是爲了網絡接入方便,這樣內部應用可以走內部接入,從網絡隔離上面保護系統。

00.jpeg

三套接入環境包括公網接入、辦公網接入、內網接入。
公網接入:適合於跟外部客戶對接,通過統一的證書卸載,收斂公網IP。
辦公網接入:適合於有敏感接口的對接,只允許指定源IP的請求,通過網絡ACL讓整個應用訪問更安全。
內網接入:適合於業務之間及混合雲架構下IDC的業務調用雲上應用,內部調用性能更高也更安全。

三套業務環境包括測試環境、預發環境、生產環境。
測試環境:全部的雲資源都是給測試環境使用,可以採用低配資源來滿足功能迴歸測試。
預發環境:準上線環境,連接生產環境的資源進行發佈前最後一次功能驗證。
生產環境:實際運行環境,接收真實流量處理業務請求。

應用收益

申通通過雲原生化的方式上雲,在成本、穩定性、效率、賦能業務四個方面效果顯著。

成本方面:使用公有云作爲計算平臺,不必因爲業務突發增長的需求,而一次性投入大量資金成本用於採購服務器及擴充機櫃。在公共雲上可以做到隨用隨付,對於一些創新業務想做技術調研非常方便。用完即銷燬,按量付費。另外雲產品都是免運維自行託管在雲端,可以節省人工運維成本,讓企業更專注於做核心業務。

穩定性方面:雲上產品都是提供至少5個9以上的SLA服務,而自建的話穩定性差不少。另外有些開源的軟件可能還存在部分功能上的bug影響了業務。另外在數據安全方面雲上數據可以做到異地備份,阿里雲數據類產品的歸檔具有高可靠、低成本、安全性、存儲無限等特點,讓企業數據更安全。

效率方面:藉助跟雲產品的深度集成,方便研發人員完成一站式研發、運維工作。從業務需求立項到拉分支開發,再到測試環境功能迴歸驗證,再部署到預發驗證及最後上線,整個持續集成可以做到分鐘級。排查問題方面,研發直接選擇所負責的應用通過集成的SLS日誌控制檯快速檢索程序的異常日誌,定位問題。免去了登錄機器查日誌的麻煩。

賦能業務:雲上組件有300多種,涵蓋了計算、AI、大數據、IoT等諸多領域,可以節省業務創新帶來的技術成本。目前,申通每天處理訂單量在千萬級別,處理物流軌跡在億級別,每天產生的數據量在1T,使用1300+個計算節點來實時處理業務。

結束語

企業上雲已經是大勢所趨。申通核心系統雲原生化上雲,系統穩定性大幅提升,對於用戶的體驗也更好了,之前很多業務功能無法實現,現在基本都可以支持。全面上雲,除了業務上的價值,還推動了申通內部的技術體系創新,雲服務讓DevOps一體化的良性循環成爲可能,運維團隊未來除了承擔線上保障的責任,還會將更多精力投入到研發支撐工具的創新上。

雲原生被企業接受之後,落地的過程仍然要面臨一些挑戰。但是雲原生技術帶來的資源成本降低、研發運維效率提升等巨大價值,會驅動企業迎接這些挑戰。雲原生已經成爲釋放雲價值的最短路徑,使用雲原生上雲,基於容器和服務網格等標準界面和混合雲方案,將極大的降低遷雲複雜度,使企業可以更快遷移到雲上標準服務。通過雲原生上雲,最大化使用雲的能力,高效的社會分工,使企業聚焦於自身業務發展,相信將成爲企業的共識。

日前,在2020阿里雲合作伙伴峯會上,阿里巴巴合夥人、阿里雲智能基礎產品事業部高級研究員蔣江偉發表了《深耕“被集成”,共建新生態》主題演講,他在演講中提到,阿里雲將繼續深耕“被集成”戰略,做強生態,未來一年投入20億專項資金,助力50傢伙伴雲上營收過億,並啓動“雲原生合作伙伴計劃”:重點扶持100個頭部夥伴,賦能10000家合作伙伴,50萬開發者,幫助合作伙伴進行雲原生技術升級,助力合作伙伴數字化轉型。

點擊:https://partner.aliyun.com/management/epp_yys
瞭解更多阿里雲原生合作伙伴計劃細節。

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