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