對于做互聯(lián)網(wǎng)業(yè)務的人來說,Cloudflare這家公司應該不陌生。它最出名的產品是CDN(內容分發(fā)網(wǎng)絡)和安全服務,憑借公司在全球100多個靠近互聯(lián)網(wǎng)邊緣的地方搭建的數(shù)據(jù)中心,為各網(wǎng)站提供內容緩存和安全過濾。但是,這家公司的野心并不止于此,隨著數(shù)據(jù)本地化存儲和處理日漸為越來越多的國家采用,Cloudflare正在讓自己的CPU和邊緣網(wǎng)絡可編程,從而有可能蠶食AWS、微軟、谷歌等公有云巨頭的市場。知名科技博主Ben Thompson對此進行了深入剖析,原文發(fā)表在其個人博客上,標題是:Cloudflare on the Edge
劃重點:
Cloudflare跟公有云提供商是競爭對手的邏輯正在日益顯現(xiàn)
Cloudflare Workers讓Cloudflare的邊緣網(wǎng)絡對開發(fā)者開放
Durable Objects讓開發(fā)者無需關心數(shù)據(jù)放在哪個數(shù)據(jù)中心
Cloudflare Workers相對于公有云有性能上的優(yōu)勢
Durable Objects代表的是一種全新的基礎設施搭建方式——從邊緣進入,而不是從數(shù)據(jù)中心出去
在就Cloudflare的最新財報發(fā)表準備好的評論結束之時,Matthew Prince講了一個關于公司最早期日子的故事:
還在2010年那時候,就在Cloudflare的第一次召開董事會以及發(fā)布之前,一位早期投資者給了我一些建議。他說,經(jīng)營公司有點像駕駛飛機。你希望確保飛機始終保持良好狀態(tài)。而當你在飛行時,你要保持機輪穩(wěn)定,并且讓機頭跟地平線成10度角。這個說法讓我久久不能忘懷,我們對Cloudflare的設計就是為了保證一致且規(guī)范的執(zhí)行。在類似我們剛剛度過的季度那樣的季度里就體現(xiàn)了這一點。
不過,最重要的,是飛機要飛赴的目的地。
Prince提到的發(fā)布是在TechCrunch Disrupt 2010;發(fā)布的整段視頻都值得一看,但其中主要有三個亮點。首先是,盡管出現(xiàn)了3分鐘的技術延遲,但在展示Gloudflare的價值主張這件事情上,Prince還是出色地完成了工作。
作為哈佛商學院的畢業(yè)生,在回答有關競爭的問題時Prince直接引用了哈佛商學院的克萊頓·克里斯滕森(Clayton Christensen)教授說過的話。
演講中最令人難忘的時刻是Prince對一個看似溫和的問題的回答。這個問題問的是Cloudflare會發(fā)展到什么樣的規(guī)模。
盡管Prince的回答非常大膽——我們的愿景是為互聯(lián)網(wǎng)提供動力——該公司在2019年的招股說明書(S-1)列出的競爭對手名單無論從廣度上還是在規(guī)模上似乎都顯得相當有抱負:
我們當前和未來潛在的競爭對手涵括了許多不同類型的公司,包括:
本地硬件網(wǎng)絡供應商,比方說思科系,F(xiàn)5,Check Point,F(xiàn)ireEye,Imperva,Palo Alto Networks,Juniper,以及Riverbed Technology;
點云(Point-cloud)解決方案供應商,包括云安全供應商,比如Zscaler,思科的Umbrella(以前叫做OpenDNS ),內容交付網(wǎng)絡供應商(比如Akamai,Limelight Networks,F(xiàn)astly以及Verizon Communications的Edgecast ,域名系統(tǒng)服務供應商,比如Oracle的DYN,NeuStar以及UltraDNS,以及云SD-WAN供應商;與
傳統(tǒng)公共云供應商,比如亞馬遜的Amazon Web Services,Alphabet 的Google Cloud Platform,微軟的Azure,以及阿里巴巴的阿里云。
前兩類是說得過去的;畢竟,Cloudflare從一開始的價值主張就是速度和安全性,所以當然發(fā)展到一定程度他們要跟網(wǎng)絡和安全廠商競爭。然而,最后一點才是吸引眼球的地方,就算到現(xiàn)在也是:Cloudflare表現(xiàn)出色的這個季度取得了1.38億美元的收入;而在同期,AWS一天就賺了1.5億美元。
要了解為什么Cloudflare會把公有云供應商視為競爭對手,先回過頭來理解一下為什么Cloudflare具有顛覆性是有幫助的;克里斯滕森在《創(chuàng)新者的窘境》中寫道:
但有時顛覆性技術的出現(xiàn)——至少在短期內,會導致產品性能降低。具有諷刺意味的是,本書研究的案例中,都是顛覆性技術導致了領先企業(yè)的失敗。顛覆性技術給市場帶來了與以往截然不同的價值主張。一般來說,顛覆技術產品的性能要低于主流市場的成熟產品,但它們擁有一些邊緣客戶(通常也是新客戶)所看重的其他特性?;陬嵏残约夹g的產品往往更便宜、更簡單、更小巧,而且使用起來更加方便。
那基本上就是Prince的價值主張:Cloudflare的CDN會更便宜(免費),更簡單(只需更改DNS服務器),更小巧(啟動只需5臺服務器),而且更方便(簡單到可笑的地步!)。
不過,對CloudFlare有利的,是在互聯(lián)網(wǎng)上最有效的優(yōu)勢:服務,就像十年前谷歌基于鏈接的排名系統(tǒng)一樣,用得越多,這套系統(tǒng)表現(xiàn)就越好。這是因為Cloudflare把自己的內容交付網(wǎng)絡跟DDoS保護放到一起用。后者對網(wǎng)站極具吸引力,這為Cloudflare提供了跟ISP合作的機會,因為后者十分重視遍布全球的如網(wǎng)店服務器的保護,而且至關重要的是,這為Cloudflare提供另一個機會,讓它在改進CDN能力的同時,還掌握了關于數(shù)據(jù)在全球是如何流動(或者改進服務)的越來越好的數(shù)據(jù)。
Cloudflare專注于免費提供的安全性,這也意味著它的CDN從一開始就建立在通用硬件的基礎上。來自其《招股說明書》:
為了達到跟硬件設備競爭所需的效率水平,我們需要發(fā)明一種新型的平臺。這種平臺需要在商品化硬件的基礎上開發(fā)。它的架構設計需要讓構成Cloudflare網(wǎng)絡的任何一座城市的任何服務器都可以運行我們的每一項服務。它還需要能夠靈活地轉移流量,從而在性能最好的地方服務我們最高級的付費客戶,同時用容量過剩的地方服務那些出錢更少,甚至根本不付錢的客戶。
慢慢地,這些通用機器被用作越來越多的其他服務,而不僅僅是CDN和DDoS保護。HHHypergrowth有篇綜述文章曾經(jīng)對Cloudflare開展的所有工作進行了精彩的概述,由于Cloudflare的產品組合實在是太過龐大,導致文章的篇幅之長達到令人生畏的地步。不過,Cloudflare Workers才是讓Cloudflare跟云計算的大型玩家掰手腕的產品。
自Disrupt大會成立的7年之后,Cloudflare推出了Workers。來自其介紹性的博客文章:
Cloudflare即將經(jīng)歷(與可編程CPU)類似的過渡。從最基本的層面來看,Cloudflare就是個可在全球117個位置(這個數(shù)字還在不斷增長)運行的HTTP緩存。HTTP標準為HTTP緩存定義了一套固定的功能集。當然,Cloudflare還可以做更多的事情,比方說提供DNS和SSL,保護你的站點免受攻擊,在源服務器之間實現(xiàn)負載均衡等等。
但是,這些都是固定的功能。如果你想用自定義的相似性算法進行負載均衡該怎么辦?如果標準的HTTP緩存規(guī)則不太合適,你需要一些自定義的邏輯來提高緩存命中率的話又,該怎么辦?如果你想為自己的應用編寫量身定做的WAF(Web應用防火墻)規(guī)則又該怎么辦?
你想自己寫代碼。
我們可以一直添加功能,但是用這種方式我們永遠也沒法覆蓋所有可能的用例。為此,我們換了一種做法,讓Cloudflare的邊緣網(wǎng)絡可編程。我們在全球117多個位置提供了自己的服務器——這些服務器怎么用可以由你去決定。
Workers剛推出的時候提供的功能極為有限;就提供了一點V8引擎的無狀態(tài)Javascript代碼,但盡可能接近用戶。2018年,Cloudflare添加了一個鍵值存儲,這使得Workers可以訪問高度分布式的最終一致性的數(shù)據(jù)存儲;2020年,該公司又推出了Workers Unbound,這一版極大地擴展了Workers的功能,還有Durable Objects,這讓它不僅能存儲數(shù)據(jù),而且還能存儲狀態(tài),這意味著真相的唯一來源。再次地,施加援手的還是Cloudflare的網(wǎng)絡:
在使用Durable Objects時,Cloudflare會自動確定每個對象駐留在哪個Cloudflare數(shù)據(jù)中心,而且可以根據(jù)需要在不同的位置之間透明地遷移對象。傳統(tǒng)的數(shù)據(jù)庫和有狀態(tài)的基礎設施往往需要你考慮放在哪個地理“區(qū)域”,從而確保將數(shù)據(jù)存儲在使用位置附近的地方。
需要考慮區(qū)域往往會成為一個不近人情的負擔,尤其是對于那些天生不具備地域性的應用而言。有了Durable Objects之后,在設計存儲模型的時候你就可以匹配應用的邏輯數(shù)據(jù)模型了。比方說,文檔編輯器可以為每份文檔建立一個對象,而聊天應用可以給每一場聊天創(chuàng)建一個對象。創(chuàng)建數(shù)百萬或數(shù)十億個對象都沒有問題,因為每個對象的開銷都是最小的。
Cloudflare提供了一個聊天應用的例子,里面的每一個單獨的對話都是一個對象,而且這個對象被移到了盡可能靠近參與者的地方;比方說,在美國聊天的兩個人會在美國數(shù)據(jù)中心使用一個Durable Object,而在歐洲的兩個人則會在歐洲的數(shù)據(jù)中心使用一個Durable Object。這會有一些額外的延遲,但相對于中心化的云提供商時延會更低。不過這是OK的,因為Worker的真正優(yōu)勢其實并不是Cloudflare所認為的那樣。
公有云的經(jīng)濟學很簡單:對于亞馬遜,微軟或谷歌而言,在全球范圍內建立和維護數(shù)據(jù)中心,然后把能力出租出去,要比那些數(shù)據(jù)中心不是自身核心能力的公司用小一點的規(guī)模去復制他們的做法更行得通。他們的東西實在是太有吸引力了,以至于我在《開始的終結》中把當前狀態(tài)貼上了這樣的標簽:
最后一點,我想說一下為什么云和移動設備(通常被認為是兩種不同的范式轉移)是緊密相連的。云意味著用戶可以從任何地方訪問應用程序和數(shù)據(jù),移動設備使得I/O層可以在任何地方使用。兩者的結合才使計算變得連續(xù)、完整。
值得注意的是,當前的環(huán)境似乎是所有這些變化的邏輯端點:從批處理到連續(xù)計算,從不同房間的終端到口袋里的電話,從磁帶驅動器到全球各地的數(shù)據(jù)中心。依據(jù)這種觀點來看,個人電腦/樓宇內服務器時代不過是在一個在某種范圍兩端之間的墊腳石。
盡管云無所不在的這種觀點對于最終用戶是正確的,但對于開發(fā)人員來說,故事卻要復雜一些。如果你想設置新實例,首先得選定一個區(qū)域。比方說,AWS在全球有25個區(qū):
AWS的數(shù)據(jù)中心節(jié)點
選擇地區(qū)后,你的實際應用在地理上就是被包含在那個地區(qū)之內了。從理論上來講,這種限制給Cloudflare Workers帶來了優(yōu)勢。Prince在一篇博客文章中寫道:
由于我們不太可能讓光跑得更快,所以讓任何開發(fā)者寫代碼,并讓代碼在我們的整個網(wǎng)絡里面跑的能力,意味著相對于傳統(tǒng)集中式的計算解決方案(即便是那些運行在“云端”的解決方案),我們始終都會具備性能上的優(yōu)勢。如果你必須為在哪里運行自己的應用選擇“可用區(qū)”,則相對于架設在類似Worker這樣(可以在Cloudflare的網(wǎng)絡所及地方運行)的平臺上的應用來說,你將始終處于性能上的劣勢。
不過,事實上,對于大多數(shù)應用來說,這種性能并不重要。比方說,Stratechery的播客服務在美國東部(俄亥俄州)運營,但對于生活中半個地球之遙的我來說,其實并沒有什么區(qū)別。對于這一點,Prince是承認的:
但是,讓我們現(xiàn)實一點吧。對網(wǎng)絡延遲幾百毫秒感到很敏感的應用只有有限的一些應用。這并不用說在現(xiàn)代主流無服務器平臺網(wǎng)絡的模式下,網(wǎng)絡時延已經(jīng)無關緊要了,而是說對性能有額外要求的應用屬于小眾……討論邊緣計算很多的人很快就會開始討論IoT和無人駕駛汽車。令人尷尬的是,當我們剛開始推出Workers平臺時,我自己就老這么做。
確實,對于幾乎所有的應用來說,公共云已經(jīng)足夠好,而且,經(jīng)濟學再次地會讓其他選擇變成一個壞主意。
今年早些時候,在1月6日之后,我寫了《Internet 3.0與(技術)歷史的開端》。在提出了我在《開始的終結》中說到的觀點之后,我指出:
就互聯(lián)網(wǎng)而言,我們已經(jīng)處在技術發(fā)展的邏輯端點。但是,之所以走不下去不是因為人性,而是主權的問題,而少數(shù)美國巨頭可能的優(yōu)越意識的再度釋放,有可能會被全世界的人們、公司以及國家所抵制。
只要經(jīng)濟才是最重要的,我們就永遠只會有中心化的云提供商。需要時延最小的“有限應用”可能需要花更多錢才能在上面的地圖當中的那些藍色的AWS邊緣曾提供商上運行。不過,那篇文章的重點是,經(jīng)濟學并不是唯一重要的事情:不斷發(fā)展的另一面會更加重要。
Prince也有同樣的認識。我一直在引用Cloudflare的那篇博客文章《邊緣計算的機會:不像你想象的那樣》,而Prince所強調的主要好處也跟那另一面息息相關:
在云計算平臺(包括無服務器平臺)上運行的大多數(shù)計算資源都是由開發(fā)者創(chuàng)建的。而這些開發(fā)者都是在合規(guī)性是基本要求的公司工作。而且,到目前為止,這意味著要確保平臺遵循政府法規(guī)(比如歐洲的隱私準則GDPR)或取得確保自己遵循行業(yè)法規(guī)的認證,比如PCI DSS(如果接受信用卡就需要),F(xiàn)edRamp(美國政府采購要求),ISO27001(安全風險管理),SOC 1/2/3(安全,機密性和可用性控制)等等。
但是,新的迫在眉睫的監(jiān)管要求風險令傳統(tǒng)的云計算解決方案無法充分滿足這些要求。在監(jiān)管方面各國都在不斷加碼,以確保自己的法律適用于公民的個人數(shù)據(jù)。怎么才能確保你遵守這些法律?辦法之一是是完全在本國境內存儲和處理本國公民的數(shù)據(jù)。
歐盟,印度和巴西這些重要市場均已或正在考慮制定對公民的個人數(shù)據(jù)享有法律主權的監(jiān)管措施。中國已經(jīng)對多種類型的數(shù)據(jù)實施了數(shù)據(jù)本地化監(jiān)管。不管你是不是認為似乎數(shù)據(jù)本地化存儲和處理的監(jiān)管要求是個好主意(我個人覺得可能會扼殺創(chuàng)新),但我的感覺是,這股勢頭已經(jīng)勢不可擋。而且,一旦有幾個國家開始要求對數(shù)據(jù)擁有主權,就很難阻止幾乎所有其他國家效仿。
對于亞馬遜,微軟和谷歌而言,這個潛在的現(xiàn)實給他們提出了一個大問題:從他們的角度來看,云是一個整體,無論從管理,接口到購買來看都是這樣。而開發(fā)者個體本來就在自己的地區(qū)的。是的,所有這三家公司都保證放在一個區(qū)域的數(shù)據(jù)不會被傳到其他地方,但這會是開發(fā)的噩夢:你得維護不同的app,把不同的數(shù)據(jù)放在不同的區(qū)域。
與此同時,Cloudflare可以利用Durable Objects的無縫傳輸能力把數(shù)據(jù)遷移至最近的數(shù)據(jù)中心,從而在比較細顆粒度的層面遵循本地的合規(guī)性數(shù)據(jù)主權法律;來自Cloudflare 關于Durable Objects管轄權限制的公告:
目前仍為受限beta版的Durable Objects已經(jīng)可以讓客戶輕松管理Cloudflare Workers上的狀態(tài),而不必關心基礎設施的配置。今天,我們發(fā)布Durable Objects的管轄權限制,以確保Durable Objects僅在給定地理區(qū)域內存儲和處理數(shù)據(jù)。管轄權限制讓開發(fā)人員可以輕松開發(fā)無服務器,有狀態(tài)的應用,讓這些應用不僅能符合當今的監(jiān)管要求,而且當新的監(jiān)管被加入進來時也能處理新的策略并對舊的策略進行更新…
通過在對象級別來設置限制,可以輕松確保合規(guī)性,同時而又不會犧牲開發(fā)人員的生產力。跑Durable Objects的應用只需確定給定對象應遵循的管轄權規(guī)則,并在創(chuàng)建時設置相應的規(guī)則即可。跨云提供商的多個區(qū)域去跑多個基礎設施集群來保持合規(guī)性的日子以一去不復返——Durable Objects既可以全局訪問,也可以在沒有基礎設施開銷的情況下對狀態(tài)進行分區(qū)。
Durable Objects本身并不會殺死公有云。但是,它們所代表的是一種全新的基礎設施搭建方式——從邊緣進入,而不是從數(shù)據(jù)中心出去,完美地融入到一個政治比經(jīng)濟更重要的世界。
其實我已經(jīng)介紹過Cloudflare的差異化做法,盡管是順帶且偶然提到的。今年三月的時候,我在寫《基礎設施的管理》時曾采訪過Prince。令我印象比較深刻的是,他對互聯(lián)網(wǎng)碎片化的反應跟微軟總裁Brad Smith以及Google Cloud CEO Thomas Kurian的看法的差異:
Smith:
我認為,這反映了一個事實,那就是,如果你是一家全球性的技術公司的話,通常在大多數(shù)情況下,跟在不同國家/地區(qū)采用不同的做法和標準相比,按照一種全球性的模式運營要高效得多,在法律上也要合規(guī)得多,尤其是當你會遇到如此復雜的事情的時候。內容管理員很難根據(jù)一個標準去決定每一條內容,但是你可以試著說:“好吧,我們已經(jīng)評估了這部分的內容,它可以留在美國,但不可以放在法國?!?然后,你追加這些額外的管理復雜性的層,這既增加了成本,又增加了違規(guī)風險,進而產生信譽風險。
Kurian:
到目前為止,我們已經(jīng)在努力找到一些共同點,而現(xiàn)實是,在全球范圍內去設計在不同國家/地區(qū)有不同表現(xiàn)的軟件非常困難。非常非常困難。比方說,從我們運營的規(guī)模以及對隱私的要求的角度來看,監(jiān)控必須由軟件和系統(tǒng)來完成。你不能以為強制執(zhí)行ToS和AUP就是讓人去監(jiān)控所有的內容,我的意思是我們的客戶群太龐大了。因此,最困難的事情可能是,比方說虛擬機在加拿大是這么做的,而在美國又是那么做的,然后還有第三種方式……我的意思是,這太復雜了。
Prince:
在世界各地,政府都有其政治合法性,而且當然比我的要強得多。重要的是,我們必須遵守運營所在地每個司法管轄區(qū)的法律。我們應該幫助我們的客戶遵守我們運營所在的每個司法管轄區(qū)的法律……德國可以為德國設定他們想要的任何規(guī)則,但這必須是德國內部的規(guī)則。
而且這個問題你是可以解決的。你可以分別按照每個國家/地區(qū)進行管理。對此你覺得滿意嗎?
當然。我的意思是,對我們來說,這很容易。然后,我們可以根據(jù)我們所做的事情向客戶提供該服務。但是我想,應該說,德國的規(guī)則不會超出德國的范疇,法國的規(guī)則不會超出法國的范疇,而且肯定也要有一些底線的。
沒錯。但是,鑒于互聯(lián)網(wǎng)的性質,這不是全部的問題所在嗎?因為,德國境內的任何人都可以訪問德國境外的任何網(wǎng)站。
過去是這樣的,但我不確定將來還會不會是這樣。因為,在所有這些比特的下面還有很多的原子,這里有個ISP,或者那里有個網(wǎng)絡提供商在控制著它的流動方式,所以我認為,我們必須遵守全世界各個地方的法律,然后我們必須讓有關方面對透明度,一致性,問責制負責。所以,不能只是說什么東西從互聯(lián)網(wǎng)上消失了,但你可以說是鑒于德國的法律,它已經(jīng)從互聯(lián)網(wǎng)上消失了。如果你不喜歡的話,那就是你要找的人。如果我們能夠堅持這一點的話,我們就可以讓每個國家在內部擁有自己的規(guī)則,我認為這就是讓我們避免滑向最小公約數(shù)的原因。
這些話不是完全可比較,但微軟和谷歌(也許還包括亞馬遜)非常擔心這個世界會變成這樣——也就是各個國家/地區(qū)都制定了有關什么東西可以放上互聯(lián)網(wǎng)(或者甚至可以看到什么)的適用法律有它的道理。因為他們的服務的基礎是來自集中化的出色的經(jīng)濟學。而另一方面,Cloudflare已經(jīng)在邊緣層進行所有的計算——數(shù)據(jù)主權規(guī)則只是一個變量。這很“簡單”。
這就是Cloudflare所在的這個充滿隱喻性的平面(邊緣層)的發(fā)展方向如此引人入勝的原因:Cloudflare當前可達的企業(yè)安全和網(wǎng)絡市場意義重大,特別是因為遠程辦公已經(jīng)暴露出傳統(tǒng)方法的問題;但是,它的擁有巨大上行空間的目的地是3.0版的互聯(lián)網(wǎng),以及因此需要一種能夠繞過障礙的服務——這種障礙不是核戰(zhàn)爭,而是主權政府。