“云計算”這個術(shù)語最初是指一種使用API或自動化腳本程序來實現(xiàn)資源、計算存儲以及網(wǎng)絡(luò)等資源自動配置的方法。當(dāng)亞馬遜網(wǎng)絡(luò)服務(wù)(AWS)設(shè)計它的基礎(chǔ)設(shè)施即服務(wù)(IaaS)產(chǎn)品時,IT團隊將其視為一種讓他們關(guān)注產(chǎn)品而非產(chǎn)品開發(fā)的產(chǎn)品推廣方法。雖然AWS有正確的想法,但是他們從事IaaS和PaaS的開發(fā)工作只是剛剛起步。
平臺即服務(wù)(PaaS)為簡化和加速部署創(chuàng)造了機會,并實現(xiàn)了以較短的開發(fā)周期提供新功能。它提供了一個快速發(fā)布和管理應(yīng)用程序的方法。但是,它也不是沒有問題的。
第一個PaaS產(chǎn)品——Google AppEngine——是有著一些局限性的。
它在其有限的框架內(nèi)只支持Python。
之后逐漸出現(xiàn)了其他的PaaS產(chǎn)品,但是這些新產(chǎn)品仍然都局限于它們所支持的語言——其中大部分只支持網(wǎng)絡(luò)應(yīng)用程序。這些產(chǎn)品會自動擴展并啟動服務(wù)器,但是開發(fā)人員仍然不得不確定何時擴展服務(wù)規(guī)模。同時,它們通常都沒有提供對底層硬件的控制。
但是,對于那些必須支持應(yīng)用程序后臺運行或者需要某些應(yīng)用程序安裝的服務(wù)來說,又是如何的呢?如果企業(yè)對用戶在網(wǎng)絡(luò)上的輸入沒有直接響應(yīng)的應(yīng)用程序,但是又不得不響應(yīng)事件并在后臺運行點什么,又該如何呢?IT團隊可以建立一些類似于Web-Hook的東東并發(fā)布它,但他們?nèi)匀恍枰行〇|西在后臺運行,即便在不使用時亦是如此。
容器是新的IaaS嗎?
當(dāng)Docker及其方法在主機系統(tǒng)進入界面設(shè)置了一個虛擬層時,它頓時吸引了幾家正在尋找服務(wù)器流程編制的企業(yè)的眼球。Docker能夠讓開發(fā)人員構(gòu)建一個容器,并將其從本地機部署至AWS的任何位置,并確保它們具有完全相同的配置。容器是通過“Dockerfile”腳本程序開發(fā)的,這種腳本程序可以讓IT團隊在需要推出一個新版本發(fā)布供測試和開發(fā)使用時快速地開發(fā)一個新的容器。
Docker可以與允許開發(fā)人員輕松地準(zhǔn)確定義環(huán)境應(yīng)該是什么樣子的?IT團隊仍然必須指定所有所需的基本包并管理服務(wù)器,所以Docker并不是PaaS。但是,云計算供應(yīng)商們開始意識到這是PaaS模式的一個很好的基線。
當(dāng)亞馬遜Elastic Beanstalk增加了對Docker的支持后,開發(fā)人員重新獲得了對主機環(huán)境的控制權(quán),但是亞馬遜仍然管理著自動擴展和部署。這是一個兩全其美的解決方案,這是一個讓開發(fā)人員和運營人員都高興的極好方法。
此外,用戶可以使用AWS 和 Docker 來運行可自動擴展的后端應(yīng)用程序。更妙的是,用戶可以在更少的服務(wù)器上運行多個容器,且實現(xiàn)由額外虛擬化Docker提供的完全隔離。
亞馬遜Lambda把PaaS帶至一個新的水平
當(dāng)亞馬遜推出Lambda時,它的PaaS進化又向前邁進了一步。亞馬遜的Lambda似乎是一個真正的PaaS產(chǎn)品,但是它允許用戶設(shè)置“觸發(fā)器”,這是一項能夠在基于事件的應(yīng)用程序模式中正常運行的技術(shù)。該服務(wù)目前支持Node.js (之后會增加更多支持的語言),但是它不要求IT團隊擁有任何可運行的基本系統(tǒng),以實現(xiàn)對事件的響應(yīng)。Lambda是一個完全圍繞事件響應(yīng)而設(shè)計的產(chǎn)品;IT團隊并不需要管理任何的硬件。
例如,如果讓用戶上傳視頻至系統(tǒng),那么Lambda會挑選一個新的視頻,這個視頻是由運行功能函數(shù)的簡單存儲服務(wù)通知所觸發(fā)的。然后,你的功能函數(shù)就會把視頻文件上傳至Elastic Transcoder,并將其數(shù)據(jù)格式轉(zhuǎn)換成為移動和桌面格式,之后才把視頻文件上傳至網(wǎng)絡(luò)。它還可以使用亞馬遜SNS把短消息提醒發(fā)送給等待觀看供應(yīng)商所上傳新視頻的所有人。
但是,如果亞馬遜Lambda是一個真正的 PaaS 產(chǎn)品,那么 Elastic Beanstalk 或 AWS的新型EC2 容器服務(wù)是否與其相適合?
Elastic Beanstalk 和 EC2容器服務(wù)都有著一些PaaS的功能——它允許企業(yè)用戶在需求增長時自動擴展服務(wù)規(guī)模。它們還支持集成代碼部署和對IaaS功能的良好處理,其中包括指定服務(wù)器類型、底層軟件包以及用戶所需的應(yīng)用程序環(huán)境等。EC2容器服務(wù)還增加了對低水平應(yīng)用程序的支持,具體包括非網(wǎng)絡(luò)應(yīng)用程序。
事實上,與其說Elastic Beanstalk 和 EC2容器服務(wù)是PaaS,那還不如說是IaaS。他們?yōu)槠髽I(yè)用戶提供了自購的額外容量,從而令其成為了一個比完全切換至PaaS 更好的選擇。他們還提供了最大的靈活性和最少的受制于特定廠商。而EC2 容器服務(wù)就是PaaS 和IaaS —— 但不是所有的云計算。