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