一個產品經理眼中的云計算:前生今世和未來
最近發了太多JobDeer的廣告了,感覺不寫點干貨有些對不起我的粉絲們。于是這次寫寫我還算熟悉的領域——云計算。
作為新浪云的前產品經理,我不想從技術角度去講云了,這次我從產品的視角來管中窺豹吧。當然,水平有限,錯誤難免,所以請各位看官批判的讀下去哈。
二
如果要我來劃云計算的里程碑,我會劃出兩個點。
第一個點是Xen等虛擬化技術的出現,第二個點是Docker等容器興起。
在虛擬化技術出現之前,我們都在使用物理機。記得08年創業時,我一個人扛著一臺1U托管進了順義電信,然后就每隔一段時間給機房打電話,請師傅幫忙按電源重啟服務器。
當有了虛擬化以后,其實只發生了一個小改變:一臺物理機可以被分割成許多臺虛擬機了。
這件事情有什么意義呢?
至少有兩個方面的意義。
首先是利用率。
每臺物理機只能有一個操作系統,而在一個操作系統里邊,各種業務可能互相干擾。所以我們一般會把機器按業務分組,來創建集群。對于大型項目來說,集群的利用率是不錯的。但是對于小項目,這種方式利用率就很差了,因為一個業務節點最少需要一臺獨立的機器。
有了虛擬機,就不一樣了。一臺機器可以虛擬化為很多個操作系統,分配給很多不同業務和不同的人。這樣利用率就上來。
然后是可控性。
在虛擬機之前,有很多控制是物理的,就像我前邊提到的,重啟是需要按電源的。但是虛擬化以后,重啟就變成軟件可控的東西了(當然,前提是掛掉的不是宿主機)。
可以用軟件或者API接口隨時啟動、關閉虛擬機說起來是件小事,但這后來卻演變成了可以自動調度的彈性云服務—— 當你的應用壓力大時,云平臺可以自動幫你創建新的虛擬機;當應用壓力小時,它可以幫你關幾臺,省電省錢。自動化的能量就是這么大。
以 這部分服務為基礎,云計算的最基礎的一個層次,IaaS(基礎設施即服務)出現了。之后虛擬化技術本身開始日益成熟、很多服務器開始在硬件級別支持虛擬 化;再后來,以操作系統為粒度的隔離方案不斷加強,保證在同一臺物理機上的虛擬機用戶不會因為寫磁盤太猛、用網絡過度等情況影響別人。
隔離技術可以說是云計算的核心技術點之一,正是隔離技術不斷的進步,使云的隔離粒度一層層加深,從而推動了云計算產業的一級級迭代更新。
三
接下來,這幫用慣了虛擬機的程序員們開始不滿足了。為什么我寫20個PHP項目,需要我裝20個操作系統?為什么不能這20個操作系統共享一個Web運行環境,而20個PHP項目之間彼此隔離就好了呢。這樣我就只需要上傳PHP代碼就好了。
于是我們對云計算的隔離粒度提出了更高的要求:隔離能不能從操作系統層次進化到應用層次。
PaaS(平臺即服務)出現了。
由于應用本身對于平臺有依賴,所以我們一般會選擇將通用功能做成平臺共享的,而將應用代碼和數據隔離。
為了實現這個隔離,我們需要制造沙箱。沙箱必須足夠安全,除了能合理的分配各個應用消耗的資源外,它還要保證兩個用戶之間絕對不能非授權訪問到彼此的數據。
不同語言用到的沙箱技術不同,所以這個時代的PaaS多是可語言相關的。
比如GAE支持Java和Python、HeroKu支持Ruby。用得最多的PHP語言卻沒有可用的PaaS,所以新浪做了國內,大概也是全球第一個支持PHP的大規模公有PaaS平臺,那就是SinaAppEngine。
我喜歡把這些PaaS稱為專用PaaS。
專用PaaS有突出的優點,也有蠻致命的弱點。
優點是它可以非常有效的降低資源消耗,并在開發者遵守約定的前提下極大的提升開發效率。由于PaaS平臺的管理者可以統一管理絕大部分資源,所以它可以實現去運維化。
去運維化是PaaS和IaaS最大的區別,這個區別讓PaaS平臺有了和IaaS平臺PK的資本。
以我們公司為例,如果將JobDeer放置在IaaS上,我們就需要維護完整的操作系統。
日志是否超過4個G了,Apache和Nginx的升級布丁是否打好了,SSH是否被人惡意掃描了……
種種煩心事都隨之而來,最后我們就只能去雇傭一個系統管理員來做這一切。對于一個創業公司,這是至少每年10萬的投入。
于是我們選擇了將JobDeer放置在SAE上,從6月到現在,我們的花費不過幾萬云豆——等于幾百塊錢,這里邊沒有因為運維花一分錢。
那么為什么這么好的模式,沒有把所有生意都從IaaS服務商那里搶過來呢?
因 為專用PaaS有一個挺大的弱點,就是沙箱技術的不完美,大部分的PaaS平臺都要求應用程序本身針對平臺進行相應的修改才可以運行。比如在SAE上,代 碼目錄是不可寫的,文件上傳的路徑是SAE_TMP。這些看似微小細節的不兼容,卻導致了大量的現有項目不能直接運行在SAE上,而要修改成千上萬的項目 并讓其在最新版本中支持PaaS平臺,是一件費時費力的事情。
正是因為這點,專有PaaS才沒有成就其霸業。不光是SAE,GAE也沒能在競爭中PK過AWS。其實我覺得挺遺憾的,我內心里還是相信有機會的。
四
看到這里你一定會問,那我們能不能造出一個完美的容器,讓其可以完全兼容標準應用環境,這樣這些應用就不用修改就可以直接運行了呢?
我對這個問題也很好奇,而且做出過努力。這個努力就是全兼容沙箱(它被應用在新浪云商店上),這是新浪云在全兼容容器上的一個嘗試。但不得不承認,我當時的想法還是局限了一些,我們只做了對PHP在單機級別的全兼容。
一方面是從專用PaaS平臺帶過來的慣性思維,覺得這種容器也應該是和語言相關的;另一方面在技術投入上也存在一些制約因素。
往后過了一段時間,系統級別的容器技術成熟了。Linux container(簡稱LXC)開始應用在各種場景。于是我們規劃了沙箱2.0,完全基于LXC,可以兼容各種語言,但SAE已經騰不出來人開發了。
再晚一點時間,Docker出現,它不依賴于語言,可以輕松的把機器隔離到進程粒度——于是泛PaaS時代到來了。
進程粒度的隔離意味著什么?
本質上來講,它不過是一個性價比更好的虛擬機而已。但是當虛擬化到達進程級別,「虛擬機」就廉價化了。你會為了一個Apache起一個虛擬機么?你會為了一個MySQL又起一個虛擬機么?不會的。
但你會為Apache起一個Docker,為MySQL起一個Docker。因為它們不過是兩個進程而已。分成不同的進程,可以更好的對架構去耦合,當Apache升級時,MySQL不會受影響。
但是,泛PaaS未必任何地方都比專用PaaS強,由于沒有了專用PaaS里邊的平臺層,運維成本又被重新引入了進來。現在你有一堆的Docker要管理了,不比一坨虛擬機輕松多少。
所以泛PaaS要發展,必然要出現一個在Docker容器外層對其進行統一管理的平臺。因為借助這個平臺,我們才能重新去運維化。
在國外,CoreOS就在這個方向上一路飛奔。它提供管理工具,可以按配置批量創建容器,又將各種Docker容器服務化,提供了服務發現機制。這些都是為了把碎片化的Docker容器重新拼接成一個進程粒度的、分布式的、免運維的平臺。
在國內,前SAE總監王利俊同學創辦的NiceScale.com 也是為Docker去運維化服務的,他們采用了更獨特的方式,目前產品還沒正式發布,我就不劇透了。
可以看到,隔離技術的不斷進步,就如同智子在不同維度的展開,一層層的推動了云計算往縱深發展。如果用一幅圖來表示的話,大概就是這個樣子:
云計算的進化
五
當隔離層次進入應用層后,會發生一個質的飛躍。這個飛躍我叫它分布式SaaS(軟件即服務)。
先來說說原來的集中式SaaS。
其實SaaS雖然是云計算最上邊的層次,但其出現卻非常早。這是因為它其實和虛擬化沒有什么關系,也并不依賴于IaaS平臺。
它 指的是人類通過網絡(特別的是瀏覽器)直接消費服務,但如果按這個標準,網站就是最早的SaaS —— 我們通過瀏覽器消費資訊、社交等服務。但其實我們并不把網站叫做SaaS,而是把原來C/S結構的產品,比如CRM、ERP的B/S形態稱為SaaS。 (Salesforce:怪我咯)
集中式SaaS有一個非常大的問題,就是它的數據安全。
iCloud最近被攻擊,你們都看到明星的艷照了。集中式SaaS出問題時,使用SaaS服務的所有公司都沒法工作。這就是中心化的代價。
在我看來,互聯網的發展都是以去中心化為方向的,即使是像微博、非死book這種原本封閉的網絡,也通過開放平臺,在一定程度上實現了去中心化。
所以我相信,一定會有比集中式SaaS更好的模式存在。
六
我們回過頭來看隔離粒度。
當隔離粒度從物理機器進化到操作系統層次時,催生了IaaS業務,實現了去機器化,我們不用再關注機器本身。
當隔離粒度從操作系統進化到進程層次時,催生了PaaS業務,實現了去運維化,我們不用再關注操作系統,可以專注業務本身。
所以我花了幾個月時間去思考,下一個粒度是什么。但當我往下挖了幾鏟子,「哐」的一聲,發現旁邊的門打開了。
當隔離粒度達到進程級別,一類特殊的進程開始催生新的業務 —— 這類進程叫做云APP。
APP層隔離和進程層隔離在技術上大同小異,但是他們的受眾發生了巨變。
一個Apache進程,只有程序員能消費;一個WordPress APP,不懂技術的人也能輕松享用。
所以,當隔離粒度專注于云APP時,將實現去技術化,不懂技術的人群將可以第一次享受到完全自主可控的個人云。
分布式SaaS來了,云APP 2C的時代來了。
這 撬起了個人云APP這個巨大市場的一角。想想手機這個市場,App store出現之前,我們只能被動的去使用手機上僅有的那一點點應用,沒有人會為了手機上的應用花錢;而當App store將這個手機應用市場做起來,將其透過手機推給每一個普通人時,一個幾百億的市場出來了。
云App也是一樣的。以前我們只能被動的接收各個網站、App提供的云端同步功能,將自己的隱私數據保存在一些有流氓前科的公司服務器上(這對不懂技術的人群來說,其實是沒有選擇的)。
但是如果他們可以選擇了呢?
這就是Docker為什么要做Hub,Docker是云APP的封裝技術,Hub就是云App的分發器和渠道通路、是云計算中的App Store、是云APP商業化的關鍵節點。
先是提供技術中間件級別的分發,覆蓋企業和開發者;再是提供個人云APP級別的分發,讓SaaS進入從來沒覆蓋過的個人市場。
順便說一句,從這里我學到的是,技術進步的方向是由需求帶動的,而不光是技術本身。如果沒有一個強需求來拉動,技術進步本身就會變成學術論文——就像一枚種子,只能靜靜的等待屬于它的時代。不幸的是這個時代經常還沒到來就已經過去了。
七
上一節說得很抽象,我說個現實的例子你們感受下。
還是從iCloud的艷照說起吧(我是有多在意艷照,笑),當分布式SaaS到來后,我們不會將自己的私密照片同步到iCloud的云,而是去云APP商店挑選一款私人數據同步軟件,比如OwnCloud。
只需要點一下鼠標,將其加入購物車,然后輸入我們想要的網址,支付購買。30秒不到,地球上就有了一個專屬于你的私有云,別人連它的網址都不知道,更別說密謀攻擊它了。
然后網站會顯示一個二維碼,掃描二維碼后,你的手機上就有了一個APP,可以隨時消費來自你私人云端的數據。
個人再也不用擔心隱私(其實是概率小了非常多)、公司再也不用擔心數據安全(其實是掌控了數據所有權)。
那么,誰會去開發這些專門使用于私人云的應用呢?
每一個成功的軟件產品背后,都有一個和它功能相當,而體驗略差的開源產品(笑)。這是因為大部分開源軟件在和商業軟件競爭中不掙錢導致的二期投入不足。
一旦分布式SaaS建立起來,開源開發者可以從平臺售賣的云空間利益中分成,我也相信,有越來越多的優秀開源產品,可以直接對消費者收費。(即使是開源的,不懂技術的消費者也不愿意自己去手工搭建環境 —— 他們更愿意付錢解決問題,這是程序員們難以理解的。)
開源軟件如果能掙到錢,掙到大錢,那么那些以控制和中心化為生的商業軟件在它們面前將會黯然失色。
這是一個多么燦爛的未來。
不管你信不信,我的前同事,新浪云的運營經理王偉平同學信了。于是他上周從新浪離職,創建了基于Docker的即點即用分布式SaaS平臺—— diancloud.com 。雖然不知道這個月底能不能上線,但據說已經可以在網站上申請邀請碼了。
八
再來說說其他層次。
IaaS這個層次正猛烈分化,一部分在快速下沉,另一部分快速上升。
所謂下沉,是指原來做機房的、做通信的公司都在快速進入這個市場。而隨著IaaS平臺管理軟件(比如openStack)的日益成熟,這個層次的技術含量將越來越小,工程強度和日常運維層次的要求反而會越來越高。
最后,會催生一個平行于銀行系統、交通系統、通信系統同等體量的云系統。會不會被國有化難說,但必然會進入國家控制范圍。
所謂上升,是指原來依托虛擬機來做彈性擴展等業務的平臺,會迅速轉移到進程級隔離的技術(比如Docker)上來。這將從根本上改變軟件開發、軟件測試、軟件分發、以及軟件銷售的流程和格局。
如果還覺得抽象我說幾個比較接近的詞:Github、DevOPS、分布式SaaS。
九
就寫到這里。這篇文章里邊有很多的預測和個人觀點,不一定是對的,但都是我思考過的。我盡量把得出結論的原因和邏輯表述出來了,大家在這個基礎上去自行判斷吧。當一個嶄新的云時代夾雜著大塊美金迎面砸來時,有人拋個磚總是好事,對吧。
私信發送DY可以訂閱我的微博,不過也不知道下次寫長文時哪天了……
如果您要轉載本文,請保留以下聲明:
本文作者: @Easy ,國內首家互聯網人才拍賣網站JobDeer.com創始人,曾任新浪云產品經理。
原文首發于GET新知社區:http://get.jobdeer.com/706.get