天天看點

申通的雲原生實踐之路:如何實作應用基于容器的微服務改造?當業務飛速發展遭遇運維瓶頸全面改造雲原生更新,助力業務發展全面釋放雲原生技術紅利

申通的雲原生實踐之路:如何實作應用基于容器的微服務改造?當業務飛速發展遭遇運維瓶頸全面改造雲原生更新,助力業務發展全面釋放雲原生技術紅利

随着雲計算的普及與雲原生的廣泛應用,越來越多的從業者、決策者清晰地認識到「雲原生化将成為 企業技術創新的關鍵要素,也是完成企業數字化轉型的最短路徑」。

是以,具有前瞻思維的網際網路企業從應用誕生之初就紮根于雲端,謹慎穩重的新零售、政府、金融、醫療等領域的企業與機構也逐漸将業務應用遷移上雲,深度使用雲原生技術與雲原生架構。面對架構設計、開發方式到部署運維等不同業務場景,基于雲原生架構的應用通常針對雲的技術特性進行技術生命周期設計,最大限度利用雲平台的彈性、分布式、自助、按需等産品優勢。

作為發展最為迅猛的物流企業之一,申通快遞一直積極探索技術創新賦能商業增長之路,以期達到降本提效目的。目前,申通快遞日訂單處理量已達千萬量級,億級别物流軌迹處理量,每天産生資料已達到 TB 級别,使用 1300+ 個計算節點來實時處理業務。

當業務飛速發展遭遇運維瓶頸

過往申通快遞的核心業務應用運作在 IDC 機房,原有 IDC 系統幫助申通安穩度過早期業務快速發展期。但伴随着業務體量指數級增長,業務形式愈發多元化。原有系統暴露出不少問題,傳統 IOE 架構、各系統架構的不規範、 穩定性、研發效率都限制了業務高速發展的可能。軟體傳遞周期過長,大促保障對資源的特殊要求難實作、系統穩定性難以保障等業務問題逐漸暴露。

在與阿裡雲進行多次需求溝通與技術驗證後,申通最終确定阿裡雲為唯一合作夥伴,采用雲原生技術和架構實作核心業務搬遷上阿裡雲。2019 年開始将業務逐漸從 IDC 遷移至阿裡雲。目前,核心業務系統已經在阿裡雲上完成流量承接,為申通提供穩定而高效的計算能力。

全面改造雲原生更新,助力業務發展

申通核心業務系統原架構基于 Vmware+Oracle 資料庫進行搭建。随着搬遷上阿裡雲,架構全面轉型為基于 Kubernetes 的雲原生架構體系。其中,引入雲原生資料庫并完成應用基于容器的微服務改造是整個應用服務架構重構的關鍵點。

  • 引入雲原生資料庫

通過引入 OLTP 跟 OLAP 型資料庫,将線上資料與離線分析邏輯拆分到兩種資料庫中,改變此前完全依賴 Oracle 資料庫的現狀。滿足在處理曆史資料查詢場景下 Oracle 資料庫所無法支援的實際業務需求。

  • 應用容器化

伴随着容器化技術的引進,通過應用容器化有效解決了環境不一緻的問題,確定應用在開發、測試、生産環 境的一緻性。與虛拟機相比,容器化提供了效率與速度的雙重提升,讓應用更适合微服務場景,有效提升産研效率。

  • 微服務改造

由于過往很多業務是基于 Oracle 的存儲過程及觸發器完成的,系統間的服務依賴也需要 Oracle 資料庫 OGG 同步完成。這樣帶來的問題就是系統維護難度高且穩定性差。通過引入 Kubernetes 的服務發現,組建微服務解決方案,将業務按業務域進行拆分,讓整個系統更易于維護。

綜合考慮申通實際業務需求與技術特征,最終選擇了「阿裡雲 ACK+ 神龍 + 雲資料庫」的雲原生解決方案,進而實作核心應用遷移上阿裡雲。

申通的雲原生實踐之路:如何實作應用基于容器的微服務改造?當業務飛速發展遭遇運維瓶頸全面改造雲原生更新,助力業務發展全面釋放雲原生技術紅利

1. 架構闡述

基礎設施,全部計算資源取自阿裡雲的神龍裸金屬伺服器。相較于一般雲伺服器(ECS),Kubernetes 搭配神龍伺服器能夠獲得更優性能及更合理的資源使用率且雲上資源按需取量,對于擁有大促活動等短期大流量業務場景的申通而言極為重要。相較于線下自建機房、常備機器,雲上資源随取随用。在大促活動結束後,雲上資源使用完畢後即可釋放,管理與采購成本更低,相應效率。

流量接入,阿裡雲提供兩套流量接入,一套是面向公網請求,另外一套是服務内部調用。域名解析采用雲 DNS 及 PrivateZone。借助 Kubernetes 的 Ingress 能力實作統一的域名轉發,以節省公網 SLB 的數量,提高運維管理效率。

2. 平台層

基于 Kubernetes 打造的雲原生 PaaS 平台優勢明顯突出。

打通 DevOps 閉環,統一測試,內建,預發、生産環境; 天生資源隔離,機器資源使用率高; 流量接入可實作精細化管理; 內建了日志、鍊路診斷、Metrics 平台;

統一 ApiServer 接口和擴充,天生支援多雲跟混合雲部署。

3. 應用服務層

每個應用都在 Kubernetes 上面建立單獨的一個 Namespace,應用跟應用之間實作資源隔離。通過定義各個 應用的配置 Yaml 模闆,當應用在部署時直接編輯其中的鏡像版本即可快速完成版本更新,當需要復原時直接在本地啟動曆史版本的鏡像快速復原。

4. 運維管理

線上 Kubernetes 叢集采用阿裡雲托管版容器服務,免去了運維 Master 節點的工作,隻需要制定 Worker 節點上線及下線流程即可。同時業務系統均通過阿裡雲的 PaaS 平台完成業務日志搜尋,按照業務需求投交擴容任務,系統自動完成擴容操作,降低了直接操作 Kubernetes 叢集帶來的業務風險。

全面釋放雲原生技術紅利

成本方面:使用公有雲作為計算平台,可以讓企業不必因為業務突發增長需求,而一次性投入大量資金成本用于采購伺服器及擴充機櫃。在公共雲上可以做到随用随付,對于一些創新業務想做技術調研十分便捷。用完即釋放, 按量付費。另外雲産品都免運維自行托管在雲端,有效節省人工運維成本,讓企業更專注于核心業務。

穩定性方面:首先,雲上産品提供至少 5 個 9 以上的 SLA 服務確定系統穩定,而自建系統穩定性相去甚遠。其次,部分開源軟體可能存在功能 bug,造成故障隐患。最後,在資料安全方面雲上資料可以輕松實作異地備份,阿裡雲資料存儲體系下的歸檔存儲産品具備高可靠、低成本、安全性、存儲無限等特點,讓企業資料更安全。

效率方面:借助與雲産品深度內建,研發人員可以完成一站式研發、運維工作。從業務需求立項到拉取分支開發, 再到測試環境功能回歸驗證,最終部署到預發驗證及上線,整個持續內建流程耗時可縮短至分鐘級。排查問題方面,研發人員直接選擇所負責的應用,并通過內建的 SLS 日志控制台快速檢索程式的異常日志進行問題定位,免去了登入機器查日志的麻煩。

賦能業務:阿裡雲提供超過 300 餘種的雲上元件,元件涵蓋計算、AI、大資料、IOT 等等諸多領域。研發人員開箱即用,有效節省業務創新帶來的技術成本。

想要了解更多阿裡雲雲原生技術細節,以及更多企業實踐案例?那麼就快下載下傳《雲原生架構白皮書》吧!點選連結即可下載下傳:

https://developer.aliyun.com/topic/cn-architecture-paper
阿裡巴巴雲原生 關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的公衆号。”