Google App Engine的“阿基裡斯之踵”

來源:互聯網
上載者:User

 

雖然在Google App Engine在最近一兩年獨領雲端運算PaaS領域的大旗,但是我在經過長時間對Google App Engine的學習和實踐之後,發覺其現有的實現存在很多不足,而這些瑕疵有可能成為其的“阿基裡斯之踵”,下面將具體分析App Engine在哪些方面存在問題。

App Engine的不足

主要集中在下面這三個方面:

設計之累

雖然App Engine在很多設計方面有其出彩和領先的地方,但是在App Engine中也採用有一些不恰當的Google式設計,雖然Google式設計對於類似Google搜尋這樣需要的海量計算和儲存能力的應用而言是非常適用的,但是對於追求反應速度,而不是海量能力的PaaS平台而言,不是特別適宜,就像Google院士Jeff Dean在一次演講所說的那樣:“為了增量做設計,但不為無限做設計”,而在App Engine中,卻為了一些不存在的Google式的需求作了Google式的設計,這方面的例子主要有兩個:

    1. 在資料存放區方面,使用了主要以儲存海量資料著稱的BigTable,雖然這樣能保證其應用能在App Engine上儲存海量的資料,但是在反應速度(Response Time)方面有一定的犧牲,特別是不支援在記憶體中預D讀取資料的情況下。可惜的是,對於大多數在App Engine上應用而言,它們更看重反應速度,而且類似這樣抱怨在Google App Engine的官方郵件清單中比比皆是,其中也包括對Memcache速度的不滿,國外一位部落格作者在談到App Engine的Memcache時,他有這樣一句評價:“這個Memcache不是我們所熟悉的那個Memcache”。
    2. 支援跨洲多資料中心同步,雖然多資料中心同步是一個不錯的實踐,但是由於光速的原因,使得在大洲之間傳輸資料的速度非常慢,而且成本很高,更重要的是使得整個資料存放區方面的架構的複雜性一下子提升了很大,而且有可能使本身已經非常緩慢的速度雪上加霜,對於這個使用者不是特別關注的問題,耗費太多的精力。如果由我來設計的話,應該讓使用者選定具體應用所在資料中心位置,而且這也是大多數使用者所推崇的,雖然這種設計不是Google所傾向的。

 

雖然對於有些應用而言,一些設計的缺失並不會形象到其整體的表現,但是由於PaaS平台本身複雜性,使其設計上不得不小心謹慎,任何失當都會造成非常嚴重的後果,希望App Engine的工程師們,能夠多多思量。

遠離標準

對於普通使用者而言,應用的通用性和遷移性是非常關鍵的,使用者希望應用能夠在外部的雲中和企業的資料中心之間進行遷移,所以應用如果能基於標準的話,那將會非常有益處,就好像,像父親這樣中老年股民在選擇炒股軟體,他們所關心的不是功能是否強大,而是快速鍵是否熟悉。而在非常關鍵的標準方面,App Engine在本來能所作為的Java版中並沒有做的非常好,主要有下面兩個問題:

    1. 在資料存放區方面,雖然App Engine對最新的JPA有所支援,但是App Engine重點提供對JDO支援,但JDO在整個業界的接受度非常有限,並且已經被官方拋棄,而且比較陳舊。
    2. 夾雜一些私人的API,這種現象在資料存放區方面很常見,比如,對Key和交易處理就使用很多私人的API。

 

雖然對標準沒有很好地支援,對於那些專註於App Engine平台的程式員而言,他們並不會受到極大的影響,但是對於那些希望能將應用在AppEngine和企業資料中心之間進行遷移的使用者而言,是極為關鍵的,因為這將顯著地增加遷移的成本。

不夠重視

雖然App Engine現在還在不斷的開發中,但是由於其潛在的利潤和Google其它業務相比低很多,所以相對於搜尋、Andorid和Chrome相比,其開發進度和另一個產品Chrome OS一樣較緩慢,到現在為止還處於類似公測的階段。

總的來說,App Engine還存在很多不足,個人希望App Engine不要像Google Wave那樣隕落,而是能繼續健康的發展下去,也不想看到類似Max Ross這樣資深工程師,也像Google Wave之父Lars Rasmussen那樣黯然離開。在文章的接下來的部分,將討論YunEngine的一些潛在優勢。

YunEngine的優勢

雖然相對於App Engine而言,YunEngine起步晚了很多,但是YunEngine也有它一定的後發優勢,就像當年Google並不是第一個做搜尋的那樣。下面其中最主要的三點:

為PaaS而設計

雖然YunEngine的後端也採用類似於BigTable的YunTable,但是由於YunTable在設計上考慮到反應速度的情況,而且在設計方面,我們有自主權,所以會讓YunTable為更好支援PaaS平台而不斷最佳化。

堅持標準

雖然在初期階段,YunEngine並不會提供對很多標準的支援,但是在會確保不加入任何私人的API,這樣能保證應用的遷移性。

極為專註

由於YunEngine對我而言,是一個核心的項目,我會盡全力把YunEngine給做好的,並且不斷地最佳化。

 

最後,雖然在即將到來的公測期間,YunEngine還會存在很多Bug或者問題,但是只要經過這些關卡,我堅信YunEngine將會是超越Google App Engine的存在,就像《海賊王》中黑鬍子所說的那樣:“人的夢想是不會終結的!”。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.