現在,人們對云計算已經不陌生了,耳朵都聽出老繭來了。可很多人其實對云計算并談不上有多了解,除了真正開發云計算業務的人員,其他人是只知其一,不知其二,只泛泛了解而已。說起云計算,當然離不開要談IaaS、PaaS、SaaS這三個好朋友了,要將這三個朋友的外貌特征描述清楚很容易,但如果需要知道每個朋友性格怎樣,人如何,還有哪些獨門特技,將這些都了解清楚可不是短時間的事兒,也就沒那么容易了。本文就介紹一些云計算本質上的東西,云計算都需要哪些實實在在的技術支撐,哪些技術讓云計算更接地氣。
首先來說IaaS,IaaS叫做基礎設施即服務。IaaS能給消費者提供的是數據中心各種虛擬資源,包括CPU、內存、存儲、網絡和其它基本的計算資源,用戶能夠部署和運行任意軟件。用戶不用管理或控制任何云計算基礎設施的物理設備,卻能任意使用各種分配的虛擬資源。要將這些孤立的物理設備通過網絡打通,通過將這些資源虛擬化起來,實現自如分配,整個過程就需要軟件的參與和控制,這就是IaaS的奧秘。有了IaaS,才能將這些單獨的物理資源集中虛擬化出來,相比以往在技術上是極大的進步。那么,IaaS主要涉及哪些技術呢?IaaS的技術基礎就是虛擬化,更具體來說就是XEN和KVM,所以這方面的知識應該掌握,不用深入到XEN和KVM源代碼實現層面,只需要掌握基本使用和libvirt API 編程就夠用了。還有OpenStack自然不在話下,這是一個開源云計算的管理平臺項目,幾乎支持所有類型的云環境,提供IaaS的解決方案。OpenStack是當前IaaS中應用最為廣泛的技術,所以想了解IaaS,就要從學習OpenStack入手,OpenStack是使用Python語言寫的,要想深入了解需要掌握Python語言,不過隨著OpenStack的不斷完善,現在流行出現用腳本語言來編寫的OpenStack,并受到廣泛歡迎。除此之外,Eucalyptus、CloudStack、OpenNebula也都是IaaS要依仗的技術。Eucalyptus是一個用于實現云計算的開源軟件基礎設施,是Amazon EC2的一個開源實現,它與EC2的商業服務接口兼容,是一個面向研究社區的軟件框架,Eucalyptus采用的是Java語言編寫。CloudStack是開源的云平臺,擁有自己的API云管理平臺,也支持亞馬遜Web服務API模型,它可以提供比OpenStack更完整的開發平臺,相比OpenStack,CloudStack更適合那些技術能力不夠強的用戶使用,CloudStack采用的編程語言是Java,幾乎所有軟件開發工程師都接觸過Java,學習起來并不難。OpenNebula(ONE)是由歐洲研究學會發起的虛擬基礎設備和云端運算的計劃,是一款為云計算而打造的開源工具箱。ONE允許你與XEN、KVM或VMware ESX一起建立和管理私有云,在不同的OpenNebula實例上可以運行私有云,Amazon的合作伙伴,也同樣可以作為遠程的云服務供應商。OpenNebula采用了C++編程語言。這么多的技術為數據中心提供了更多的選擇,如果要部署IaaS就要提前學習一下這些技術,以便做到有備無患。當然,這些技術都在不斷的優化和完善過程中,技術細節上仍在不斷調整和修改,要經常關注這些技術的演進過程,加深自己對IaaS云的理解。
其次來說說PaaS,PaaS叫做平臺即服務,其作為一種服務,提供的是一個基礎平臺,而不是某種應用。PaaS平臺在云架構中位于中間層,提供中間件服務,比如有應用服務器、數據庫、BPM、Portal、消息中間件,遠程對象調用中間件等等。PaaS最常用的技術有VMware的CloudFoundry和RedHat的OpenShift。CloudFoundry是VMware推出的第一個開源PaaS云平臺,支持多種開發框架、編程語言、應用服務以及多種云部署環境的靈活選擇。CloudFoundry云平臺主要有Router、Cloud Controller、Health Manager、DEA、NFS、NATS以及Service等模塊組成,所有模塊的實現都是開源的,都可以下載得到。絕大部分時候我們并不需要了解CloudFoundry是如何實現的,會利用CloudFoundry這個PaaS平臺做二次開發就可以了,會使用CloudFoundry就行。OpenShift是全球開源解決方案領導者紅帽公司推出的,面向開源開發人員開放的PaaS。OpenShift開源、免費、穩定并權限大,OpenShift提供比任何PaaS更多的靈活性,支持java、python、ruby、php、perl、nodejs等多種開發語言。CloudFoundry和OpenShift本身是由Ruby語言編寫完成的,所以要掌握Ruby語言對理解PaaS很有意義,現在CloudFoundry也有采用腳本語言編寫的。除了CloudFoundry和OpenShift之外,PaaS還有GAE、SAE、BAE等平臺技術,這些大都影響力較小,在此就不再詳述了。了解PaaS,掌握CloudFoundry和OpenShift就基本夠用的,最關鍵的還是要學習使用這樣的PaaS平臺。
最后來說SaaS,SaaS叫做軟件即服務,是一種基于互聯網提供軟件服務的應用模式。SaaS 是一種軟件布局模型,其應用專為網絡交付而設計,便于用戶通過互聯網托管、部署及接入。SaaS第一個應用程序是SiteEasy,在1998年發起的Siteeasy.com網站中,由總部位于亞特蘭大的公司WebTransi開發完成。最早應用實現的是salesforce公司提出的SaaS 并運用于CRM行業。它通過Internet提供軟件的模式,客戶根據自己的實際需求,通過互聯網向數據中心定購所需的應用軟件服務,按定購服務多少和時間長短向數據中心支付費用。
除了三種類型云計算所需要的技術以外,最為關鍵的是要掌握Linux,因為基本所有的開源云計算平臺都是基于Linux的。不僅要掌握Linux操作系統的使用,更重要的是對Linux系統的內核有更深的理解,采用利用好這個平臺。其實Linux系統是非常強大的,比如飛機的控制系統、銀行的系統、手機的系統等等都有Linux的身影,只要你能想到的東西都有Linux的存在,所以一定要掌握Linux系統。當然,介紹了三種云涉及到的這么多技術,使用的開發語言環境也各有不同,沒有哪個人有精力全部掌握,這時就要有重點地,根據自己的需要去學習相應的云計算技術。