談談金融級云原生應用架構和演進
數字化時代推動之下,銀行核心系統建設的主流技術架構正在從集中式架構向金融級云原生架構演進。后者是分布式架構,采用“橫向水平擴展”方式增加服務器數量以提升系統運行能力,理論上可以無限擴張運行能力。
隨著越來越多的金融機構開始采納云原生技術,亟需一套結合行業特性的統一標準為金融機構提供一個能力參照模型。結合金融行業實踐來看,金融機構采納云原生技術可采用的成熟度評估模型,覆蓋包含微服務架構程度、應用云化程度、可觀測性、高可用管理、配置自動化、DEVOPS、云平臺能力、云原生安全、容器及k8s能力等。
金融服務對“靈活性、易擴展、高并發、標準化組件、低成本、可靠在線服務”的追求是不變的,因此核心系統戰略應聚焦在這個“不變”上。云原生分布式核心應具備的能力詳細拆解為十二項支撐能力。
除了分布式核心系統,在《架構即未來》一書提出了分布式應用設計的十四條基本原則,而這正是最為重要的云原生應用架構的核心要素。
N+1設計:要確保任何你所開發的系統在發生故障時,至少有一個冗余的實例。
回滾設計:確保系統可以回滾到以前發布過的任何版本。
開關禁用設計:能夠關閉任何發布的功能。
監控設計:在設計階段就必須要考慮監控,而不是在實施完成之后補充。
設計多活數據中心:設計時就考慮多活部署,不要被一個數據中心的解決方案把自己限制住。
異步設計:異步適合并發,只有在絕對必要的時候才進行同步調用。
無狀態系統:無狀態的系統更利于擴展,更利于做負載均衡。只有當業務確實需要的時候,才使用狀態。
水平擴展非垂直升級:永遠不要依賴更大、更快的系統。微服務核心思想是水平擴展,不要把所有的功能都集中在一個系統里面。必要的時候把需求分為多個系統,而不是升級原有的系統。
設計的前瞻性:提前考慮影響下一階段系統擴展性問題的方案,不斷提煉公共共享服務,以減少重構的次數。
非核心則購買:如果不是你最擅長的,也提供不了差異化的競爭優勢則直接購買。數據庫、云服務這種的就購買好了。
小構建,小發布,快試錯:全部研發要小構建,不斷迭代,讓系統不斷地成長。小版本的失敗率較低,因為失敗率與解決方案中的變更數量直接相關。
隔離故障:實現隔離故障設計,通過斷路保護避免故障傳播和交叉影響。避免多系統之間的互相影響,這個很重要。
自動化:“自動化是智慧之源”,在云原生架構中,快速部署和自動化管理是核心。設計開始就需要盡可能通過架構和設計實現自動化的過程。如果機器可以做,就不要依賴于人。
使用成熟的技術:如果某技術故障率比較高,就絕不能使用。
金融級云原生平臺架構
金融云原生平臺架構整體可分為:設計域、研發域、運行域、運維域、災備域 5大領域。
設計態:采用領域驅動設計等與微服務架構體系天然親和的設計方法,并在設計過程中,關注數據一致性、服務顆粒度等問題,貫徹分布式架構設計的設計原則和規范。
研發態:面向研發人員,提供一站式的研發生產力工具,屏蔽分布式技術的復雜性,提升研發人員體驗和生產率。達成廣泛共識的工程模板,降低組織認知成本。
運行態:面向應用,分布式應用運行的基礎設施,覆蓋應用全生命周期,包括創建、部署、監控、變配,支持多種形態的應用交互方式和數據存儲形態。底層支持多種形態的計算方式以及其上的調度方式。
運維態:面向運維人員,解決分布式架構的先天復雜性,廣泛使用工程手段,保證系統整體可用性水平。
災備態:面向災難,提供對節點級、機房級、城市級災難的容忍能力。
金融級云原生數據架構
云原生框架天生具備快速交付、彈性伸縮、標準化、自動化、隔離性等諸多優勢,與新一代數據技術不斷融合,形成了具備如下幾個特點的云原生數據架構體系。
1、可擴展的多種計算模式融合
云原生數據架構可統一支持批、流、交互式、多模、圖等不同計算模式的融合,例如:湖倉一體、流批一體、流式機器學習,使多種計算系統進行深度整合,在功能、生態上形成互補,用戶能夠在一套系統內完成更多種類型計算,提升平臺運行效率,降低使用成本。
2、多層智能化的分布式存儲層
存儲計算分離會在兩三年內成為標準,數據平臺向托管化和云原生的方向發展。存儲內部精細化的分層成為平衡性能和成本的關鍵手段,基于分布式存儲系統上的多層存儲(熱存儲/標準存儲/冷存儲等)與存儲利用相結合實現存儲降本。AI在分層算法上將發揮更大的作用,編碼和壓縮在通用處理器上的優化空間有限的情況下,未來更大的突破和技術換代將取決于軟硬一體化的技術發展及應用情況。
3、統一調度和彈性伸縮的資源池管理
隨著數據湖存算分離不斷深入, 圍繞基于云原生架構下來建立統一容器化資源調度系統成為數據湖存算分離發展的必要組件,為大數據與AI一體化架構提供統一資源池化與在離線混部的基礎支撐;通過統一算力資源池實現資源統籌調度,優化資源細粒度的管理與調度,可以將離線計算與其它在線計算任務進行資源混部達到峰谷互補的效果,有助于提升服務器資源利用率;同時,也可以根據業務優先級分配計算任務資源,確保資源調度期間不發生爭搶,實現在業務高峰期,以彈性擴縮容模式調用算力資源,充分發揮資源算力,提升響應效率。
4、大數據SRE智能運維能力
大數據技術多樣性和數據平臺架構的復雜性,為大數據平臺的運維帶來挑戰。新一代大數據平臺可支持在線滾動升級,縮短升級時長;提供統一運行各類異構工作負載流程,統一管理作業生命周期,統一調度任務工作流,為任務的規模和性能提供保證;通過作業日志,性能指標,資源利用率等數據,結合歷史記錄和實時負載情況,使用機器學習方式進行分析、檢測和調優,在查詢計劃、數據模型、資源管理自適應,以及系統異常檢測和自愈等方面不斷優化,形成大規模數據平臺的智能化運維能力。
金融級云原生基礎架構
金融級云原生基礎設施需要滿足5大總體要求和13項管理要求。
(一) 5大總體要求為:
一是采用成熟云平臺產品,打造IaaS、PaaS一體化云計算平臺,實現租戶端和運維端的完整服務目錄,與軟件開發體系和生產運維體系無縫對接;
二是實現全公司級基礎資源彈性供給,按照分布式技術框架,支撐全公司業務系統實現高可用容災架構,滿足安全生產要求;
三是全面滿足信息技術應用創新要求,從云平臺底座到軟件服務具有全鏈路信息技術應用創新運行的能力,同時保障分布式應用高性能穩定運行;
四是具備提供大規模應用上云的基礎,提供完善的應用框架,對應用系統提供穩定、持續、高性能的支撐;
五是云平臺產品有成熟生態圈,與業界公有云技術發展保持基本同步,適配最新開源技術演進。
(二) 13項管理能力要求為:
統一資源管理:采用統一的物理資源類型和架構實現基礎硬件資源的統一管理,如服務器、交換機、操作系統等;云管平臺通過統一管理方式(控制臺、API等)實現兩地三中心的計算、存儲、網絡等云資源進行管理,降低開發和運維使用復雜度。
統一數據管理:對同城雙活、異地多活架構通過數據存儲、遷移、同步等方式,保障分布式云節點數據一致性,提供一體化容災及聯動切換能力,最大限度滿足業務連續性要求。如提供統一的鏡像方案、對象存儲的容災、數據庫跨地域備份和同步等。
統一服務管理:支持兩地三中心節點通過統一的API、SDK、控制臺等管理云服務,如統一控制面進行服務的部署、更新等,大幅降低云服務管理復雜度,提升用云效率。
統一運維管理:通過云管實現對兩地三中心不同節點采用相同的運維體系進行管理,提供一致的運營、監控、可靠性SLA等服務,減少運維管理人員工作量,提升運維效率,大幅降低系統故障,縮短故障時間。
統一安全管理:一方面通過物理基礎設施、網絡安全、數據面/控制面隔離等實現平臺側安全,另一方面通過主機安全、訪問控制、防火墻、態勢感知等實現安全服務,保障一體化安全。
統一資源調度:通過云管實現對兩地三中心算力資源的統一調度,提供多種調度策略支持。基于位置調度滿足對時延和帶寬敏感的業務(如手機銀行音視頻應用);基于算力需求調度滿足對AI、大數據等大計算量的業務(如潮汐調度、混部等場景);基于工作負載調度滿足多維異構的場景(如理財搶購、積分兌換、雙11等應用場景)。
統一監控管理:完成云上和云下各類型監控指標的接入和統一展現;完成云上和云下分布式鏈路追蹤能力,實現從業務監控、到應用服務監控、到資源監控的逐層下鉆和多維分析,完善故障定位分析能力;通過統一告警中心的對接和優化完成動態閾值,提升業務整體事件感知能力、快速定位能力和智能化分析決策能力。
支撐多元算力:云資源池兼容CPU、GPU等多種算力,為人工智能、深度學習、科學計算等多領域場景的金融科技類新應用產品提供高效的云算力服務。
支撐全棧信息技術應用創新:通過一套體系兼容多產品服務能力,支撐一云多芯、全棧XC云平臺服務能力,推動信息技術應用創新戰略落地。
支撐精細化管理:通過平臺的計量計費能力以及與行內各系統打通,實現計算、存儲、網絡、安全等多類資源的計量計費能力。逐步實現IT成本精細化管理,實現業務IT投入與業務產出可度量、可評價,實現成本與效率的兼顧,實現IT資源的高效利用。
支撐裸機管理:滿足裸金屬交付從服務器上架、自動化裝機、系統設置和軟件編排的流程自動化和批量化,提升交付效率,降低人工工作量;滿足裸金屬統一納管要求,實現裸機的統一監控和告警。
支撐服務質量:通過自服務能力提升,基礎設施管理平臺的建設將能夠提供高效穩定運行精細化管理提供更好的服務,根據平臺對于數據的收集及分析,將有效的改進管理方向和內容,能有效增強服務品質。
支撐架構發展:采用行業領先的專有云架構,搭建與公有云同源、滿足金融行業容災要求的云平臺,通過一套體系支撐所有產品,支撐全行線上線下一體化運維體系建設,通過有機統一的體系結構設計,滿足未來全棧云平臺能力建設。
金融級云原生實現路徑
金融級云原生能力評估
“投資未來的最好方法是改善現在”。
金融級云原生極大的釋放了數字化時代的紅利,云原生充分繼承云的設計思想,未來應用將更多基于云上進行應用開發,即云原生應用更加適合云的架構,而云計算也為云原生應用提供較好的基礎支撐,如資源隔離機制、分布式部署、高可用架構等方面,通過新的架構、技術保障應用系統變得更加健壯,可以說云原生最大程度發揮了云的優勢。
某銀行基于IaaS/PaaS 一體化云平臺,運用分布式微服務框架、云中間件、容器、DevOps 等云原生技術,搭建了可提供橫向擴展、秒級伸縮、智能運維、適應快速開發持續交付的 PaaS 級云平臺,推動該銀行從傳統架構向互聯網架構演進。該平臺基于容器進行應用部署、運行、調度資源,利用容器的輕量級特性,在服務數量激增的情況下節省更多應用部署和運行資源,可以輕松應對波動的業務流量。同時,應用的鏡像交付形式實現了“一次構建,多次部署”,避免傳統部署過程帶來的操作復雜度與操作風險。通過該平臺,應用交付周期縮短了 80%,業務需求響應速度提高 50%。
然而,在金融機構開始大量采購采納云原生技術時,卻存在云原生技術產品體系過于龐雜、開源生態缺乏治理、產品之間兼容適配困難等諸多問題。局部技術特性往往給金融機構選擇造成很大干擾,并產生較高的試錯成本。
“拋開整體來看局部細節都是耍流氓”。
越是平臺型技術,越需要從整體角度來考量。所以,迫切需要一套結合行業特性的統一標準,為金融機構提供一個能力參照模型,以便金融機構定位自身云原生技術轉型的發展階段,對比分析發現云原生能力建設的不足,制定未來技術和能力建設方向。我們結合一些金融行業實踐,為金融機構采納云原生技術提供一套完整的技術能力框架,和九大維度的成熟度評估模型,可以參考如下指標進行展開:
微服務架構程度、應用云化程度、可觀測性、高可用管理、配置自動化、DevOps、云平臺能力、云原生安全、容器及K8s能力。
金融級云原生演進路徑
好的架構是進化來的,我們既需要一套完整的架構規劃,來確保完整性和建設規范,但也需要架構能夠持續演進,確保整體穩妥可控,所以我們歸納總結了兩種云原生架構演進路徑作為參考。
參考路徑一:全局宏觀尺度來看(從上向下),根據云原生能力評估來尋找技術短板和演進路徑。如下示例是一個云原生架構三階段演進路徑,幫助金融機構逐步實現應用架構從單體微服務改造,走向單元化,實現同城雙活再到異地多活的變遷。尋求最平衡的架構發展路徑以滿足業務發展和嚴苛場景考驗。
參考路徑二:從問題出發(從下向上),架構演進的目的一定是解決某一類問題。不妨從“問題”的角度出發,來設計整體云原生架構演進。如下示例使一個以解決技術問題來不斷進行云原生架構演進的實踐。
步驟1:為了讓整個應用架構有“更好的底層支撐”,將應用架構運行在云平臺上
步驟2:為了解決單體架構“復雜度問題”,使用微服務架構
步驟3:為了解決微服務間“通訊異常問題”,使用治理框架 + 監控
步驟4:為了解決微服務架構下大量應用“部署問題”,使用容器
步驟5:為了解決容器的“編排和調度問題”,使用 Kubernetes
步驟6:為了解決微服務框架的“侵入性問題”,使用 Service Mesh