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