亞馬遜AWS、微軟Azure、阿里Aliyun組成的3A團隊連續多季度保持高速增長。AWS通過光環新網實現商用,IBM Bluemix則由世紀互聯提供運營,國際云服務商陸續來了。Openstack發布Newton版本,看上去就沒有不能支持的東西,私有云的春天真的來了嗎?Docker紅得發紫,與之對應的DevOps和NoOps持續高溫。但是對于不少企業尤其是傳統企業,云仍在天邊,對于云仍感覺云里霧里。上云還是不上云,上什么云,這是個問題。我們試著用最通俗的比喻,理清云服務中最基本的那些事兒。
什么是云?
先從一段對話開始。
張三:我們公司的資料不讓存放到個人電腦上,一般都存到云上。
李四:別逗了,你們單位就二十幾個人,兩臺服務器,沒有虛擬化也沒有分布式,能叫云?
張三:那怎么了?幾百塊錢的西數NAS都叫云呢。
張三大概是個普通人,李四是個技術宅,對話也反映出不同人眼中不同的云。那究竟什么是云呢?歷史上已經有不下于一百種的定義,影響力較大的是NIST(美國國家標準與技術研究院)的定義:云計算是一種模型,它可以實現隨時隨地、便捷地、隨需應變地從可配置計算資源共享池中獲取所需的資源(例如網絡、服務器、存儲、應用及服務),資源能夠快速供應并釋放,使管理資源的工作量和與服務提供商的交互減小到最低限度。顯然,對一般的用戶來說,這并不好理解,翻譯成人話大概是:讓計算、存儲、網絡、數據、算法、應用等軟硬件資源像電一樣,隨時隨地、即插即用。這種定義,比較像張三眼中的云,我們稱其為廣義云計算。
技術宅李四眼中的云是指一整套虛擬化和分布式的技術體系,近幾年以去IOE(即IBM、Oracle和EMC。為嘛去人家?因為太貴!不過IBM、Oracle和EMC的母公司Dell都在積極擁抱云計算了)的低成本化為典型特點。這種,我們稱其為狹義云計算。首先,狹義云計算過度關注底層,而忽略掉了SaaS(軟件即服務,后面還會講)和PaaS(平臺即服務);其次,狹義云計算過度關注具體技術,而忽略掉服務模式、商業模式等,長期看容易低估云計算的社會推動作用。當然,李四這么說也有一定道理,就目前來說,大部分云的底層架構確實是通過虛擬化和分布式來實現的,畢竟節省成本、容易管理,還支撐了分布式大數據處理。
什么是虛擬化和分布式?
一個村,有很多人家。張三家只有一個女兒,糧食總是吃不完,相當于資源閑置。李四家有五個兒子,糧食總是不夠用,相當于資源緊缺。這還不算,王五家時不時來一大堆客人,糧食夠不夠用誰也說不準,相當于計算波動大。于是,張三家添了幾雙筷子幾個碗,可以讓別人來吃,相當于一臺物理機虛擬出更多臺虛機。誰家有多少糧食、幾張桌子、幾雙筷子、幾個碗,村長記在自己的小本本上,相當于統一調度,形成了資源池。李四和王五家不夠吃的時候,拿小板凳去張三家,相當于分布式。有同學就問了,張三豈不是虧了?別入戲太深,張三只是一臺服務器!還有同學說,我為嘛嗅到了共產主義的味道?沒錯,虛擬化和分布式就是要在計算、存儲和網絡上實現共產主義。
虛擬化和分布式在共同解決一個問題,就是物理資源重新配置形成為邏輯資源(在IT領域稱為解耦,也就是你用的東西跟實際物理的東西是兩碼事,一如李四和王五的午飯其實是在張三家解決的)。其中虛擬化做的是造一個資源池,而分布式做的是用一個資源池。
虛擬化包括計算虛擬化、網絡虛擬化和存儲虛擬化。計算虛擬化通常做的是一虛多,即一臺物理機虛擬出多臺虛擬機,以“榨干”實際的物理資源,其包括全虛擬化、超虛擬化、硬件輔助虛擬化、半虛擬化和操作系統虛擬化。類似于計算虛擬化,網絡虛擬化同樣解決的是網絡資源占用率不高、手動配置安全策略過于麻煩的問題,采用的思路同樣是把物理的網絡資源抽象成一個資源池,然后動態獲取,網絡虛擬化目前有控制轉發分離、控制面開放、虛擬邏輯網絡和網絡功能虛擬化等不同的思想路線。存儲虛擬化通常做的是多虛一,除了解決彈性、擴展問題外,還解決備份的問題。
公有云、私有云、混合云和社區云是什么東東?
張三、李四、王五住一棟樓,樓下一個大規模的飯店。張三一直在家做飯,這是私有云,廚房是自建機房。李四一直在飯店吃,這是公有云,飯店是云數據中心。王五牛叉,在飯店有個固定包間,包間不對外人開放,這是托管型私有云(有的廠商將其定義為專有云),包間是云數據中心中的托管服務器。張三家有天來了十多個客人,這是業務突增。家里裝不開,要去飯店,這是私有云轉公有云。張三媽媽省吃儉用,對張三說,你們去吧,我和你爸在家吃,對張三家來說這是混合云。如果飯店僅對某個特定人群比如學生開放,這就相當于社區云。當然,舉例不十分恰當,畢竟飯還是買的,而云是租的,此點切記。
私有云是為某個特定用戶/機構建立的,只能實現小范圍內的資源優化,因此并不完全符合云的本質——社會分工,所以Openstack等開源軟件帶來的私有云繁榮可能只是暫時的,會有越來越多的客戶發現廉價的硬件和免費的軟件并不是打造私有云的充分條件,精細的管理、7×24運維所耗去的總成本(TOC)不比公有云低,而且隨著公有云廠商運營能力的進步,這種趨勢會越來越明顯。托管型私有云在一定程度上實現了社會分工,但是仍無法解決大規模范圍內物理資源利用效率的問題。
公有云是為大眾建的,所有入駐用戶都稱租戶,不僅同時有很多租戶,而且一個租戶離開,其資源可以馬上釋放給下一個租戶,一如飯店里一桌顧客走了馬上迎來下一桌顧客。公有云是最徹底的社會分工,能夠在大范圍內實現資源優化,因此,不管道路如何曲折,前途總是光明的。當然公有云尤其是底層公有云構建,不是一般人能玩的了的,就像開個三五桌的飯店誰都能行,開個三五萬桌的飯店就要看資金和本事了。很多客戶擔心公有云的安全問題,敏感行業、大型客戶可以考慮,但一般的中小型客戶,不管是數據泄露的風險,還是停止服務的風險,公有云都遠遠小于自己架設機房。
社區云是介于公有、私有之間的一個形式,每個客戶自身都不大,但自身又處于敏感行業,上公有云在政策和管理上都有限制和風險,所以就多家聯合做一個云平臺。
混合云是以上幾種的任意混合,這種混合可以是計算的、存儲的,也可以兩者兼而有之。在公有云尚不完全成熟、而私有云存在運維難、部署實踐長、動態擴展難的現階段,混合云是一種較為理想的平滑過渡方式,短時間內的市場占比將會大幅上升。并且,不混合是相對的,混合是絕對的。在未來,即使不是自家的私有云和公有云做混合,也需要內部的數據與服務與外部的數據與服務進行不斷的調用(PaaS級混合)。并且還有可能,一個大型客戶把業務放在不同的公有云上,相當于把雞蛋放在不同籃子里,不同籃子里的雞蛋自然需要統一管理,這也算廣義的混合。
Iaas、PaaS和SaaS又是什么東東?
IaaS,Infrastructure as a Service,基礎設施即服務;PaaS,Platform as a Service,平臺即服務;SaaS,Software as a Service,軟件即服務。還是不太好理解?沒關系,張三李四王五登場。張三賣小麥,相當于IaaS;李四賣面粉,相當于PaaS;王五賣饅頭,相當于SaaS。張三覺得賣小麥不掙錢且不能打品牌,向下游延伸,也賣起了面粉,相當于IaaS企業也逐漸做PaaS業務;王五饅頭賣得好,一天幾萬個,面粉需求量非常大,不希望被李四控制,也做起了面粉,相當于SaaS企業做PaaS,所以IaaS、PaaS和SaaS只是分析師和投資人津津樂道的,從業者并不關注,天下熙熙,皆為利來,啥賺錢搞啥。張三賣面粉后,與李四就形成了競爭關系,但是李四還經常從自己這里買小麥,相當于又有合作,這種既競爭又合作的關系就叫竟合。趙六嘴叼,饅頭滿足不了,非自己包餃子吃,直接從張三那里買小麥或李四那里買面粉,相當于直接利用PaaS平臺做軟件或訂制SaaS,這種嘴叼的一般都是土豪,對應的就是大客戶。有沒有發現,越是在城市里,越是發達,種小麥的、買小麥的、買面粉的就越少,買饅頭的越多?那就對了,這是社會分工的結果。而云計算同樣會向著高度分工的方向進化。還有同學問,存儲到底算是哪一層呢?這就相當于你覺得能灌溉能和面還能直接喝的水是哪一層呢?自然是出現在不同場景時對應不同層:常說的塊存儲、對象存儲一般是指IaaS層,而網盤一般是指SaaS層。
IaaS提供的一般是通用計算、存儲和網絡三大基礎資源,前面提到的虛擬化、分布式等大多集中在本層,少量“流亡”于PaaS層。一般認為,IaaS始于亞馬遜的EC2和S3兩款產品。近兩年,我們說的云計算快速落地,其實主要指IaaS的迅速落地,因為原來的公有云確實不穩定,而客戶也都在觀望。當然,有IaaS公司提出自己是“企業級IaaS”,這就有點噱頭了,試問,哪個IaaS不是沖著企業級這一目標去的?給開發者玩兒的嗎?
PaaS定義比較復雜,早年提供的是部署了數據庫和開發環境的平臺,被稱為XAE(X:企業名首字母;AE:Application engine),XAE常用于個人建站,商用程度并不高,在中國尤其如此,后來要么轉型要么解體了;后來PaaS轉為提供某種細分能力,如圖像識別、語音識別、推送、通信等,常以API或SDK進行交付;近兩年Docker風生水起,成為PaaS新秀。此時回頭看原來PaaS的各種定義,都不太恰當了,因此比較準確的描述應是:PaaS提供除計算、存儲和網絡三大基礎資源之外的其他能力(如通用開發能力,細分能力,業務交付能力),但并不對終端用戶提供成熟產品。
SaaS涵蓋的就廣了,郵箱是、網盤是、幾乎常見的網站都是!但一般所謂的SaaS是指:具有一定復雜度的,通常應該在C/S架構下主要通過C端完成的軟件服務,在B/S架構下完成了。當然這個復雜度,在不同的時期有不同的定義,十幾年前,郵箱可能都算復雜了,而現在隨著HTML5技術的成熟,大部分的Office操作都可以在瀏覽器完成。當然,放企業級市場里,SaaS比較好界定,指以云的方式取代了的原來企業軟件系統的服務。SaaS始于上世紀九十年代末Salesforce等公司,隨著移動互聯網和HTML5的發展而蓬勃發展,強調的是瘦終端。但是,到底多瘦才算瘦,各種應用不再用APP而以微信小程序的形式出現算瘦嗎?或許,SaaS的終極進化是純“裸機”,也就是“桌面云”,當然這只是一種理想,因為不僅關乎軟硬件技術,還關乎用戶習慣。須知,到現在還有不少用戶喜歡把電影放到移動硬盤里,抽屜里一塞,那感覺,踏實!
SaaS最接近于終端用戶,是一個巨大的市場。但是,SaaS是對軟件開發水平和服務水平的綜合考驗,拼得往往不僅是技術本身,還包括對用戶的理解、以及設計水平和創意。如果原來就是賣不出去的軟件,沒有任何改進包裝一下放到云上改為服務也不會有人買單,原來最起碼還不用對宕機這種事情負責呢,放云上只是增加了SaaS服務商自身的風險。所以,SaaS絕不是單機軟件到云上的簡單遷移,而是自始至終都應貫穿服務的思想和云的思想,比如多屏同步、多人協同等。也所以,我們雖然看好整體市場,但是并不看好很多SaaS領域一堆堆的無價值企業,資本寒冬,最先倒下的往往是他們。
云計算有什么價值?
成本更低、運維成本更低、服務更好、彈性擴展、部署更快、不用采購硬件,云計算的好處總能說出一大堆。但,這些點往往只反映云計算的一個側面,有的還不完全正確:比如成本低,客戶會發現,如果租用高性能云主機且保證99.99%的可用服務時,成本往往并不比自建機房低,在需要的主機(物理機或虛機)量比較大時,尤其明顯。
其實,云計算的本質就是社會分工,社會分工所產生的價值云計算都能產生,比如規模化、精細化所產生的成本降低與效率提高等;而社會分工中產生的問題,云計算也都會面對,比如節省下來的成本到底是買家受益還是賣家受益,再比如壟斷。還是拿蒸饅頭舉例子,在城市中,大多數家庭不自己蒸饅頭而去饅頭房買,這是社會分工,節省了社會總體成本,但是買饅頭并不比自己蒸更便宜,說明節省了的成本進入了賣家而非買家的腰包。再比如,當一個城市只剩一家饅頭房而大多數家庭又喪失了蒸饅頭的能力時,饅頭房便有可能提價,這就是壟斷。
理解了云計算是一次社會分工的本質,便不會過分夸大其優點,更不會對之回避認為其只不過是一時風潮。從狩獵到農耕、再到工業社會,從一只羊換兩把斧子到貝殼、金屬貨幣、紙幣、虛擬貨幣,從生產方式到價值交換方式,你會發現,人們所做的一切都是在朝著社會分工或促進社會分工的方向發展。
所以,對于云,逃也沒用,躲也沒用,時代總會來臨。果斷擁抱,理性選擇,踏實落地,即是未來。