誰是開發者的夢中情人?PaaS與IaaS之爭
前言
云計算主要有SaaS,PaaS和IaaS這三種服務模式。對普通用戶而言,他們主要面對的是SaaS這種服務模式,但是對普通的開發者而言,云計算對他們而言,卻有兩種服務模式可供選擇,PaaS和IaaS,而且這兩種模式有很多的不同,而且它們之間還存在一定程度的競爭,接下來將首先對這兩種模式進行比較,之后將預測一下它們的未來,也就是那種模式將會更受到開發者的青睞。
比較
大家應該知道,PaaS的主要作用是將一個開發和運行平臺作為服務提供給用戶,而IaaS的主要作用是提供虛擬機或者其他資源作為服務提供給用戶。下面將在七個方面對PaaS和IaaS兩者進行比較:
開發環境
PaaS基本都會給開發者提供一整套包括IDE在內的開發和測試環境,而在IaaS方面用戶主要還是沿用之前那套開發環境,雖然比較熟悉,但是因為之前那套開發環境在與云的整合方面比較欠缺,所以有時候會很不方便,比如通過PaaS提供的工具部署一個應用到云上,可能只需幾下鼠標點擊和十多秒即可完成,而在IaaS平臺上部署應用,相對而言比較復雜,特別是在剛開始使用的時候。
支持的應用
因為IaaS主要是提供虛擬機,而且普通的虛擬機能支持多種基于X86架構的操作系統,包括Linux、OpenBSD和Windows等,所以IaaS支持的應用的范圍是非常廣泛的。但如果要讓一個應用能跑在某個PaaS平臺不是一件輕松的事,因為不僅需要確保這個應用是基于這個平臺所支持的語言,而且也要確保這個應用只能調用這個平臺所支持的API,如果這個應用調用了平臺所不支持的API,那么就需要在部署之前,對這個應用進行修改。
開放標準
雖然很多IaaS平臺都存在一定的私有功能,但是由于OVF等協議的存在,使得IaaS在跨平臺和避免被供應商鎖定這兩面是穩步前進的。而PaaS平臺的情況則不容樂觀,因為不論是Google的App Engine,還是Salesforce的Force.com都存在一定的私有API。
可伸縮性
PaaS平臺會自動調整資源來幫助運行于其上的應用更好地應對突發流量。而IaaS平臺則常需要開發人員手動對資源進行調整才能應對。
整合率和經濟性
PaaS平臺整合率是非常高,比如PaaS的代表Google App Engine能在一臺服務器上承載成千上萬的應用,而普通的IaaS平臺的整合率最多也不會超過100,而且普遍在10左右,使得IaaS的經濟性不如PaaS。
計費和監管
因為PaaS平臺在計費和監管這兩方面不僅達到了IaaS平臺所能企及的操作系統層面,比如,CPU和內存的使用量等,而且還能做到應用層面,比如,應用的反應時間(Response Time)或者應用調用某個服務的次數等,這將提高計費和管理的精確性。
學習難度
對于那些熟悉類UNIX系統的程序員而言,能很快學習在IaaS的開發和管理應用的方式,雖然現在IaaS產品普遍對Windows開發環境沒有很好的支持,而如果要學會PaaS上面開發則有可能需要學一門新的語言或者新的框架,所以IaaS學習難度更低。
下面將通過一張表來總結一下上面的比較:
▲表1. PaaS和IaaS之間的比較
未來的競爭
在當今云計算環境當中,IaaS是非常主流的,無論是Amazon EC2還是Linode或者Joyent等,都占有一席之地,但是隨著Google的App Engine,Salesforce的Force.com還是微軟的Windows Azure等PaaS平臺的推出,使得PaaS也開始嶄露頭角。談到這兩者的未來,特別是這兩者之間的競爭關系,我個人認為,短期而言,因為IaaS模式在支持的應用和學習難度這兩方面的優勢,使得IaaS將會在短期之內會成為開發者的***,但是從長期而言,如果PaaS能解決諸如通用性和支持的應用等方面的挑戰,PaaS模式會因為其高整合率所帶來經濟性從而替代IaaS成為開發者的“新寵”。
作者簡介
吳朱華,之前在IBM中國研究院參與過多個云計算產品的開發工作,現在專注于YunTable和YunEngine的研發工作,并即將發表《剖析云計算》一書,敬請期待。
【編輯推薦】