在驚悚電影中似乎都有這樣一個情節,主人公說「這很容易...... 簡直是太容易了」,然後所有的事情就開始土崩瓦解。 當我開始測試市場上的頂級JAVA雲計算時,我發現這一情節正在自己身上重演。
與其他人相比,企業研發人員需要對這些可能性更擔憂。 當雲計算中出現了讓生活變得更容易的新方案時,普通的電腦使用者會感到興奮。 他們會採用基於雲的電子郵件,如果電子郵件丟失,他們只能聳聳肩,因為電子郵件經常丟失,有時就像作祈禱那樣頻繁。
企業研發人員不能如此樂觀。 每一個能夠讓我們進行一鍵配置的選擇都會讓我們永遠的被禁錮在其中。 如果我們採用了一個過於容易的雲計算並讓它為我們做太多的事,那麼我們就不太可能有什麼發展。
「被套牢」的危險看起來隱藏在每一個角落裡,這未必是最糟糕的部分。 如果除去我們需要的特色外,我們對雲計算在各方面都很滿意,而這個特色又是雲計算供應商無法或者是不想提供給我們,那會發生什麼情況呢?雲計算將成為一個一成不變的世界。
讓我們感到安慰的是,雲計算研發人員已經對這一情況感到了不安。 他們知道,客戶希望得到一鍵式解決方案和高度的自動化,以讓生活變得更加容易。 但是這意味著發推出一些非標準或是無法讓使用者自由調整的介面。 雲計算研發人員必須要搞清楚市場是否需要讓雲計算做每一件事,以及客戶是否想擁有充分的自由以避免 「被套牢」。
對此,我測試了4個主要的JAVA雲——CloudBees、谷歌App Engine、紅帽OpenShift和VMware的Cloud Foundry。 它們都有許多解決方案。 一些雲依靠標準工具以獲取標準WAR檔和傳輸資訊。 另一些也有著自己許多獨特的辦法。
雲計算實驗:JAVA版本
JAVA雲計算方案變得越來越好、越來越複雜,但是他們遠遠稱不上是一套完成的產品。 這裡的幾套工具就可以完整的展出它們尚未完全成熟的狀態。 註冊表單經常提示我們雲計算只是一個測試應用,僅針對研發而非針對生產工作。 實際上,這他們更準確的稱呼或許應該是雲計算postAlpha測試版或是preBeta測試版。
由於都是在摸著石頭過河,因此即使已經創建的雲計算也會經常發生變化。 由於沒有人真正知道負載和成本如何增加,因此價格會進行調整,有時候調整的幅度很大。 雲計算銷售商也不知道如何確定他們的成本,所以在他們報價幾百萬的處理量價格為多少美元時也只是全憑猜測。
未來,對於買家和賣家來說,定價可能是一件非常困難,並極具挑戰性的工作。 人們已經對谷歌停止補貼其App Engine的作法感到非常失望。 一些使用者抱怨每一次點擊都使得他們的成本增長兩倍,甚至是三倍。 但是誰又能夠指責谷歌呢?儘管谷歌擁有優秀的金融工程師,但是我不能確定他們是否知道Big Table資料倉儲的每次往返的合理價格。 它們可能會受到西北部大雨而波動。 因為谷歌的一些最新資料中心就建在那裡,那裡的水利發電是最便宜的能源。
或許是我想多了。 但是總會要發生錯誤,價格將出現波動。 雲計算具有更高的靈活性和自動化程度,這為我們節省了雇人管理這些機架和確保資料平穩傳輸的成本。 如果Web 3.0應用取得了巨大成功,而雲計算卻非常昂貴,這仍然可以帶來足夠的盈利以支付將應用移植到一套內部伺服器所進行的全部程式改編。 如果這些Web程式的盈利不足以抵消成本,那麼體驗價格不會下降。 雲計算最終會發生變化:他們會簡化實驗並進行調整。
選擇雲計算涉及到大量實驗。 最簡單的一項是從亞馬遜或Rackspace雲計算那裡發現機器,但是這一操作比服務提供者承諾的要複雜很多。 是的,我按下按鍵,在幾秒內就可以啟動一台電腦,但是隨後我卻要花上數個小時進行連線,以安裝JVM和剩下的堆疊。
如果你有時間和意願來創建一個帶有你喜愛的軟體的機器鏡像,那麼原始的雲電腦器將會滿足你對雲計算的大多數期望,但同時也將你「套牢」。 亞馬遜和Rackspace讓存儲鏡像和複製變得很容易。 你需要選擇軟體和確定需要多少台機器。 理論上,你隨時可以獲得更多的機器。 我曾經嘗試過在日常交易處理中生成新機器,這很棒,每小時只需要花費1.5美分。 在工作完成後,它們就會消失。
當然,你必須要對自己有一個全面的認識。 你是想要100台虛擬機器還是102台呢?這是一個矛盾的問題。 你要控制你的成本,但你又沒有時間卻做出反應,除非你在這方面擁有更高的智慧化。
JAVA雲:谷歌App Engine
在使用谷歌App Engine的過程中,我們會感到興奮和舒服。 其作為一款先進的工具正在慢慢成熟,並且更容易被使用者所理解和使用,也許是因為使用者已經接受了其中的許多理念。
基礎的架構主題是相同的。 你上傳帶有業務邏輯的核心代碼,App Engine將部署充足的實例以滿足你的需求。 如果你想在會話間存儲或同步你的工作,你必需使用谷歌專用的資料存儲和緩存,不過所有的東西感覺都相當優秀。 App Engine的第一個版本使用了Python,但是現在你可以增加帶有JSP、小服務程式和伺服器端邏輯的JAVA WAR檔。 通過獨立的Web介面進行管理。 命令列問題幾乎已經不再出現。
儘管架構和資料存儲沒有變化,但是工具卻更為複雜和豐富,通過許多功能和按鍵可以調整配額和性能。 我使用了整套的Eclipse外掛程式創建了應用,整個環境與NetBeans和IntelliJ很相似。 工具還將谷歌Web Toolkit與App Engine整合在了一起,盡可能的在JAVA中完成你的所有程式設計。 如果你不能忍受JavaScript或想在伺服器和用戶端上使用相同的代碼,那麼谷歌的Web Toolkit可以為瀏覽器翻譯你的JAVA。
我認為對於程式師來說最大的挑戰是適應谷歌的非關聯式資料庫。 當谷歌App Engine首次出現,並沒有太多的NoSQL專案。 存儲「名稱/值」對的集合這一概念還是件新奇的事物。 任何有著一定的NoSQL經驗的App Engine使用者都不會被這一如此簡潔的解決方案所震驚。 但是任何考慮連接和規範資料的人需要打破以往的陳規,適應新的方式。
App Engine提供兩個級別的資料庫,所以架構師必須確定是否為額外的能力付款。 基本模式是讓一個資料中心成為主資料中心其它的成為附屬資料中心。 如果資料中心宕機或執行預定的維護任務,那麼你的資料將無法存儲。 你必須要做好面對「預定的唯讀期」的準備。 許多新的Web應用(如臉譜)能夠很輕鬆的克服這類小故障,但許多需要金融級的可獲得性和一致性的應用則需要考慮另的辦法。
低租金的主-從配置被認為只有高端版本成本的三分之一,且寫入成本只為高端同類產品的八分之五。 不過,在寫入速度上,低租金版本比高端雲計算可能要慢兩倍,並且可能還存在無法寫入的時候。 你必須要關注這些數位,因為機制中還包括了大量隱性支出。
JAVA雲:Cloud Foundry
Spring是JAVA中最乾淨的架構。 這讓人們使用其作為JAVA雲計算基礎變得很有意義。 SpringSource如今已經成為了VMware的一部分,並且成為了Cloud Foundry的領導者。 因此,其被創建在VMware虛擬機器頂端並不意外。
使用Cloud Foundry的最早方式是通過SpringSource定制版的Eclipse利用範本創建一個Spring專案。 該工具被稱為SpringSource工具套件。 我嘗試在自己的Eclipse版本安裝了一些SpringSource工具,但是庫的正確收集並不容易發現。 SpringSource工具套件則非常簡單。
Cloud Foundry並不局限于Spring,其還支援Rails、Sinatra、Scala、Grails和Node.js。 即使你不寫任何JAVA,它們也能夠在JVM上運行。 Cloud Foundry不久剛剛宣佈支援PHP和 Python/Django。
目前VMware仍然對其價格保持沉默。 產品還處於測試階段,VMware還無法對其進行充分的定價。 Cloud Foundry虛擬機器開放程度較高,你可以下載Micro Cloud Foundry——Cloud Foundry環境中的便攜虛擬機器鏡像,然後在自己帶有VMware Player的環境中運行。 其核心代碼在cloudfoundry.org中被開放,並且大部分被Apache許可證所涵養。
JAVA雲:CloudBees
CloudBees不僅提供了一個部署應用的雲計算,而且提供了一個創建它們的工具。 你的帳戶不僅僅是將你的資料服務于大眾的一個方式。 其還有代碼庫(Git或Subversion)和監聽你輸入的每一個代碼的Jenkins伺服器。
我能夠輸入代碼並等待Jenkins去創建、測試和、彙集檔並將其部署至伺服器中。 如果我需要更多,這裡有大量的其它服務、外掛程式和交換器。
其原理是CloudBees有大量平等工作的高端盒子,以用於創建大量代碼。 你不再需要等待你的桌面機器頁入適當的庫,取而代之的是讓Jenkins分配你的模組至CloudBees中。
但是我並沒有看到什麼優勢。 我的Web應用只是一個JSP。 連接Jenkins的Web介面一直出現一個進度條並有一個閃動的藍色球體,這表明我的本地機器能夠比CloudBees資料中心更快的創建這些檔。
CloudBees雲的實質是Tomcat和MySQL,不過一些經過緊密整合的協力廠商資料庫也可以使用。 比如Cloudant提供了CouchDB服務,MongoHQ提供MongoDB資料庫服務。
CloudBees還提供許多免費服務,不過限制也非常嚴格。 只有臨時性的研發人員喜歡它們。 任何長期從事研發工作的人員都會快速的升級到付費服務。
JAVA雲:紅帽的OpenShift
紅帽並不僅僅滿足于推出個Linux工具集合。 目前他們也開始進軍雲計算,他們的雲計算平臺被稱為OpenShift,可快速向等待接受JAVA、Python、PHP或Ruby應用的機器進行部署。 紅帽雲計算提供了一套將應用部署至亞馬遜EC2的工具集合。
OpenShift並不是以JAVA為中心。 無論你創建一個JAVA應用或是其它類型的應用,它都可以説明解決許多部署問題。 標準的JAVA應用是由Maven創建的JBoss Application Server 7堆疊。 這是一個很新的選項,我並沒有發現其在最新的HTML檔當中。 相反,我是無意中在命令列中敲擊-h時發現的。
當然,OpenShift對於那些喜歡使用命令列的人來說是一個好工具。 我敲入了一些命令列就可以了,一個JBoss應用就可以被部署、運行並做好了定制的準備,並且升級也非常的簡單。
你提供帳戶資訊後,名為Flex的紅帽工具會處理部署問題。 如果你想對OpenShift進行測試,那麼你可以免費試用30天。 不過,這些工具還處理測試階段,只能用於研發工作。
(責任編輯:admin)