1995年,在Amazon.com相對簡單、原始首頁的背后有著另外一個開發理念:將其作為一個單體或者說是緊耦合應用。不過隨著新功能的多樣且復雜化,亞馬遜很快就意識到緊耦合架構會帶來沉重的成本壓力。
因此,亞馬遜做了兩件事:第一件事,將緊耦合架構拆分成松耦合架構,單體應用變成微服務;第二件事,將研發團隊打散成“小而精”,并定義每個研發團隊負責的事情。如今,Amazon.com電商網站已經擁有了數百萬個微服務,每個微服務都通過標準化的接口來定義,而且有非常多的微服務是通過Serverless來實現的。
事實上,從2006年亞馬遜推出第一個Serverless服務Amazon S3到今天,不僅僅是在計算領域,在存儲、數據庫、大數據、人工智能等其他領域都會看到非常豐富的Serverless產品和應用。而剛剛推出的Amazon OpenSearch Serverless,它代表著亞馬遜云科技在大數據分析補上了最后一塊拼圖。也就是說,亞馬遜云科技提供的所有大數據分析的產品,全部都提供Serverless選項了。
“只做一件事情并且把這件事情做好,這就是Serverless在整個開發的理念中最重要的思想。” 亞馬遜云科技大中華區產品部總經理陳曉建日前在亞馬遜云科技創新大會上表示,Serverless具有四大優勢特征:無需管理服務器,自動擴展與縮減容量,按使用量付費,更高的安全與可用性。它是描述云服務、應用開發實踐和云原生應用架構的一種方式,能夠幫助客戶更加敏捷地構建應用程序,從而更快地創新和應對變化。
當前的商業社會充滿了不確定性:硅谷銀行在48小時之內就沒有任何征兆地倒閉了,當然也有很多創新的技術包括像生成式AI幫助我們產生連肉眼都難以分辨的非常逼真的圖片和動畫。
“Serverless 應用無需管理 API、消息隊列、存儲、數據庫,企業只需要專注于業務邏輯,將更多的精力放在業務創新上,加速應用推出時間。”陳曉建表示,在2022 re:Invent 全球大會上推出的Amazon Lambda Snapstart可將Lambda函數的冷啟動時間降低90%,實現10倍的快速啟動性能,消除在系統啟動的時候帶來的突發延時,客戶不需要做任何的代碼改變,也不需要支付任何的費用。該功能幫助智能支付平臺Bill.com提高了95%的冷啟動性能。
豐富的Serverless服務幫助開發了《 彈殼特工隊》和《 弓箭傳說 》初創游戲公司Habby大幅縮短新游戲的部署和上線時間;幫助《Marvel Snap》卡牌游戲在半年達成全球5000萬美元的總營收;幫助可口可樂在 100 天內構建了新應用程序,允許客戶在不接觸自動售貨機的情況下訂購和支付飲料。
另一方面,Serverless可以消除業務不穩定起伏帶來的隱性成本,輕松應對峰值、非頻發的復雜工作負載;還可以消除數據管理系統按需擴展的復雜實施難題,無需考慮計算和存儲資源的比例,也不會出現節點讀寫狀態不一致等問題。
亞馬遜云科技可以提供全棧Serverless Data服務——六大Serverless 數據庫:Amazon Aurora Serverless、Amazon DynamoDB、Amazon Timestream、Amazon Keyspaces和Amazon Quantum Ledger Database (Amazon QLDB)和Amazon Neptune。2023年3月15日,Aurora Serverless V2在中國區正式上線: 可在幾分之一秒內自動擴展到數十萬個事務; 以細粒度的增量擴展容量,與為峰值負載預置數據庫容量的方式相比,可幫助客戶節省高達90%的成本。
全部的分析服務:交互式查詢服務Amazon Athena、大數據處理服務Amazon Managed Streaming for Apache Kafka (Amazon MSK)、實時分析服務Amazon Kinesis和Amazon MSK、數據倉庫服務Amazon Redshift、數據集成服務Amazon Glue、商業智能服務Amazon QuickSight以及運營分析服務Amazon OpenSearch Service。
此外,Amazon Lambda融入了潛水艇隔離倉的安全理念,滿足企業級生產所需的99.99%高可用:執行環境在硬件虛擬化虛擬機(microVM)上運行;每個Amazon Lambda運行的microVM不會跨亞馬遜云科技賬戶共享;每個執行環境只處理一個并發調用。
無服務器消除了管理基礎架構的需要,也就是說使用無服務器架構,更多的責任例如給服務器擴容或者打補丁,由亞馬遜云科技承擔。
“過去17年,我們持續推進Serverless的發展,將Serverless提供的極致彈性和自動擴展能力帶給越來越多的客戶。此外,亞馬遜云科技大規模云服務的運營能力以及標準、安全的產品API體系,確保了Serverless服務為客戶提供極致的瞬間并發能力,應對極端業務激增,并幫助他們實現大規模部署,把應用快速部署到全球。”在陳曉建看來,大家可能沒有意識到有非常多的應用,現在都可以使用Serverless來實現,而且不需要花非常大的力氣去了解新服務,或是更改架構才能實現。很多客戶的場景其實也證明了這一點。
首先,第一條路徑,從遷移開始,無需代碼改造。對于后端服務的無服務器化重構,亞馬遜云科技開發了開源工具Lambda Web Adapter,客戶無需修改代碼,可以隨意切換應用程序在Lambda和容器之間轉換,基于容器開發的代碼,經過鏡像打包,可以交付到Lambda里執行;相反基于Lambda開發的Web應用,也可以通過web adapter選擇采用Lambda還是采用容器部署和執行。
對于后端數據管理無服務器化遷移,亞馬遜云科技提供與標準接口全面兼容的Serverless數據云服務:關系型數據庫Amazon Aurora全面兼容MySQL 和Postgres;非關系型數據庫Amazon Keyspaces 兼容Apache Cassandra等。
第二條路徑,擁抱事件驅動架構,靈活應對不確定性。事件驅動架構基于事件來解耦應用程序組件,由事件生產者、事件路由和事件消費者三個關鍵組件構成。例如,航空公司訂票系統、餐廳服務的點單系統,和大量的銀行保險業務,都是事件驅動的。
事件驅動型的好處是在于它可以獨立部署和更新,可以避免不同的模塊之間的變化給整個系統帶來的問題,同時可以最大限度的去降低風險。也就是說,事件驅動型的好處在于更少的依賴,有故障隔離,同時是可進化的架構。
以Amazon S3為例,亞馬遜云科技的Amazon S3的設計就是依照一個異步的并發的微服務的架構去開發的,正是基于微服務的一種分布式的異步的架構,可以在保證業務的持續服務的同時,可以不斷增加新的功能。從2006年剛開始的時候,只有8個微服務的模塊,到今天已經有超過了235個微服務模塊,而整個過程對于用戶的服務都沒有產生任何影響。
第三條路徑,Serverless First,降低應用成本。Serverless First就是在構建新的應用時首先考慮是否可以用Serverless 來實現。從而面向應用場景選擇各種所需云原生Serverless服務來設計架構,充分發揮服務之間的功能集成和協同治理優勢。
需要注意的是,Serverless 應用擁有極致彈性和成本優化:相對于容器和有EC2模式,Serverless可以以更細的顆粒度來做資源的部署,提供資源利用率,降低成本。用戶意識到有的非常多的應用現在已經可以通過亞馬遜云科技豐富的Serverless服務來實現,而且不需要很深的技術背景,或是需要更改架構才能實現。
“經驗沒有壓縮算法。我們的全棧Serverless 服務,是長期云服務運營經驗的結晶。”陳曉建始終認為,所有工作的復雜系統都是從工作的簡單系統演變而來:亞馬遜云科技首個Serverless計算服務Amazon Lambda現在每月被調用的次數超過10萬億次;Serverless 數據庫Amazon DynamoDB每天發起10萬億次請求;Serverless 容器Amazon Fargate計算每周新發布的任務超過22.5億。
在這一趨勢下,企業需要重新思考Serverless First策略:避免之前的緊耦合的單體的思維;主動擁抱事件驅動的模式,異步的事件驅動本身就是自然世界的邏輯;無狀態是擴展的關鍵,比如計算和存儲分離來解決橫向擴展業務的健壯性問題,以及避免重復造輪子,應該更好地使用已經有的專業的解決方案。