受騰訊云Serverless團(tuán)隊(duì)之邀,Tim Wagner在Techo開發(fā)者大會(huì)上為中國(guó)開發(fā)者發(fā)表了Keynote演講,演講中Tim發(fā)表了對(duì)Serverless技術(shù)的最新洞見和趨勢(shì)解讀。Tim Wagner是AWS Lambda的創(chuàng)始人,作為業(yè)界最早的Serverless實(shí)踐者,他無愧于Serverless教父之位。
本文內(nèi)容整理自Tim Wagner的演講實(shí)錄,由騰訊云Serverless團(tuán)隊(duì)進(jìn)行翻譯、校對(duì)和整理。下面就讓我們一起再次回顧一下,Serverless教父的這次精彩的主體演講。本文約3700字,閱讀時(shí)間約9分鐘。
大家好,我是Tim Wagner,Vendia CEO和聯(lián)合創(chuàng)始人,我的整個(gè)職業(yè)生涯都在努力讓軟件和應(yīng)用程序更容易開發(fā)。
早在2013年,我就找到AWS的高管團(tuán)隊(duì)探討一個(gè)想法,是否能夠通過將確保程序運(yùn)行的大部分復(fù)雜性工作從開發(fā)者轉(zhuǎn)移到云提供商,從而使得在云上創(chuàng)建應(yīng)用程序變得更加簡(jiǎn)單。云提供商已經(jīng)擁有大量的專業(yè)知識(shí)、出色的運(yùn)維工具和大量專業(yè)人員,致力于保持服務(wù)器和存儲(chǔ)服務(wù)全天候不間斷平穩(wěn)運(yùn)行。讓開發(fā)者不必?fù)?dān)心擴(kuò)縮容、容錯(cuò)或基礎(chǔ)設(shè)施維護(hù),這會(huì)使軟件構(gòu)建變得容易得多。
基于這個(gè)想法,AWS Lambda誕生了。盡管我們沒有使用Serverless這個(gè)詞,但它是云計(jì)算領(lǐng)域出現(xiàn)Serverless的開端——一種無需考慮服務(wù)器和容器便可大規(guī)模運(yùn)行代碼的方式。今天我想分享一些洞察,關(guān)于云,尤其是Serverless的發(fā)展方向。
在此之前,我們需要先回顧一下云計(jì)算的歷史發(fā)展。我將云計(jì)算分為三次浪潮。
第一次大約從2006年到2014年,主要是特征是在企業(yè)數(shù)據(jù)中心之外托管服務(wù)器。
對(duì)于那些較早的云使用者,我們稱他們?yōu)樘剿髡?,?dāng)時(shí)顛覆性的變化是虛擬機(jī)能夠在10分鐘之內(nèi)運(yùn)行起來。在這次浪潮中幾乎不涉及Serverless,這些探索者尋求的是遷移的兼容性,而不是云所帶來的新功能,而這意味著云服務(wù)與傳統(tǒng)服務(wù)器托管服務(wù)的差異盡可能小。此外,這些探索者通常都是分布式系統(tǒng)專家,在許多情況下,他們都會(huì)帶著自己的原有的流程和運(yùn)維團(tuán)隊(duì)來處理擴(kuò)展、容錯(cuò)和操作維護(hù)等問題。
第二波浪潮,建立在第一波基礎(chǔ)之上。比方說,AWS Lambda是完全基于現(xiàn)有服務(wù)(例如EC2和S3)構(gòu)建的第一個(gè)服務(wù),而不是直接使用裸金屬硬件構(gòu)建的。第二波浪潮直到我們創(chuàng)造出那些新的云計(jì)算技術(shù)和云計(jì)算能力,才算真正開始。
第二波開發(fā)者實(shí)際上和以往已經(jīng)有所不同。他們不再專注于純粹的系統(tǒng)遷移,他們?cè)敢鈱W(xué)習(xí)和采用新技術(shù)、新的做事方式,實(shí)現(xiàn)更快的上線速度、更高的開發(fā)效率、更高的安全性或更好的客戶體驗(yàn)。包括Serverless計(jì)算、Serverless隊(duì)列、Serverless數(shù)據(jù)庫(kù)、Serverless BLOB存儲(chǔ),云服務(wù)上將這一套技術(shù)提供給開發(fā)人員。這些開發(fā)者我們稱他們?yōu)椤岸ň诱摺卑?,他們有更?jiǎn)單、更方便的工具,而不是一切都從繪制草圖開始。
這還永遠(yuǎn)改變了云服務(wù)商和開發(fā)者之間的關(guān)系。云服務(wù)商不再只是原始的基礎(chǔ)設(shè)施租賃公司,他們現(xiàn)在會(huì)關(guān)注每個(gè)開發(fā)者應(yīng)用程序的業(yè)務(wù)細(xì)節(jié)。這是一個(gè)巨大的觀念轉(zhuǎn)變和新的職責(zé)。因?yàn)楝F(xiàn)在云服務(wù)的性能和功能,不僅直接影響到人們可以在云上構(gòu)建什么,還包括這些應(yīng)用程序的運(yùn)行情況,以及它們滿足客戶期望的程度。
第二波浪潮里的開發(fā)者與云服務(wù)商達(dá)成了一項(xiàng)至關(guān)重要的默契——開發(fā)者愿意學(xué)習(xí)這些新的技術(shù),并修改代碼去適配這些新的服務(wù),以獲得更好的收益。比如,更低的成本、更簡(jiǎn)單的模式(如事件處理、自動(dòng)擴(kuò)縮容),不再需要考慮配置容量或關(guān)注服務(wù)器健康程度,所有這些都是對(duì)開發(fā)者改變軟件編寫方式的驅(qū)動(dòng)力和優(yōu)勢(shì)。這些優(yōu)勢(shì)推動(dòng)了Serverless的成功。如今,財(cái)富500強(qiáng)企業(yè)幾乎都表示在使用Serverless服務(wù),而且越來越多的開發(fā)者自接觸云便從Serverless開始。
那么下一步是什么?今天我們正處于這一激動(dòng)人心的新階段的開端:我稱之為第三次云技術(shù)浪潮。
這些新浪潮下的開發(fā)者再一次看起來跟之前的開發(fā)人員完全不同。第三次浪潮里的開發(fā)者,好比成長(zhǎng)于云時(shí)代的“城市規(guī)劃師”。如今,進(jìn)入這一行業(yè)的開發(fā)者,可能永遠(yuǎn)不會(huì)真正看到服務(wù)器。他們中的許多人永遠(yuǎn)不會(huì)看到數(shù)據(jù)中心或用到運(yùn)維方法論。對(duì)他們來說,云原生這個(gè)術(shù)語(yǔ)甚至沒有任何意義——因?yàn)樗麄円婚_始就處在云原生的時(shí)代??偟膩碚f,這些開發(fā)者都是實(shí)用主義者,有大量的專業(yè)軟件工程師,用云提供的工具就可以完成他們的工作。
是什么在驅(qū)動(dòng)云計(jì)算的第三波浪潮呢?
這一切,都是為了可以更加容易和方便的使用云服務(wù)去編程。熟悉的工具和框架消除了無差別的繁重工作。標(biāo)準(zhǔn)的部署流程,能夠使開發(fā)者在跳槽時(shí),都能將從一家公司學(xué)習(xí)的技術(shù)應(yīng)用于其他公司。這些技術(shù)標(biāo)準(zhǔn),也使在不同環(huán)境中的技術(shù)復(fù)用成為可能。進(jìn)一步,云為開發(fā)者創(chuàng)造了解決方案,而不僅僅是給他們提供新技術(shù)。
這些對(duì)于Serverless意味著什么?
首先,意味著需要非常廣泛的用例。Serverless最開始只有幾個(gè)用例,比如事件處理。最初,像冷啟動(dòng)這樣的問題,限制Serverless在低延遲場(chǎng)景中的應(yīng)用。所以,要在第三次浪潮中取得成功,Serverless技術(shù)必須消除冷啟動(dòng)等問題,并可以更快速的進(jìn)行擴(kuò)容。目前已經(jīng)看到云廠商解決了這些問題,最新一代的Serverless計(jì)算方案,現(xiàn)在幾乎可以滿足任何應(yīng)用需求。
其次,第三波浪潮中的Serverless需要與現(xiàn)有工具和框架無縫銜接搭配使用。比如,支持容器鏡像等標(biāo)準(zhǔn)。這并不意味著讓開發(fā)人員再次面臨運(yùn)維服務(wù)器和容器的挑戰(zhàn),這只意味著應(yīng)用程序構(gòu)建和部署工具需要標(biāo)準(zhǔn)化和可移植性。
最后,第三波浪潮需要滿足開發(fā)人員的實(shí)際需求:支持現(xiàn)有的語(yǔ)言和框架,并為代碼和配置提供跨云的標(biāo)準(zhǔn)(好比docker映像),以幫助開發(fā)人員在不同的環(huán)境中保留和復(fù)用他們的技術(shù)和代碼。我們已經(jīng)看到該領(lǐng)域的每個(gè)云提供商都提供了驚人的、變革性的產(chǎn)品,這使得Serverless的應(yīng)用更加簡(jiǎn)便,并能夠逐年產(chǎn)生更多的Serverless應(yīng)用案例。
Serverless的未來是什么?基于我已經(jīng)談到的兩個(gè)令人興奮的趨勢(shì),我可以給你們兩個(gè)預(yù)測(cè)。
首先,我們都聽說一個(gè)壞消息——摩爾定律已經(jīng)失效!計(jì)算機(jī)芯片并沒有真正變得更快,內(nèi)存密度也沒有大幅提高——至少?zèng)]有以過去的速度增長(zhǎng)。計(jì)算機(jī)性能每隔幾年翻一番的想法已經(jīng)結(jié)束了,不是嗎?
云計(jì)算取決于三大要素,不僅僅是CPU、內(nèi)存,還有網(wǎng)絡(luò)。云數(shù)據(jù)中心的聯(lián)網(wǎng)速度仍在逐年以驚人的速度變得更快,這對(duì)Serverless來說真的是個(gè)極好的消息。在聯(lián)網(wǎng)速度很慢的年代,云上的高性能計(jì)算的本質(zhì)上取決于服務(wù)器,其工作方式基本上與10到15年前相同。比如,你在云上擁有幾臺(tái)多核CPU和大內(nèi)存的大型實(shí)例,如果你現(xiàn)在正在計(jì)算密集型業(yè)務(wù):例如機(jī)器學(xué)習(xí)或者蒙特卡洛模擬計(jì)算,那么您可能會(huì)以完全相同的方式進(jìn)行,即分配這些強(qiáng)健的服務(wù)器實(shí)例,然后在上面運(yùn)行計(jì)算密集型任務(wù)。
但隨著網(wǎng)絡(luò)相對(duì)于CPU和內(nèi)存變得更快,情況突然發(fā)生了變化。突然之間,分布式存儲(chǔ)和分布式計(jì)算與傳統(tǒng)大型計(jì)算實(shí)例開始競(jìng)爭(zhēng)。開發(fā)者開始考慮,在哪里可以輕松獲得大量的計(jì)算資源——答案就是Serverless云函數(shù)。
為什么是Serverless函數(shù)?在過去的50年里,分布式計(jì)算研究人員專注于基于服務(wù)器的模型,擁有無限的時(shí)間和有限的資源。Serverless計(jì)算徹底顛覆了這一切,開發(fā)人員現(xiàn)在擁有無限的資源,但時(shí)間有限,這就需要大量新的算法和新的研究。
在過去的幾年里,Serverless領(lǐng)域的研究呈爆炸式增長(zhǎng)。關(guān)于Serverless存儲(chǔ)、Serverless計(jì)算、以及圖像處理和線性規(guī)劃等Serverless應(yīng)用的論文有很多,大學(xué)已經(jīng)開展了越來越多的研究來探索這一新的范式,這從根本上是由摩爾定律在網(wǎng)絡(luò)空間中依然有效所驅(qū)使的。而Serverless云產(chǎn)品也因此越來越好,這是一個(gè)令人異常興奮的時(shí)期,這將導(dǎo)致Serverless技術(shù)在第三次云計(jì)算浪潮中得到更多的采用,基于Serverless現(xiàn)在每個(gè)開發(fā)人員在云中部署代碼時(shí),都可以獲得一臺(tái)易于使用、易于編程的“超級(jí)計(jì)算機(jī)”。
再談?wù)勎业牡诙€(gè)預(yù)測(cè),我將從一個(gè)棘手的問題開始——如果Serverless這么棒,為什么我們?nèi)匀辉谑褂梅?wù)器?比較中肯的答案是,狀態(tài)管理和共享仍然很困難。半個(gè)世紀(jì)以來,程序員一直在努力解決,如何構(gòu)建一些跨公司、跨地區(qū)、跨賬戶、跨云、跨技術(shù)棧應(yīng)用程序的問題。Serverless計(jì)算使其中一些模式成為可能,例如同步事件處理、更簡(jiǎn)單有效的編程方法,但是它還沒有解決所有這些挑戰(zhàn)和問題。
為什么會(huì)這樣呢?盡管Serverless有很多優(yōu)點(diǎn)。Serverless計(jì)算仍然存在挑戰(zhàn):這些服務(wù)通常只在一個(gè)云上運(yùn)行,一般的Serverless函數(shù)都沒有內(nèi)置的數(shù)據(jù)模型和持久化存儲(chǔ),這讓你的應(yīng)用程序跨不同地區(qū)、或跨云工作仍然非常棘手。目前當(dāng)這些問題出現(xiàn)時(shí),開發(fā)人員會(huì)使用一些不同的工具和方法來去解決。
現(xiàn)在證明區(qū)塊鏈的基礎(chǔ)技術(shù)——分布式賬本,實(shí)際上可以解決其中的一些難題。分布式賬本天生就是去中心化的,它們通過使用復(fù)制和同步的數(shù)據(jù)存儲(chǔ)跨越云、區(qū)域和帳戶,并提供易于編程的數(shù)據(jù)模型和ACID事務(wù),就像傳統(tǒng)的SQL數(shù)據(jù)庫(kù)一樣。
第一代區(qū)塊鏈作為一個(gè)軟件平臺(tái)并不是很有效。每個(gè)節(jié)點(diǎn)都在單個(gè)服務(wù)器上運(yùn)行,從而將其計(jì)算、內(nèi)存和網(wǎng)絡(luò)資源限制為極少的數(shù)量,并很難與其他云服務(wù)集成,也不能處理大型文件或多媒體等重要的實(shí)時(shí)數(shù)據(jù)。
我創(chuàng)辦Vendia公司的原因之一,就是利用這兩類技術(shù)之間令人興奮的交集。
通過使用Serverless服務(wù)重建分布式賬本,我們可以在每個(gè)節(jié)點(diǎn)中放置一臺(tái)超級(jí)計(jì)算機(jī),從而解決困擾第一代區(qū)塊鏈技術(shù)的性能、集成和部署挑戰(zhàn)。
通過將易于編程、一致數(shù)據(jù)模型的分布式賬本附加到Serverless函數(shù)中,我們可以使客戶訪問Serverless編程模型,該模型能夠跨越公司,云,地理位置甚至技術(shù)棧。
這種技術(shù)標(biāo)準(zhǔn)之下,開發(fā)人員能夠以前所未有的靈活性、可擴(kuò)展性和簡(jiǎn)單性創(chuàng)建可移植的跨云應(yīng)用程序。這樣的創(chuàng)新正在推動(dòng)新一代Serverless應(yīng)用程序的發(fā)展,這些應(yīng)用程序?qū)⒆詈玫姆?wù)與最好的傳統(tǒng)應(yīng)用程序結(jié)合在一起。
Serverless自出現(xiàn)以來經(jīng)歷了令人驚訝的增長(zhǎng)速度,Serverless技術(shù)的未來看起來從未像現(xiàn)在這樣光明。Serverless將為每個(gè)開發(fā)者提供了超級(jí)計(jì)算機(jī)般的性能,提供有狀態(tài)、更輕便的應(yīng)用程序支持、以及鏈接萬物的能力。這將推動(dòng)云計(jì)算的新浪潮即將到來,幫助我們比以往任何時(shí)候都更快、更好地為客戶提供更多價(jià)值。
拜拜!