因此,根據服務類型的不一樣,雲計算能夠分爲三類,即基礎設施即服務(IaaS)、平臺即服務(PaaS)和軟件即服務(SaaS)。這3種雲計算服務有時稱爲雲計算堆棧,由於它們構建堆棧,它們位於彼此之上。html
本文,就來分別介紹下到底什麼是IaaS、PaaS和SaaS。web
IaaS(Infrastructure as a Service),即基礎設施即服務。指把IT基礎設施做爲一種服務經過網絡對外提供,並根據用戶對資源的實際使用量或佔用量進行計費的一種服務模式。數據庫
作一個簡單的比喻,IaaS服務優勢相似於共享廚房服務。編程
商家爲用戶提供了廚房、鍋具、煤氣竈、烤箱、電飯煲等等一系列廚房用品。用戶須要本身購買米、面、蔬菜、調味品等,並進行加工製做。瀏覽器
有了IaaS服務,用戶能夠在雲服務提供商提供的基礎設施上部署和運行任何軟件,包括操做系統和應用軟件。服務器
用戶沒有權限管理和訪問底層的基礎設施,如服務器、交換機、硬盤等,可是有權管理操做系統、存儲內容,能夠安裝管理應用程序,甚至是有權管理網絡組件。markdown
簡單的說用戶使用IaaS,有權管理操做系統之上的一切功能。咱們常見的IaaS服務有虛擬機、虛擬網絡、以及存儲。網絡
PaaS(Platform as a Service),是指平臺即服務。是一種雲計算服務,提供運算平臺與解決方案服務。數據結構
仍是使用共享廚房的例子來比喻。架構
餐廳除了提供廚房、廚具等,還提供了清洗乾淨切好的蔬菜、調好味道的肉、餃子皮和餃子餡等。用戶要享受美食,首先須要炒菜、加熱或者煮熟,但卻不用作太多的前期多種複雜準備。
PaaS給用戶提供的能力是使用由雲服務提供商支持的編程語言、庫、服務以及開發工具來建立、開發應用程序並部署在相關的基礎設施上。
用戶無需管理底層的基礎設施,包括網絡、服務器,操做系統或者存儲。他們只能控制部署在基礎設施中操做系統上的應用程序,配置應用程序所託管的環境的可配置參數。
SaaS(Software-as-a-Service),意思爲軟件即服務,即經過網絡提供軟件服務。
SaaS平臺供應商將應用軟件統一部署在本身的服務器上,客戶能夠根據工做實際需求,經過互聯網向廠商定購所需的應用軟件服務,按定購的服務多少和時間長短向廠商支付費用,並經過互聯網得到Saas平臺供應商提供的服務。
和IaaS以及PaaS的共享廚房相比,SaaS更像外賣平臺。
SaaS至關於餐廳直接爲你們提供作好的菜餚,還提供外賣服務。用戶只須要付費,就能夠享受各類不一樣類型的美味佳餚,還能夠在有外賣網點的地方直接點餐。
SaaS給用戶提供的能力是使用在雲基礎架構上運行的雲服務提供商的應用程序。能夠經過輕量的客戶端接口(諸如web瀏覽器(例如,基於web的電子郵件))或程序接口從各類客戶端設備訪問應用程序。
用戶無需管理或控制底層雲基礎架構,包括網絡,服務器,操做系統,存儲甚至單獨的應用程序功能,可能的例外是有限的用戶特定應用程序配置設置。
根據SaaS應用是否具備可配置性,高性能,可伸縮性的特性,SaaS成熟度模型被分紅四級。每一級都比前一級增長三種特性中的一種:
屢次開發
這種模型下,軟件服務提供商爲每一個客戶定製一套軟件,併爲其部署。每一個客戶使用一個獨立的數據庫實例和應用服務器實例。數據庫中的數據結構和應用的代碼可能都根據客戶需求作過定製化修改。
一次開發屢次部署
經過不一樣的配置知足不一樣客戶的需求,而不須要爲每一個客戶進行特定定製,以下降定製開發的成本。
可是,軟件的部署架構沒有太大的變化,依然爲每一個客戶獨立部署一個運行實例。只是每一個運行實例運行的是同一份代碼,經過配置的不一樣來知足不一樣客戶的個性化需求。
可配置性的比較通用的實現方式,就是經過MetaData(元數據)來實現。
一次開發一次部署
多租戶單實例(Multi-Tenant)的應用架構纔是一般真正意義上的SaaS應用架構,它能夠有效下降SaaS應用的硬件及運行維護成本,最大化地發揮SaaS應用的規模效應。
無需開發
將第三級的Multi-Tenant SingleInstance系統擴展爲Multi-Tenant MultiInstance。最終用戶首先經過接入Tenant Load Balance層,再被分配到不一樣的Instance上。經過多個Instance來分擔大量用戶的訪問,咱們可讓應用實現近似無限的水平擴展。
本文經過廚房最菜的例子介紹了雲計算中的三種形式:IaaS、PaaS以及SaaS。
從IaaS到PaaS再到SaaS,服務商提供的服務及產品愈來愈多,而普通用戶承擔的工做量便愈來愈少。
從左到右,使用了對應的雲服務後,用戶承擔的工做量(上圖綠色部分)會愈來愈少,IaaS > PaaS > SaaS。
IaaS 是雲服務的最底層,主要提供一些基礎資源。常見的產品有Amazong EC二、阿里雲等。
PaaS 提供軟件部署平臺,抽象掉了硬件和操做系統細節,能夠無縫地擴展。開發者只須要關注本身的業務邏輯,不須要關注底層。常見的產品有Heroku等。
SaaS 是軟件的開發、管理、部署都交給第三方,不須要關心技術問題,能夠拿來即用。常見的產品有Gmail、PayPal等。