演講中,盛延敏主要圍繞着螞蟻金服容器平台的雙模容器落地路徑,所能夠提供的金融級雲原生能力,以及所經曆的實際嚴苛場景驗證三個方面,分享了螞蟻金服容器平台如何幫助企業實作靈活響應業務更疊。

基礎設施架構變革 正徹底改變業務應用的傳遞模式
首先來回顧一下軟體行業傳遞模式的演變曆史。對于傳遞模式而言,最早大家比較關心IaaS層面的内容,以OpenStack、KVM或者VMWare等為代表的技術大行其道,這個階段大家比較關心虛拟機,無論是應用還是分布式中間件,基本都是通過虛拟機來搭建和運維。随着技術的進步,通過應用無狀态化以及運維自動化的技術更新,軟體傳遞來到了一個新時代。這個時代,大家所關注的中心上移到了PaaS領域,此時應用開發者重點關注自己所開發的應用,我們可以稱之為Cloud-Ready時代,這個階段中,無論是分布式應用、所使用的語言環境還是運維和監控,都統一地托管在PaaS平台之上的。在Cloud-Ready時代,如果想要支援多語言和多架構,就要提供語言和架構的技術規範化體系,例如buildpack。技術再向前發展,到了2013年,2014年左右,一家叫做Docker的公司走向了曆史舞台,它将cgroup和namespace等技術實作了極緻的産品化,創造性地提出了Docker image方式,此時軟體傳遞的方式,應用程式本身和語言、技術棧以及架構緊密地耦合在一起了,此時就進入了CaaS時代,我們可以稱之為Cloud-Native的時代。在這個時代,無論是對于中間件還是微服務,完全都可以通過雲原生的方式來實作,這就帶來了架構、效率和運維體驗的極緻提升。
基于容器技術的“雲原生”已成為事實标準
一直以來,容器技術所标榜的就是通過“集裝箱”方式進行傳遞。将軟體和産品打包成為标準化的鏡像,而鏡像就像是集裝箱一樣,可以幫助我們将軟體托運到任何地方、任何環境,并通過一鍵拉起實作部署。現在,無論是技術社群、開發者還是雲服務提供商,都在積極地擁抱和倡導基于容器技術的“雲原生”時代。
CNCF雲原生計算基金會在2018年的調查顯示“雲原生生産環境應用增長200%,社群關注度和評估量增長近3倍”。當然,各個組織的關注點可能不同,但是卻集中在技術可用性以及生産效率的提升上。這裡以Kubernetes和Docker為代表的雲原生技術的關注度在下圖中也得到了非常明顯的展現。
當談到雲原生的時候,大家不禁要問什麼是雲原生呢?是Kubernetes還是Docker?還是OCR的标準?CNCF組織給雲原生定義了一套标準,而這套标準也在不斷實踐和打磨,在2018年他們也推出了一個新版本,主要包括了五種技術基石和三種雲形态支援。這五中技術基石分别是容器、服務網絡、微服務、不可變基礎設施以及聲明式API,三種雲形态則包括公共雲、混合雲以及專有雲。
這裡需要強調的是聲明式API,這是雲原生時代與之前時代所不同的重要理念。在過去,無論是運維還是釋出,都習慣于通過發送指令來啟動觸發事件,比如啟動或者停止某一個應用。而到了雲原生時代,聲明式API的理念就是“想要一個應用處于運作狀态、想要一個應用處于停止狀态”,其表達了終局一緻的理念,非常像微積分中的無窮逼近,而Kubernetes的編排子產品就是按照這個理念設計出來的,其幫助運維人員維護最終狀态的驅動,這就是雲原生時代和過去的運維時代非常顯著的差別。
螞蟻金服内部經過多年的實踐所得到的啟示是:雲原生架構看上去非常好,但是雲原生架構的轉型并不能一蹴而就。在向雲原生架構轉型的過程中也存在很多問題,原本的系統中存在很多曆史負債,無法實作直接跳躍,是以需要漸進的架構方案;在架構轉型上,需要一個大規模、金融級的運維支援,幫助把雲原生方案落地;此外,還需要經過各種嚴苛的金融業務場景的驗證,我們的技術和産品才能提供給螞蟻金服的客戶和合作夥伴使用。
漸進式雲原生架構轉型方案
傳統架構遷移到雲原生架構會存在一些普遍問題,也有一些存在于開發和運維同學心中的觀點。第一種理念就是非常習慣原本虛拟機方式,希望所做的任何事情都圍繞機器展開,比如能夠到機器上看日志,并跟着機器和IP進行監控,包括将遺留資産體系的打通都是圍繞這套理念實作的。第二種理念就是雖然非常推崇雲原生,也希望使用雲原生,但是雲原生在自身實際場景中不能玩得轉。因為雲原生基于終局一緻的理念,這就意味着它意味着無時無刻都在發生着生産線的變更。這些變更能否在傳統運維體系中被完全的掌控和監控,以及排程上的一些問題能否完全解決,都存在很大的問題,這或許會使得開發和運維對于雲原生架構産生不信任甚至懷疑。還有一種觀點就是敢于擁抱雲原生,但是又不得不思考已有系統架構和已有業務的問題,考慮能否在傳統方式和雲原生方式之間提供一些“魚與熊掌皆可兼得”的方案。
螞蟻金服所提供的答案是“Yes”。螞蟻提供了在已有基礎設施之上進行的漸進式架構遷移方案,提供了基于Docker VM輕量級虛拟機的一整套運維體系的規範,同時也提供了支援雲原生體系的釋出、部署以及運維的規範,前者能夠完美地對接已有資産和系統監控運維等體系,使得使用者不再困惑。此外,螞蟻還将中間件最佳實踐落實到大規模容器雲平台之上,包括了Service Mesh的落地以及跨語言的架構。并且容器平台還會能夠支援彈性能力的訴求,可以完美适配公有雲、專有雲、混合雲。
傳統與雲原生架構的雙模運維
可以大緻将組織裡面的業務分成兩種形态:穩态和敏态。穩态業務就是比較傳統和核心的業務,這些業務追求穩定和已有的運維、監控、釋出體系的相容性,螞蟻的金融行業容器平台對此提供了輕量級虛機解決方案,融合了分組、灰階以及無損釋出等能力,讓使用者在原本的體系下可以繼續玩得轉。另外一方面,一些創新業務歸為敏态業務,這些業務需要依靠大資料以及人工智能等技術的創新,是以對于敏态業務而言,擁抱新開源架構和新技術的訴求非常強烈。而基于雲原生理念,可以幫助使用者迅速擁抱這種變化,并且可以提供安全容器技術幫助使用者實作更好的安全隔離,保證企業群組織實作“魚與熊掌兼得”,使得傳統業務和創新業務同步開展,并且是通過一套系統支援業務的疊代和創新。
原生支援Service Mesh
對于任何一個組織而言,想要打造像螞蟻金服這樣經過十幾年的風雨所打造的微服務架構體系,所付出的努力是難以想象的。而如今,開發組織可以通過對接SOFA Mesh,并通過在透明的Pod裡面注入Sidecar的方式,瞬間就可以擁有螞蟻金服沉澱多年的分布式架構技術紅利,進而對企業産生巨大的幫助。此外,結合螞蟻金服分布式單元化架構能夠提供更好的容災服務能力。
混合雲架構
此外,螞蟻金服還提供了混合雲架構解決方案,因為底層使用的是容器化技術,是以可以對接實體機以及OpenStack和VMWare等虛拟化平台。雲上和雲下都提供了一套體驗一緻的分布式中間件, 通過服務目錄的方式把應用所依賴的服務進行注入,這樣就能夠在公有雲和專有雲之間靈活地配置設定負載。當大促來臨的時候,可以将負載更多地切換到公有雲上,大促結束之後可以将資源返還給公有雲資源池,這樣就可以從根本上解決企業營運所面對的資源伸縮問題。
大規模金融級運維能力支撐
整套體系想要落地就離不開大規模金融級運維能力的支撐。接下來從規模化叢集運維、單元化釋出、一體化監控分析以及自動化流程編排這四個方面來闡述大規模金融級運維能力。
大規模叢集運維能力;對于Kubernetes而言,想要管理好一套Kubernetes叢集也都是極其困難的事情,更不用說在生産環境中運維和管理多套Kubernetes叢集了。經過技術性探索,螞蟻金服創造性地提出了Kubernetes管理方案——K8S on K8S(KOK)。對于KOK方案而言,底層存在元叢集,元叢集采用一體化方式安裝起來的。元叢集的使命就是運維業務叢集,而元叢集的元件不會頻繁更新,是以安裝基本上就是一次性工作。元叢集安裝完成之後,可以在其上面布置元件,這裡包括兩個非常關鍵的元件——Machine Operator和Cluster Operator,這兩個元件負責對業務叢集進行管理。業務叢集的Master節點将會作為元叢集的Worker節點加入到元叢集中,這樣就可以被元叢集管理,而且其部署方式也是通過原生方式實作的,這樣就可以在元叢集的監控面闆上看到業務叢集所有中控元件,可以很友善地進行運維、更新以及版本管理,借助Kubernetes本身的能力就可以管理好多個叢集,帶來業務和運維上的便利。
單元化釋出運維能力;螞蟻容器平台支援VM和容器的雙模釋出,這一點在單元化釋出方式上都會得到支援。單元化釋出能夠輕松支援萬級規模節點的藍綠機房釋出和灰階釋出,實作分鐘級容災能力。并且我們支援藍綠釋出和彈性伸縮。下圖中最右邊是動态彈性伸縮子產品,其通過收集監控告警資訊并進行處理分析,進而觸發彈性伸縮,這樣就會保證對外服務的節點和副本數保持不變。
一體化監控分析;對于任何大規模的容器平台或者PaaS平台而言,監控體系都是其靈活的“眼睛”。通過一體化監控分析平台可以統一收集監控資料,并送到背景子產品進行統一處理和模組化,經過一體化處理以後,資料将會呈現在可視化大盤上,并可以提供給業務進行自定義分析。一體化監控體系也秉持“相容社群,擁抱開源”的理念,不僅可以相容社群的很多技術,還在積極地回饋社群。
自動化流程編排;如下圖左側所示的是自動化流程編排的案例,提供了一些基于條件驅動的子產品,使得使用者可以不斷沉澱流程模闆并且加入到流程商店裡面,通過這種方式将一些碎片化的操作整合成相應的自動化流程模闆。在下圖中右側還展示了兩個例子,一個是網商銀行故障自愈場景的案例,另外一個則是螞蟻國際運維自動化場景的案例。
嚴苛金融業務場景實際驗證
下圖所示的是網商銀行基于Kubernetes的實踐案例。網商銀行是中國第一家将核心系統全部運作在SOFA Stack分布式架構和螞蟻金融雲上的銀行。在2018年的大促中,網商銀行做了幾件重要的事情,包括了分布式架構資料的拆分、單元化、異地多活等。另外,我們還對底層的技術架構進行了更新,将2018年雙11和雙12的所有工作負載都放在了容器引擎上,支援了數千的節點和數萬的Pod,有力的保證了網商銀行大促的增長達到400%。我們的容器引擎帶來的技術紅利包括兩部分,一方面使得資源使用率更高,通過高密度部署,使得實體機使用效率更高;再加上離線線上任務的彈性混部,使得CPU的使用率也更高。第二方面還使得整體效率得到提升,從原本的軟體包傳遞模式變成集裝箱式傳遞模式,使得整個開發者工程效率和SRE運維效率都得以提升。
如今,螞蟻金服提供了一整套基于Ant Stack的産品,在這套産品之上構築了各種場景的解決方案,包括了大家所熟知的螞蟻風控、生物識别、移動開發以及螞蟻國際化和國際支付等,都是基于螞蟻的容器引擎之上的。可以說,螞蟻金服圍繞着金融決策和金融分析打造了一整套面向合作夥伴的解決方案。現在,螞蟻将自身的容器引擎實作了産品化,以PaaS平台的方式為企業客戶提供。通過螞蟻金服DevOps的持續內建流水線,大規模容器化釋出部署以及高效資源編排的能力,最終為使用者提供完整的PaaS平台。
如下圖所示的是螞蟻的SOFA Stack為大家提供的PaaS産品和解決方案的全景圖。在這張全景圖上有兩套标準、三個平台和三種形态。第一個标準就是Cloud-Provider,其意義在于屏蔽掉底層基礎設施的差別,通過Cloud-Provider可以對接虛拟化平台,隔離底層基礎設施。另外一個标準Open Service Broker API的标準,這一标準主要是為了擁抱生态,使得PaaS平台能夠更好地擴充能力,對接計算、存儲以及網絡能力,将這些能力整合進來,變成應用PaaS平台所能提供的能力,這也符合整個社群一貫的做法。三個平台則是應用與容器平台、監控分析平台以及容災應急平台。三種形态是公有雲,專有雲和混合雲。最上面則會提供面向各種應用場景的解決方案,包括了DevOps解決方案、容器化解決方案、單元化結構,以及異地和同城容災的解決方案。
關鍵資訊總結
雙模容器落地路徑;在本文所分享的主要内容中,螞蟻金服的金融行業容器平台所提供的能力為的是幫助企業群組織降低雲原生的門檻,從傳統的運維模式漸進地邁向雲原生。螞蟻金服為企業提供了所謂的雙模能力,使得新系統既能夠相容已有系統,也能提供面向未來的體驗。
金融級雲原生能力;螞蟻金服助力企業打造大規模金融級運維能力,使金融級雲原生能力能夠落到實處,帶來真正的價值。
實際嚴苛場景驗證; 無論是産品還是核心的整個平台,都是包括網商銀行和支付寶在内的整個螞蟻金服,在經過了一系列嚴苛的場景考驗之後,最終才會傳遞給客戶和合作夥伴的。
點選閱讀更多,檢視更多詳情