*** 自本篇後續所有的文章內容,作者為賴信仁 (Ringle Lai),並已經由授權延續本案例研討系列。***
七、 雲運算技術總覽
7.1. 雲運算的歷史與分類
自從互聯網(Internet)開始進入電腦的世界以來,電腦技術的進展,以超越人類能夠想像的速度超高速發展中。
中國人有句話說:「積沙成塔,聚少成多」,用這句話來形容近來的電腦運算能力的進展,是再適合也不過的了。
在網路環境還不發達的年代中,所有的電腦都是獨立的個體,各自有各自的運算能力,彼此沒有辦法互相溝通,因此,要進行大量的運算,就必須要架構出「超級電腦」來進行超大量的運算;
當網路環境越來越成熟時,區域網路利用「乙太網」(ethernet)進行溝通,因此,在區域網路的環境中,可以架構出「叢集式運算」(Computer Cluster)的環境,讓多個Server可以透過互享資源的方式,將運算能力以倍計成長;
但「叢集式運算」的環境,對於很多的系統管理人員來說,卻是一個惡夢的開始,系統管理人員必須耗費相當多的心力來架構出「叢集式運算」的環境,而硬體及軟體成本也因為要架構出這樣的環境而大幅飆升,原先只是想要取代大型主機,卻發現要耗費的心力其實比維護大型主機更多!
基於這樣的一個背景,有些人開始思考是否有更簡單的方法來架構出一套具備叢集式運算能力,但在管理上更簡單、成本上更節省的方式。
「網格運算」(Grid Comupting)就是在這樣的背景上應運而生。
由於網際網路的傳輸能力大幅提升,無論在速度或是可靠性上,網際網路的能力都逼近了區域網路,因此,是否能夠運用網際網路的特性來進行分散式的運算,就成了計算機科學中的「顯學」。
網格運算主要是將整體的網際網路視為一個「有機體」,在這個有機體中,所有加入「網格」的個人電腦都視作是該有機體的「細胞」,每個「細胞」可以提供他多餘的運算能力,當有一個「運算任務」發出後,各個節點分散了整體的運算任務,讓整個的「網格」可以發揮最大的能力來進行運算。
「網格運算」可以說是分散式運算中的一個極致運用,但是網格運算在管理上仍然是一個很大的問題,由於參與網格是一個「自由」且「自發性」的行為,因此,同一個運算任務究竟需要多少的時間可能都沒辦法事先預測,也因此,是否有更適當的方式能夠同時兼顧「分散式運算」與「集中式管理」?
「雲運算」似乎是達成上述目標的其中一個「聖杯」。
何謂雲運算呢?根據美國國家標準技術研究所(National Institute of Standards and Technology, NIST)的定義,雲運算是:
「Cloud Computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. This cloud model is composed of five essential characteristics, three service models, and four deployment models.」(ref: The NIST Definition of Cloud Computing; NIST Special Publication 800-145; Peter Mell & Timothy Grance)
雲運算是一個具備普及性、便利性及隨選式網絡的模型,其可以存取共用的可配置的電腦資源庫(如網絡,伺服器,存儲,應用程式和服務);使用者可以運用最少的管理成本快速地與服務供應商互動。
雲運算模式是由五個關鍵特性、三種服務模型以及四種部署模型所構成。
- 雲運算的五個關鍵特性分別是:
- On-demand self-service(隨選式自助服務):使用者可以按照自己的需要挑選適合自己的相關服務(如網路的存儲或是使用Server的時間…等);
- Broad network access(廣泛的網路存取):所有的存取都必須透過網路,並且提供多種的平台(如手提式裝置、個人電腦或是工作站)來進行存取;
- Resource pooling(資源池):雲端提供者(Cloud Provider)提供資源池讓所有的使用者可以透過「多租戶」(multi-tenant)的方式進行資源的存取;
- Rapid elasticity(快速且彈性的擴充能力):雲端提供者應該可以讓使用者快速且彈性的擴充其所需的服務;
- Measured service(可供測量的服務):雲端提供者所提供的服務應該是可供測量的,以讓使用者可以確實地知曉要使用哪些特定的服務。
- 三種服務模型則為:
- Software as a Service (SaaS)(軟體服務提供者):雲端提供者提供軟體服務給一般的使用者,使用者可以透過多種的平台(如Web瀏覽器、手持式裝置或是API)存取雲端提供者的軟體服務;
- Platform as a Service (PaaS)(平台服務提供者):雲端提供者提供軟體運作的平台,讓軟體服務提供者可以在該平台上部署他們的程式;
- Infrastructure as a Service (IaaS)(基礎建設服務提供者):雲端提供者提供所有的硬體環境,包括網路架構、儲存環境以及運算環境,所有的平台服務可以架構在該基礎環境中。
- 最後,雲運算的服務模型可以使用四種部署方式:
- Private cloud(私有雲):由單一組織或單位所擁有的雲端基礎建設;
- Community cloud(社群雲):由特定的族群所擁有的雲端基礎建設;
- Public cloud(公有雲):提供給大眾存取的雲端基礎建設;
- Hybrid cloud(混和雲):混合了2到3種的雲端基礎建設。
根據NIST所做的規劃,一個典型的雲運算可以利用下圖來作為一個代表性的模型(Ref: NIST Cloud Computing Reference Architecture, Fang Liu, Jin Tong, Jian Mao, Robert Bohn, John Messina, Lee Badger & Dawn Leaf, 2011, p.10, Figure 1):
根據上圖,可以看出參與雲運算的主要可以分成五種不同的角色,分別是:
雲提供者(Cloud Provider)、雲經紀商(Cloud Broker)、雲載體提供者(Cloud Carrier)、雲審核者(Cloud Auditor)、及雲消費者(Cloud Consumer)。
上圖即為這五種不同角色的人針對整體的雲運算所應該提供的服務。
以本案例而言,我們將只討論雲提供者與雲消費者之間的行為與服務,所以我們的重點將會放在上圖的右上角的方塊與中間那一大塊方塊中。
至於雲運算的四種部署方式,待案例研討後半部實作時再細部討論,接下來,讓我們把重點放在雲服務上。
7.2. 雲運算的歷史與分類
雲運算必須要配合雲服務才能夠提供給雲消費者確實的感受,而一個完整的雲運算環境,應該是由前述的三種服務模型結合後,才有可能提供適當的雲服務(Ref: NIST Cloud Computing Standards Roadmap, Michael Hogan, Fang Liu, Annie Sokol & Jin Tong, 2011, p.21, Figure 4):
也因此,提供雲服務的相關團隊,應該要能夠確實地瞭解自己團隊的優、缺點,並且在整體的雲運算環境中,找到適合自己團隊的定位,並且在不同的環節中,找到適當的協力廠商協同合作,才有可能提供使用者最佳的雲服務的體驗。
提供雲服務的團隊,應該要能夠清楚說明自己的雲服務的層次以及所使用的雲運算的方式,而針對雲服務,也應該要能夠有相關的文件來說明自己的雲服務。
我們可以用下圖來更清楚地說明雲服務的層級與預期的服務型態 (Ref: CLOUD COMPUTING - Principles and Paradigms, Rajkumar Buyya, James Broberg & Andrzej Goscinski, 2011, p.14):
透過上圖可以更清楚地瞭解,這三種不同的服務層級的定義以及提供的服務的型態。
NIST針對要更瞭解雲運算的開發人員準備了一個範例:
從這張圖中其實可以看出,不同的雲服務會有不同的Consumer利用不同的平台來參與。通常來說,PasS跟IaaS的Consumer大多會是開發人員;而SaaS則是面對廣大的消費族群。
也因此,對於開發人員來說,確實了解自己的優勢與缺點,找出適合的雲服務領域來發揮,是刻不容緩的事。