云計算傳奇故事:亞馬遜“誤入”云計算始末
2007年后,云計算的名詞可謂不絕于耳。不過根據筆者與不同行業的從業人員共事的經驗來看,多數人對于云計算這個術語到底是什么含義還是一頭霧水。
2008年,亞馬遜在線推出了自己的云計算版本進軍云計算市場。本文意在向大家展示亞馬遜的云計算之路。
首先我們需要了解的是:為什么是亞馬遜?
亞馬遜并非我們認為最可能進軍云計算業務的公司。多數人認為這種業務應該是IBM和甲骨文這樣的廠商來做才對。
讓我們先看看亞馬遜是如何進入這個領域的。當用戶訪問亞馬遜網站時需要注冊登錄,用戶將看到他可以自己定制的店面。這些推薦出于某種原因不會儲存在收藏夾里,也不會通過用戶的瀏覽器體現出來;他們完全是通過亞馬遜服務器來決定的。
對于一名網絡開發者來說,匯總這些推薦信息是很容易的:當用戶登錄時,最新的采購信息會展現在你眼前,類似條目的數據庫查詢也準備就緒并且顯示在主頁上。除了這個問題外:你會為數百萬在線用戶同時發生的幾行代碼花費幾分鐘或者幾小時做這種統計嗎?
多數網絡服務器盡管功能強大,但都不具備這種能力。因此亞馬遜的工程師們就被迫要想出新的辦法來應對如此繁雜的數據庫交易和實現軟件的快速計算。他們的解決方案是使用一組由多重計算機組成的分布式計算環境,每臺計算機都專門執行一項任務,這些計算機都互相通信協同工作。
對于一名軟件研發人員來說,多數時間所處的環境都是要向人們不停的解釋,盡管很多人都能編譯代碼,但要完美的執行軟件研發任務通常需要整個團隊的協同工作,甚至可能是整個公司。舉例來說,這就是為什么你會發現,高度專業的軟件公司都是專門向某一特定行業供應軟件。為什么企業不能只研發他們自己的軟件?因為他們不從事這樣的業務。事實上,多數經濟實用的解決方案通常是從其他專門致力于此類軟件開發的公司購買軟件。
不過這種情況也有例外。有時一家公司所需的軟件并不存在。看看亞馬遜的發展就是這樣。他們最初的業務是在線銷售書籍,但現在他們發展成了百貨紛陳的在線商店。為了跟上用戶規模的發展速度,亞馬遜需要能適應他們運營模式的硬件設備和軟件系統。但不幸的是,在亞馬遜發展的初期階段,這種系統還沒有誕生。亞馬遜的工程師除了自己研發以外別無選擇。
亞馬遜工程師們被迫開始研發應對他們零售業務的大規模分布式系統。當這一切完成后,亞馬遜意識到他們不僅可以自己掌握主動權,而且研發成果還能為其他用戶所用。由此2002年亞馬遜網絡服務(AWS)誕生了。
眾所周知的亞馬遜網絡服務傘狀系統包含了許多不同的技術。最新的技術之一被稱為為亞馬遜彈性計算云,簡稱EC2。
當亞馬遜剛開始研發亞馬遜網絡服務時,他們決定除了要簡化個體計算機工作負載的分配,還要確保個體計算機能在隨需基礎上提供服務。
舉例來說,如果有人登錄亞馬遜這樣的大型網站去瀏覽視頻,如果他們沒在使用留言板,那么處理留言板的服務器就沒理由為他留出存儲空間。亞馬遜研發的大型分布式系統能根據用戶的需求分配資源,當用戶不需要這些資源時,亞馬遜就會將這些資源釋放。
在小型網絡服務器環境中,隨著程序員了解了如何按需分配對象,這種資源分配的應用就越來越多。對于大型系統這種方式尤其的重要。這便是云計算的雛形。在云計算的世界里,大型網絡服務器的每個部分都成為了一種服務,可供執行每項特別任務使用。這些服務在獨立的硬件上運行。在其他計算機上運行的軟件也能按需訪問服務。
這就是云計算的真實體現:可以互相提供服務的多重系統。軟件功能即服務(也被稱為軟件即服務)。但是在云計算的情況下,這些獨立的系統通常本身就很大;他們不僅是獨立的網絡服務器,而且更像是容量巨大的數據庫。當所有這些大型系統作為整體在網絡上鋪展開來協同工作,這樣形成的系統池就被稱為云。
如今這個概念進入了新的層次:即創建獨立的服務這樣就可以按需使用。想象一下用戶想要將這些服務的某些部分用于他們自己的軟件開發。他們想在網絡上運行自己的軟件,并且通過這些服務的交付來獲益。他們不需要所有可供使用的服務,只選擇自己需要的部分。
這就是亞馬遜彈性計算云的使用原理:即用戶租用亞馬遜云上的空間,只需為他們需要和使用的部分付費。軟件也是在運行的時候分配使用空間(甚至是計算機新增虛擬機亦是如此)。云的每個部分都能提供給用戶使用,他們都是按需付費。
對于用戶來說無疑是好處多多。因為通過云的方式,他們的軟件就可以在大型系統上運行,這種系統功能強大,每天處理的交易量可以達到數百萬;這樣用戶就不必非要購買屬于自己的物理硬件。他們也不必訂購在數據中心的物理臺式機中擁有一個虛擬區域的托管服務。而結果就是他們的軟件功能可以和大型廠商的一樣強大。
這種云計算的方式并非亞馬遜所獨有的。不過亞馬遜自己的系統被稱為彈性計算云,因為亞馬遜的工程師認為它有具有彈性的。用戶的軟件能向閑置的服務提出請求,在軟件運行時按照需求相應增長,當需求減少時資源也會隨之逐漸釋放。換句話說,軟件是很靈活的,在需求的基礎上發展,用戶按照使用的服務進行付費。這種方式與傳統的托管服務是有所不同的,傳統的托管服務通常都是用戶對固定限度的資源每月按照固定費用支付。
不過亞馬遜的彈性計算云與傳統的托管服務也有類似之處。當用戶在彈性計算云上運行應用軟件時,他們創建的虛擬機與小型托管提供商的虛擬服務器十分相似。從這里可以看出,他們的系統能隨著新增虛擬機需求時一同成長。這些虛擬服務器就是云服務提供的最小的原子單元。
接下來隨著用戶軟件的運行,他們可能要對軟件的代碼進行編譯來決定是否需要增加額外的虛擬機。他們的軟件可能需要處理一些復雜的數字運算,但他們又不想將目前使用的虛擬機供這個運算過程使用。此時他們可以分配第二個虛擬機給這個運算過程,這個虛擬機擁有與一臺獨立的單機系統同樣的能力。當數字運算過程完成后,第二個虛擬機可以將運算的結果返回給第一個虛擬機,然后關機,這樣亞馬遜其他的用戶就能使用這段處理時間了。
創建這樣的彈性計算環境需要精密的計算能力,比如一座由專門執行這些任務的很多計算機組成的服務器機房。有了這些計算機,工程師可能會有額外的需求,讓系統具備按照需求分配多重虛擬機的能力,以便系統更加高效。
有時一個小型項目可能會會變得復雜。程序員可能對創建這種的系統充滿雄心。但謹記我之前所說的。你在什么樣的企業里?他們想要創建的系統并非是微不足道的,也不是一個獨立的程序員花費幾個周末就能完成的。
這就是為什么很多公司對亞馬遜提供的產品感興趣的原因:允許用戶的應用軟件隨需升級的大容量并行基礎架構,所有人都必須考慮執行這項任務的具體細節或者維護他們自己的數據中心所需的財力狀況。
在構思這篇文章時,筆者參閱了許多來自亞馬遜的正式文檔,包括對這種體系架構的描述文件。這篇文章提供了一些實例來闡述彈性計算云體系架構和亞馬遜網絡服務的其他方面是如何體現他們的優勢的;吸引我們注意力的是我們需要將數百萬頁的文檔從微軟的Word格式轉換為PDF格式。
有許多桌面系統應用軟件能實現這種轉換,也有一些可以通過網絡服務器供用戶使用。用戶可以從網絡服務器上上傳這份文檔然后轉換為PDF文件。
不過想象一下用戶通過網站托管平臺來上傳文檔,此時有數萬文檔在排隊等待。這樣的工作無異于夢魘。我可能會退出這項作業然后轉移到其他的方式。
不過在云環境下從事這項作業就不同了。大容量的并行云環境能輕松的讓系統處理這些任務,我可能根本不需要打開手機,甚至放心的去睡大覺。
彈性計算云環境是在某些經過驗證的技術上創建的,包括用JAVA語言編寫的,用于開發分布式應用軟件的開源框架Hadoop。
我曾經提到亞馬遜能提供虛擬機。當創建虛擬機時,用戶能根據詳細說明和AMI來選擇應該怎么做。舉例來說,他們可以在2007 32位至強處理器基礎上創建標準化Linux分布式虛擬機,這個虛擬機可以擁有1.7GB內存和16GB存儲容量。用戶還可以根據需要建立其他的虛擬機。目前創建虛擬機的數量上限為20,不過大客戶可以和亞馬遜合作要求更多虛擬機。
亞馬遜還提供給研發人員大量的資源,包括使用指南,正式文檔和工具。亞馬遜還創建了幾個工具來幫助研發人員,包括能夠配置系統的命令行工具。還有注冊工具等。研發人員還能從亞馬遜云上找到更多的工具來設置虛擬機。亞馬遜還提供了供用戶交流和解決問題的大型論壇。
結論
在云計算之初,筆者也對亞馬遜網絡服務的出現,特別是亞馬遜進軍云計算領域的行動心存疑慮。確實它看起來如此與眾不同,如今想象一下我們可以通過云服務輕松創建和升級網絡軟件,這多么令人振奮。還會有像EC2這樣的云服務接踵而至,我知道迎接它們的時候到了。