大規模分布式環境下的企業架構治理之道

大規模分佈式環境下的企業架構治理之道

鎮樓小姐姐

36份一線互聯網Java面試電子書

84個Java稀缺面試題視頻


現代互聯網企業,隨著業務的井噴,對系統的可維護性、可用性和併發性三個方面都提出了相當高的要求。在這三個維度的要求下,互聯網企業的架構都會走上從單體應用拆分到多應用、多系統、多環境、多主機、多機房的大規模分佈模式。

系統的拆分往往伴隨著研發團隊的快速膨脹和組織擴容。以蘇寧易購舉例,蘇寧 IT 序列的研發人員在最近幾年呈指數級的增加,目前已突破 8000 人,今年有望達到一萬人的規模。

與很多同時代發展起來的互聯網企業相比,除了都具備系統複雜度井噴式增長這個共性之外,蘇寧易購也有不同於其他純電商企業的特殊之處,那就是有大量的傳統 IT 歷史資產。

蘇寧從發展之初就很重視 IT 信息化的建設,從 1994 年開始用電子化記賬,發展到 2000 年啟用 ERP 系統,到 2006 年大規模上線 SAP,最後到 08 年開始轉型互聯網化。和很多同行業的互聯網公司從一張白紙出發不同,蘇寧走過的是邊開飛機邊換引擎的一條艱辛的道路。

面對這種一邊是一團亂麻的歷史資產,一邊是開疆擴土的業務倒逼,蘇寧在早期經常會遇到各種因為缺乏企業架構全面治理導致的各種問題。比如,服務上線時缺乏版本向下兼容導致關聯繫統異常;比如部署環境更新版本時,導致完全沒有預料的周邊中間件異常崩潰。

如果我們嘗試用如下的信息熵公式來描述蘇寧 IT 企業架構的複雜度:

大規模分佈式環境下的企業架構治理之道

公式中的 Xi 的含義是一組對立的隨機變量,對應到蘇寧的 IT 環境中,可以理解成:人,機器,系統,應用,而 p(Xi) 就是這些人 / 機器 / 系統 / 應用出故障的概率。根據信息熵理論可以如下圖推導,信息熵在 p(Xi)=0.5 的時候,取值最高。

大規模分佈式環境下的企業架構治理之道

所以如果想降低整體系統的熵,那麼就要降低各種變量的概率不確定性,讓每個變量的概率逼近曲線的兩端。如何做到呢?唯一解就是將所有獨立變量關聯起來做高維度治理。

通過這個理論引申,結合蘇寧這麼多年的互聯網化轉型和實踐中的摸爬滾打,總結實踐出了一套大規模分佈式下企業架構治理系統,我們內部將其取名為 蘇寧架構雲

企業架構的演變

企業架構 (Enterprise Architecture ) 這一概念由 Zachman 在 1984 年提出,伴隨著 80 年代的主機發展浪潮,90 年代的信息化和互聯網化浪潮,21 世紀初的移動互聯網浪潮,一直到今天的雲計算、物聯網,大數據、人工智能、區塊鏈時代。企業架構湧現了一大批專家模型和方法論。

比如典型的 TOGAF 方法論中,將企業架構分成如下幾層。

大規模分佈式環境下的企業架構治理之道

從最上層的業務產品線開始,第二層是整體企業的業務戰略,包括業務的經營模式推廣模式收費模式盈利模式。接下一層是應用架構,包括應用,系統,服務,接口多個維度的系統拆分和組織編排。再往下一層是數據架構,包括數據結構,數據持久化模式,數據分析模型。到最後一層的基礎架構,包括主機,虛擬機,機房,IDC 等等。可以說, 整個企業架構模型本質就是一家公司的數字資產庫。

對於沒有重資產的互聯網企業而言,產品,流量,用戶,數據,代碼,機器,這些就是公司的全部資產。所以我們可以斷言,一家科技公司,如果沒有企業架構的數字化管理,就等於一家會計事務所沒有財務系統一樣荒唐可笑。

蘇寧的架構哲學

正是因為企業架構對於公司的發展有如此巨大的重要性,所以蘇寧很早就重視總結,在綜合行業內主流的企業架構模型之後,提出了自己的架構哲學。

蘇寧認為企業架構是人,物,事三者的數字化模型。

我們不光要架構層面加入靜態的物,比如系統,應用,服務,接口。我們還要在架構模型中加入動態的事,比如各種日誌時間序列,各種營銷規劃動作。最後我們還要在模型中加入人,將外部的客戶,供應商,內部的員工都納入全局的架構視圖。

  • 從人的角度:我們認為任何商業活動,組織行為都要以人為本,以人為核心。人是一切商業活動的根本。用學術的話來說,架構的本質就是識別商業活動中的利益相關人,把人的描述升高到架構識別的第一要素。在落地過程中,我們識別出人,然後對人進行畫像,接著將人與人的利害關係梳理組織出來。在蘇寧架構雲的產品中,我們運用了自然語言識別方式和在線思維導圖,輔助企業架構師完成本工作。
  • 從物的角度:我們認為萬物互聯,我們將整個企業活動中涉及的方方面面的物理設備都納入到架構的設計範疇。不光聚焦傳統 IT 架構中的機房,服務器,交換機等,我們還將眼光放寬泛一點,比如在物流架構規劃中,我們會將卡車,倉儲乃至高速公路都納入架構的視野,對其進行分析和建模。在蘇寧架構雲的產品中,我們打通物聯網平臺,建立所有物理設備的邏輯拓撲關係,輔助企業架構師工作。
  • 從事的角度:我們認為,商業活動中所有動態的行為都是數據的紐帶,是企業架構的靈魂。商業規劃,業務拓展,大促活動,這些事件,圍繞著人和物組織編排,我們在架構中的工作就是要將事件活動抽象出來,將流程與組織解耦,關注流程本身的泛型和價值重構。在蘇寧架構雲的產品中,我們引入流程引擎,根據蘇寧歷史沉澱,建立若干基礎商業事件的邏輯模型,輔助企業架構師設計。

企業架構的數字化

如果想在蘇寧這樣一個巨大的體量下實時的治理企業架構,我們首先乾的就是識別企業架構模型中的領域模型,尋找數據建模的依據。

比如如下,我們根據蘇寧的業務場景結合,識別出以下若干核心領域。

大規模分佈式環境下的企業架構治理之道

接下來,我們根據領域模型,識別出周邊的關聯繫統,對於蘇寧而言,我們需要考慮從自研的項目管理平臺中獲取產品線和項目數據,從服務調用鏈中獲取微服務實時調用數據,從 CMDB 中獲得主機和虛擬機的靜態部署數據,從統一配置中心中獲取主機中的配置更改記錄等等。

接下來,我們根據領域模型,識別出周邊的關聯繫統,對於蘇寧而言,我們需要考慮從自研的項目管理平臺中獲取產品線和項目數據,從服務調用鏈中獲取微服務實時調用數據,從 CMDB 中獲得主機和虛擬機的靜態部署數據,從統一配置中心中獲取主機中的配置更改記錄等等。

然後我們採用 Kafka 接入所有這些數據通道,通過 Storm 做數據消費和清洗,將數據拆分成結構化和非結構化兩種,結構化存入 RDMBS,非結構化存入 BigData。通過數據模型對上支撐各種治理業務。

如下圖是一個簡化版的技術架構圖。

大規模分佈式環境下的企業架構治理之道

在建模之後,我們就可以通過專家系統和人工智能引擎的支撐,對外提供多維度的治理能力,如下圖的簡要產品架構。

大規模分佈式環境下的企業架構治理之道

企業架構的專家治理

有了數字化的企業架構模型之後,我們就可以在這個模型上進行治理。

第一個問題,治理什麼?

根據蘇寧的經驗,我們將企業架構從生命週期上分成規劃,交付,運行和過程改進四個階段。

在規劃階段,我們主要關注於服務 / 接口的契約管理,服務依賴版本的規劃,在線的企業架構設計。在交付階段,我們關注於服務 / 接口的交付市場,服務 / 接口的自動化測試落地。在運行階段,我們提供服務流控,服務擴縮容,服務熔斷。在過程改進中,我們提供服務 / 接口的質量報表,企業架構的整體視圖等功能。

第二個問題,用什麼治理?

每個公司都會有經過大併發大規模分佈式下積累的歷史經驗和教訓,我們採取的做法是,將蘇寧的經驗和教訓用規則化邏輯表達出來,在專家系統中落地。貫穿整個企業架構數字化模型,將我們用血和淚換來的經驗和教訓,實時快速準確的掃描和落地。具體落地實踐中,我們深度改造了 Drools 規則引擎,接入本系統。

深度學習下的自治理

專家治理本質還是根據人工經驗的提取進行治理。人會犯錯,人發現的規則也會失效。

有沒有能夠自治理,自發現,自解決的辦法呢?

本質上,我們經過研究覺得這就是一個 AIOps 的應用場景,通過引入深度學習機制我們現在初步規劃了以下幾個落地方向。

通過迴歸算法做線上系統 / 服務 / 接口的流量預測

對於電商這種週期性特點很強的行業,在預測上需要平滑週期性干擾,達成更準確的預估。這點上我們參考了 Twitter 的論文《Forecasting at scale》,如下公式我們將週期效應看成是一個奇三角函數和一個偶三角函數的和。

大規模分佈式環境下的企業架構治理之道

上圖中的 P 代表時間週期,比如以年為週期的話 P=365.25。如上圖所見,週期效應本身就是一個傅里葉級數,那麼我們就可以用傅里葉變換來定積分求解,於是我們就把問題轉換為求解如下一個向量的值。

大規模分佈式環境下的企業架構治理之道

根據歸納可以發現,該向量滿足正態分佈模型,工程落地鍾可以用 Normal 函數做解,需要注意的是此向量的 N 的取值需要根據各自的業務形態調整。

比如下圖就是平滑大促週期之後的某接口的日 PV 部分擬合。

大規模分佈式環境下的企業架構治理之道

通過聚類算法做線上運行狀態的自檢

我們將大規模時間序列數據抽取出來,進行離線學習,學習出常見的系統異常時間序列模型。然後將線上時間序列數據的學習結果和離線模型通過聚類算法比較,分析診斷現在生產狀態。

總結

大型分佈式環境下的企業架構治理是個大命題,有各種維度的管理。比如有專注於服務監控的服務調用鏈,有專注於主機和 OS 的系統監控平臺,有專注於流量的流控平臺。

但是從整個企業架構的維度上,打通各個環節,採集建模分析機器學習的平臺還很少。本文淺嘗輒止,簡單談一談蘇寧這邊的一點微小的工作。


分享到:


相關文章: