Amazon也許在速度與成本方面較Azure或者谷歌更具優勢,但反之亦然——實際情況取決于我們的具體工作負載類型。
我們該如何為自己的應用程序挑選最為合適的云平臺匹配選項?這個問題如今正困擾著越來越多的企業IT部門,而要找到確切答案亦絕非易事。一般來講,實際選擇取決于應用程序當中數據的敏感程度。但在其它情況下,公有與私有云間的考量亦非常重要。與此同時,業務目標與速度或者價格是否需要做出針對性優化也會極大影響最終決策。
當然,性能與成本其實并不容易衡量,而且我們也沒辦法跨越不同云環境做出直觀比較。在今天的文章中,我們將共同利用CliQr測試方法幫助客戶做出考量,并從三大高人氣云選項——Amazon Web Services、微軟Azure以及谷歌Cloud Platform——與實例當中找到最適合示例應用程序集合的方案。
注意事項
作為一套企業級云管理平臺,CliQr CloudCenter的作用在于執行以下一系列黑盒測試。下面將要提到的各款應用程序都利用CliQr的應用配置機制進行建模,其會將多個應用層通過單一恒定模式配置至不同云平臺之上。除了提供治理(即由誰負責將哪些應用程序配置至何處)與計量(即具體實現成本)能力之外,CliQr CloudCenter當中還包含有一項黑盒基準測試功能,旨在將每款應用部署至目標云當中、利用JMeter為其提供負載并針對此次測試中各待評估云的每小時使用成本繪制數據吞吐圖表(即每秒事務數量)。
這里得出的結果并不一定符合大家對于特定云方案的認知。相反,這部分結果的存在意義在于回答“某應用適合配合哪種云”這一問題。隨著時間推移,微小差別可能會給各應用程序帶來巨大的后續影響,而且這里給出的結果不應被直接套用到其它場景當中。
應用程序
在本系列測試當中,將用到以下各應用程序。
Pet Clinic: 這款Spring框架Java示例應用屬于一款三層Web應用,利用單一Nginx虛擬機作為負載均衡器、兩套Tomcat虛擬機作為應用程序服務器外加一套MySQL虛擬機作為數據庫。該應用程序中的全部虛擬機都采用CentOS 6。其數據庫服務器接入一套2 GB塊存儲分卷。
OpenCart: 這款高人氣開源LAMP堆棧存儲端軟件包利用單一Apache虛擬機作為Web服務器,同時配合一套MySQL虛擬機作為數據庫。兩套虛擬機皆配置為運行Ubuntu 12.04。與Pet Clinic類似,該數據庫服務器接入一套2 GB塊存儲分卷。
BlogEngine: 利用單一虛擬機實現這套利用IIS與微軟SQL Server構建起的.Net博客平臺。
在這套組合當中,我們已經擁有了三款不同操作系統、三種不同編程語言以及三種不同應用程序層組合,這使得我們擁有更為寬泛的觀察視角。
實例類型
對不同云方案進行基準測試非常困難,因為我們很難對不同類型的實例進行一對一直接比較。很明顯,任何針對實例類型組合的測試工作都會帶來具有一定爭議性的結論。在本次實驗中,我們使用以下配置。
供應商實例CPU內存
谷歌n1-standard-227.5
谷歌n1-standard-4415
谷歌n1-standard-8830
谷歌n1-standard-161660
Amazonm4.large28
Amazonm4.xlarge416
Amazonm4.2xlarge832
Amazonm4.4xlarge1664
微軟中型 (A2)23.5
微軟大型 (A3)47
微軟超大型 (A4)814
這里的目標是比較不同云方案的CPU與內存配置水平。其中谷歌與Amazon實例基本可以進行一對一直接比較,而Azure實例類型則只與之對比CPU資源。
測試流程
在每一次測試當中,CliQr基準測試工具會將完整應用程序部署至待測云環境當中,創建一套額外的虛擬機以承載JMeter客戶端、執行所交付之JMeter腳本、衡量事務吞吐能力,最后關閉全部虛擬機。Pet Clinic當中的JMeter腳本提供5000個事務,OpenCart為6000個,BlogEngine則為7000個。
單一特定測試中的全部虛擬機都采用同樣的實例類型。舉例來說,面向Pet Clinic的谷歌n1-standard-4測試就需要利用n1-standard-4實例類型作為負載生成器、負載均衡器、兩套Tomcat服務器以及數據庫服務器。這種方式能夠簡化測試流程,但在真實世界的場景當中,人們通常會在測試工作中通過排列方式對特定應用層內的實例規模區間者基準衡量。
每項測試在同一周當中的五天內選擇一天進行。以下圖表所示之結果代表著每組排列的平均事務吞吐能力。
Pet Clinic測試結果
隨著更多虛擬機加入到負載處理工作當中,我們發現Pet Clinic的事務吞吐總量要高于我們示例中的其它測試應用。在這些測試當中,Amazon始終具備更出色的性能水平,谷歌次之,Azure排在最后。而進一步觀察相關數據,可以看到Amazon在各個實例類型層級亦擁有更低廉的使用成本。
在Amazon測試結果中,哪種實例類型最適合承載我們構建的應用程序?這具體取決于業務優先級決策,即以低成本為先還是以高速度為先。通過上圖可以清楚地看到,m4.xlarge實例類型的性能提升速度要低于與之對應的成本提升速度。這意味著最佳性價比選項應該是在m4.large與m4.xlarge之間(即Amazon的雙或者四CPU實例)。
OpenCart測試結果
大家可能還注意到,OpenCart測試產生的每秒事務數量要遠低于Pet Clinic測試,這可能是因為前者的應用程序架構更為簡單。在立足于不同云環境進行比較時,OpenCart結果更偏向于谷歌。這是否是因為雙層應用程序對網絡資源的需求更低,而Amazon的主要優勢恰恰表現在網絡層面?又或者說,這是因為谷歌云更擅長承載PHP應用程序,或者谷歌針對Ubuntu系統做出了精心調整?抑或是還有其它深層原因?我們恐怕還需要更為詳細的測試來揭曉這些答案,不過此次測試已經證明不同應用程序在不同云環境中會帶來極為顯著的運行效果差異。
BlogEngine測試結果
BlogEngine的吞吐量與OpenCart測試基本相當,不過這項測試使用了微軟技術方案,因此不出所料Azure在測試Java與LAMP應用時表現出一定優勢。而最佳性價比平衡點基本介于四與八CPU配置之間,其中性能表現在超出四CPU配置后增幅趨于穩定——我們在其它測試結果中看到了類似的情況。
總結陳詞
確定應用程序更適合運行在哪種云方案之上是一項非常復雜的任務。在這類測試工作當中,我們發現黑盒測試能夠幫助大家對跨云與單一公有云內不同實例類型的性能與成本做出有效比較。如果我們將VMware、OpenStack或者CloudStack等其它私有云實現方案納入進來,則能夠勾勒出更為明確的性價比對照結論。除此之外,我們還可以進一步擴展所使用的監測工具,例如Nagios、AppDynamics或者New Relic等等——它們能夠幫助我們了解Azure實例在低內存容量情況下會帶來怎樣的運行表現。
在公有云比照工作當中,CliQr CloudCenter為黑盒測試方案開了個好頭。必須強調的是,每家企業都擁有著不同的關鍵性指標作為優化基礎,而基準測試工具則能夠幫助大家更好地以一對一方式獲取比較結論,從而帶來更為明智的業務決策。