面對"不確定性"的最佳解:現代化應用
本文引用地址:http://dyxdggzs.com/article/202201/430893.htm
「長(cháng)期規劃」真的無(wú)效了嗎?對此,我更傾向持保留意見(jiàn)。自從人類(lèi)步入快速發(fā)展的數字化時(shí)代,「可確定的未來(lái)」在很多時(shí)候確實(shí)已成為一種奢侈,就如同新冠疫情絕不會(huì )是最后一只黑天鵝,但這并不代表不再「長(cháng)期規劃」有效。相反地,現在企業(yè)的「長(cháng)期規劃」正在回歸到更為基礎與核心的業(yè)務(wù)本質(zhì),也就是如何在變革的常態(tài)中,保持業(yè)務(wù)競爭力與創(chuàng )新的活力,讓企業(yè)具備應對變化的韌性。
事實(shí)上,即使在去年商業(yè)活動(dòng)最舉步維艱的那段時(shí)間,我們仍看到許多具備靈活性的企業(yè)快速適應了新的環(huán)境,甚至發(fā)掘出新的成長(cháng)機會(huì )。相信很多人和我一樣好奇,這些企業(yè)的數字化基礎設施如何能在極短的時(shí)間去適應與過(guò)去迥異的業(yè)務(wù)需求。我們很快得到了答案──從去年開(kāi)始,「現代化應用」被越加頻繁地提及。
這意味著(zhù),更多的企業(yè)意識到現代化應用的敏捷性、通用性及擴展性等優(yōu)勢,成為企業(yè)立足長(cháng)期發(fā)展的「標配」。當你不知道變化將從何而來(lái),也無(wú)法制定如同說(shuō)明書(shū)一樣按部就班的發(fā)展計劃時(shí),構建與業(yè)務(wù)互相搭配且更為敏捷的現代化應用架構,就成了面對不確定性的最佳解。
雖然有時(shí)候我們會(huì )用微服務(wù)、容器化、無(wú)服務(wù)器這類(lèi)技術(shù)名詞去描述現代化應用,但必須強調的是,現代化應用及實(shí)現過(guò)程并不是技術(shù)和產(chǎn)品的機械化堆棧。企業(yè)對現代化應用的向往并不是因為其技術(shù)先進(jìn),而是為了適應業(yè)務(wù)需求并助力業(yè)務(wù)拓展,以不斷發(fā)現新的機會(huì ),或創(chuàng )造更好的產(chǎn)品和服務(wù)。
現代化應用:始于業(yè)務(wù)、終于業(yè)務(wù)
雖然現代化應用的價(jià)值來(lái)自一個(gè)長(cháng)周期內對企業(yè)業(yè)務(wù)支持的「總量」,但基于與眾多用戶(hù)的溝通,我們發(fā)現現代化應用也同樣是他們立足當下的現實(shí)需求。舉幾個(gè)有代表性的例子:有些用戶(hù)會(huì )希望更少關(guān)注基礎設施管理,而是專(zhuān)注于業(yè)務(wù)本身;有些則希望軟件架構從反映企業(yè)組織架構轉變?yōu)榉从硺I(yè)務(wù)邏輯;還有些用戶(hù)希望開(kāi)發(fā)團隊花費寶貴精力所編寫(xiě)的每一行代碼都符合業(yè)務(wù)邏輯。
總結而言,企業(yè)使用者需要現代化應用的核心原因之一,就是從設計、構建到管理都與業(yè)務(wù)緊密相關(guān)?,F代化應用一定是緊緊圍繞著(zhù)業(yè)務(wù)核心,正所謂「始于業(yè)務(wù)、終于業(yè)務(wù)」。
至于業(yè)務(wù)如何從現代化應用中受益,相信很多企業(yè)都有自己的看法和期待。在AWS眼中,現代化應用的基本特征,或者說(shuō)優(yōu)勢,體現在以下幾點(diǎn):
一、敏捷性:快速開(kāi)發(fā)、快速應用,并且能夠敏捷地迭代;
二、可擴展性:例如可擴展到數百萬(wàn)量級的用戶(hù),確保足夠的彈性以保障業(yè)務(wù)拓展;
三、全球可用:這對于正在「出?!沟钠髽I(yè)尤為重要;
四、毫秒級的回應能力:并且能夠處理PB級、甚至EB級的數據。
今天,無(wú)論是提供給使用者的現代化應用服務(wù),還是自己作為一家公司走過(guò)的現代化應用歷程,我們所有的迭代與創(chuàng )新都來(lái)自于用戶(hù)及亞馬遜自身的業(yè)務(wù)需求。這些寶貴經(jīng)驗是AWS 15年持續引領(lǐng)現代化應用的重要基石,正如亞馬遜執行長(cháng)Andy Jassy所說(shuō):經(jīng)驗沒(méi)有壓縮算法(There is no compression algorithm for experience)。我們所有的探索都不白費,每一步都是經(jīng)過(guò)踏實(shí)地累積而來(lái)。
1995年亞馬遜創(chuàng )立之初,所有的邏輯只在一個(gè)單體式應用里,也只有一個(gè)數據庫。隨著(zhù)業(yè)務(wù)的拓展,到了2001年,亞馬遜進(jìn)入了面向服務(wù)架構(SOA)階段,比如商品、訂單、服務(wù)等模塊都在那個(gè)時(shí)期成形。此后,亞馬遜進(jìn)入了更多領(lǐng)域,產(chǎn)品迭代和客戶(hù)體驗迭代的速度越來(lái)越快,這些已經(jīng)按照SOA拆分出來(lái)的模塊,自己又會(huì )變成超大的單體。所以2002年到2006年,亞馬遜正式啟動(dòng)了微服務(wù)化架構。
為了支持新的應用架構方法,亞馬遜打破職級,將開(kāi)發(fā)團隊重組為多個(gè)小型的自治團隊,規模小到每個(gè)團隊只能用兩個(gè)披薩就喂飽。我們讓每個(gè)「雙披薩團隊」集中開(kāi)發(fā)一個(gè)特定的產(chǎn)品、服務(wù)或功能集,授權他們成為產(chǎn)品負責人,可以快速對他們負責的產(chǎn)品做出決策。從那時(shí)起,亞馬遜不只是從技術(shù),而是包括從組織架構和管理策略,建立一整套微服務(wù)體系,團隊可以自行開(kāi)發(fā)營(yíng)運和迭代。
亞馬遜在建構高度可擴展基礎設施的成功拓展新的核心能力,這才有了AWS在2006年的成立。到2020年,亞馬遜已經(jīng)有超過(guò)10萬(wàn)個(gè)微服務(wù),從起初每年部署幾十個(gè)功能,到現在可以每年部署幾百萬(wàn)個(gè)功能。
過(guò)去15年來(lái)一直在現代化應用領(lǐng)域持續投入與創(chuàng )新。與AWS「同齡」的Amazon Simple Queue Service(Amazon SQS)至今仍被許多客戶(hù)采用。2012年我們推出了鍵值和文文件數據庫Amazon DynamoDB,這個(gè)可以隨著(zhù)應用的拓展而幾乎無(wú)限擴展的無(wú)服務(wù)器數據庫,目前每天可以處理超過(guò)10兆個(gè)請求,在A(yíng)mazon Prime Day期間一度達到每秒8,920萬(wàn)次的峰值。
2014年推出的無(wú)服務(wù)器運算服務(wù)Amazon Lambda更是一個(gè)劃時(shí)代的創(chuàng )新。如果說(shuō)我們90%的創(chuàng )新是基于客戶(hù)提出的具體需求,那么Amazon Lambda就屬于剩下的10%,此是根據客戶(hù)「只提出要實(shí)現什么目標」而進(jìn)行的創(chuàng )新。此后,又推出適用于容器的無(wú)服務(wù)器服務(wù)AWS Fargate,和高效能關(guān)系數據庫Amazon Aurora──包括后來(lái)發(fā)布的Amazon Aurora Serverless V2,可在不到1秒的時(shí)間內擴展至支持幾十萬(wàn)個(gè)數據處理交易,從而把客戶(hù)「希望從基礎設施管理中解放出來(lái)而專(zhuān)注于業(yè)務(wù)」的目標做得更極致。
什么時(shí)機、選擇何種實(shí)現路徑,仍由業(yè)務(wù)「做主」
企業(yè)的現代化應用轉型,是否有一些可遵循的脈絡(luò )?基于過(guò)往服務(wù)全球數十萬(wàn)客戶(hù)的實(shí)戰經(jīng)驗,總結三個(gè)可選擇的路徑,分別是:平移(Replatform)、重構(Refactor)和建構共享服務(wù)平臺(Shared Services Platform)。
在大多數情況下,這三個(gè)路徑將共同組成一個(gè)現代化應用架構的完整生命周期。因此,企業(yè)用戶(hù)在進(jìn)行現代化應用轉型時(shí),并非只取其一或遵守固定的順序。在什么時(shí)機、什么需求場(chǎng)景、選擇哪種路徑,最終要由企業(yè)特性和業(yè)務(wù)需求來(lái)做主。
「平移」通常是企業(yè)上云的第一步,即利用容器把本地數據中心的應用遷移到云端,快速實(shí)現現代化應用的架構、交付模式和營(yíng)運模式。對使用者來(lái)說(shuō),平移的主要目的是把核心應用快速上云,利用云端具備彈性的特點(diǎn)簡(jiǎn)化基礎設施營(yíng)運并降低維護成本。例如在本地使用了Oracle或者SQL Server,就可以快速地將數據先搬到云端托管,暫時(shí)無(wú)需考慮數據拆分。
容器化是平移的利器,在這一路徑中扮演著(zhù)相當重要的角色。今天云端托管的容器有80%都運行在A(yíng)WS上,因為我們在容器的產(chǎn)品和服務(wù)方面帶給使用者更靈活的選擇。
而「重構」是透過(guò)微服務(wù)拆分、數據重構以實(shí)現應用基于業(yè)務(wù)邏輯的重構,從而獲取數據驅動(dòng)下的敏捷性和創(chuàng )新力。重構過(guò)程中,微服務(wù)化是最重要的方法──把業(yè)務(wù)邏輯和數據透過(guò)API向其它團隊公開(kāi),打造一個(gè)高度解耦的架構。微服務(wù)的開(kāi)發(fā)團隊可以獨立迭代、發(fā)布應用,大幅提升創(chuàng )新速度,同時(shí)最小化故障發(fā)生時(shí)的影響半徑。
重構階段往往是利用新技術(shù)的最佳時(shí)機。例如,在此階段企業(yè)可以?xún)?yōu)先考慮使用Serverless,讓「企業(yè)所寫(xiě)的每行程序代碼都是應用邏輯」的愿景成真。而在A(yíng)WS,Serverless并不僅僅是無(wú)服務(wù)器運算Lambda,而是提供給使用者一整套無(wú)服務(wù)器服務(wù),來(lái)協(xié)助使用者開(kāi)發(fā)基于無(wú)服務(wù)器的端到端核心應用。
從三年前開(kāi)始,Comcast旗下的影音廣告技術(shù)公司FreeWheel開(kāi)始將多個(gè)本地數據中心逐步遷移到AWS全球的基礎設施。FreeWheel透過(guò)采用Amazon Elastic Kubernetes Service(Amazon EKS)容器協(xié)調服務(wù),在不改變現有架構的情況下實(shí)現應用遷移,讓系統獲得了資源彈性;使用Amazon Lambda無(wú)服務(wù)器運算打造高可用性的微服務(wù),為各種規模的應用程序提供支持,使得系統更易于開(kāi)發(fā)和部署。
一系列云端創(chuàng )新的行動(dòng),讓FreeWheel能夠在奧運會(huì )、Super Bowl、世界杯等10多個(gè)全球收視率最高的賽事活動(dòng)期間,成功地支持所服務(wù)的一線(xiàn)媒體,順利因應2秒內激增100倍的超大流量,大幅提升維運效率并節省了超過(guò)50%的資源使用成本。
「建構共享服務(wù)平臺」則是為了實(shí)現現代化應用的規?;渴?。
當企業(yè)的微服務(wù)達到一定規模,可能會(huì )面臨「沒(méi)有專(zhuān)門(mén)針對微服務(wù)應用快速部署營(yíng)運平臺」的挑戰。建構共享服務(wù)平臺就是讓企業(yè)利用共享服務(wù)平臺標準化、自動(dòng)化的營(yíng)運能力,加速現代化應用開(kāi)發(fā)的規?;?,協(xié)助用戶(hù)專(zhuān)注于產(chǎn)品開(kāi)發(fā)、提高生產(chǎn)力。
如何既能讓每個(gè)微服務(wù)團隊敏捷高效,又能讓其程序代碼部署管理更有一致性?AWS的AWS Proton是第一個(gè)針對容器和無(wú)服務(wù)器應用程序部署的完全托管服務(wù)。借助AWS Proton,營(yíng)運平臺團隊可以提供統一管理的無(wú)服務(wù)器和容器的模板,使數百或數千支應用開(kāi)發(fā)團隊無(wú)須自己管理和維護這些基礎架構,只需專(zhuān)注于開(kāi)發(fā)業(yè)務(wù)邏輯程序代碼。企業(yè)只需按任意順序達成五個(gè)元素。
無(wú)論企業(yè)如何實(shí)踐以上三個(gè)路徑,最終目標都是為了建構「有效的」現代化應用,使其能夠真實(shí)有效地提升企業(yè)未來(lái)的敏捷性和創(chuàng )新速度。
為此,企業(yè)需要做到讓自身的現代化應用按任意順序去達成五個(gè)元素,其中既包括設計和建構方式,也包括管理模式的轉型。
五個(gè)元素敘述如下:
一、架構微服務(wù)化
微服務(wù)克服了單體式應用龐大、添加改進(jìn)功能復雜等挑戰,應用程序由獨立組件組成,每個(gè)組件作為一個(gè)服務(wù)運行,實(shí)現一個(gè)特定業(yè)務(wù)功能,按照需求進(jìn)行靈活更新、部署和擴展。在當下,微服務(wù)已經(jīng)成為現代化應用「靈魂」般的存在。
二、數據庫專(zhuān)用化
應用現代化之后,資料和應用也可以解耦了。數據庫和微服務(wù)相輔相成,可以帶來(lái)多個(gè)好處:微服務(wù)數據量成長(cháng)時(shí)只需變動(dòng)相對應的數據庫,獲得更好的擴展性;可避免單體式數據庫故障而影響整個(gè)應用,容錯性更強;微服務(wù)可以自由選擇最適合業(yè)務(wù)需求的數據庫,靈活度更高。
三、自動(dòng)化的軟件交付管道
當單個(gè)團隊獨立交付軟件,尤其是在手動(dòng)交付時(shí),彼此的協(xié)調性和質(zhì)量一致性就成為挑戰。對此,我們采用的解決方案是標準化和自動(dòng)化雙管齊下。首先,將軟件交付流程定義為最佳實(shí)踐模板,各個(gè)團隊都用模板配置基礎設施資源,確保正確起步;其次,透過(guò)自動(dòng)發(fā)布管道,包括持續整合和持續部署(CI/CD),可以快速測試和發(fā)布大量程序代碼,最大限度地減少錯誤。
四、基礎設施無(wú)服務(wù)器化
當我們說(shuō)「無(wú)服務(wù)器」時(shí),我們指的是那些不需要基礎設施供應和擴展,具有內建的可用性和安全性,并使用按需付費模型的服務(wù)。無(wú)服務(wù)器能夠讓團隊從那些與業(yè)務(wù)沒(méi)有直接關(guān)連的基礎設施維護工作中解放出來(lái),專(zhuān)注于創(chuàng )造更有價(jià)值的用戶(hù)體驗和創(chuàng )新產(chǎn)品。
五、安全特性整合化
在現代化應用中,安全功能內建于每個(gè)組件,隨版本變化自動(dòng)測試和部署。這也意味著(zhù),安全不再只是安全團隊的責任,而是深入整合到開(kāi)發(fā)生命周期的各個(gè)階段,工程、營(yíng)運和合規團隊都要發(fā)揮作用。
寫(xiě)在最后
以上是AWS對于現代化應用的一些觀(guān)點(diǎn)和經(jīng)驗總結。我認為現在與大家深入探討現代化應用恰逢其時(shí)──企業(yè)對基礎設施敏捷性和彈性的高度需求是前所未見(jiàn)的,而作為連續11年被Gartner評為領(lǐng)導者的云端服務(wù)供貨商,AWS帶來(lái)的一整套現代化應用建構方案及方法論,也確實(shí)值得被關(guān)注和思考,因為這些探討都經(jīng)過(guò)無(wú)數實(shí)際應用的檢驗,而且已被證明有效。
現代化應用轉型將是一個(gè)長(cháng)期、持續的過(guò)程。在這趟旅途中,AWS也期待聆聽(tīng)所有客戶(hù)的需求,并運用我們在云端服務(wù)領(lǐng)域卓越的廣度、深度和創(chuàng )新速度,為每一個(gè)客戶(hù)建構可支持未來(lái)長(cháng)期業(yè)務(wù)創(chuàng )新的現代化應用架構。
(本文作者顧凡為AWS大中華區產(chǎn)品部總經(jīng)理)
評論