PaaS 調研:GAE與 AWS(上)

歡迎你們前往騰訊雲社區,獲取更多騰訊海量技術實踐乾貨哦~
做者:韓偉 

原由

PaaS做爲「雲」的概念,已經流行了好久。從使用的角度上看,彷佛就是:寫一個PHP,而後能夠直接傳到服務器上,用戶就能經過某個URL訪問你寫的PHP了。——這確實極大的節省了開發和運維的工做量,由於這幾乎徹底不用去部署安裝任何服務器端的軟件,甚至數據庫也給你裝好了。可是由於各類各樣的緣由,在國內PaaS的使用並不很是普遍,有多是由於沒有好的服務提供商(因爲偉大牆的緣由致使某些服務沒法訪問)。另外,做爲一個遊戲服務器端的開發者,也在試圖從PaaS的概念中,學習如何提升遊戲開發、運營效率的方法。因此就有了如下的研究。數據庫

本文主要的研究對象是Google出品的App Engine,以及Amazone的AWS兩個產品。實際上微軟、IBM也有相似的PaaS(Azure),因爲時間精力緣由只是粗粗瀏覽,並未深刻。另外國內如阿里雲也有一些近似PaaS的服務,但因爲名氣不大,也不在這裏描述了。編程

做爲一個PaaS,咱們能夠注意到,主要會分紅幾個層面來看,能比較準確的把握其特性。不然紛繁的技術名詞,各類支持方案,會讓人眼花繚亂。這幾個層面就是:後端

  • 應用場景:一款PaaS但願解決的重點問題
  • 開發支持:PaaS是一種容許用戶的代碼運行的服務,那麼能夠運行怎樣的代碼,怎樣方便用戶上傳本身的代碼(或程序),如何管理這些代碼,是一個重要的問題。
  • 運維管理:PaaS最讓人感到方便的,就是幾乎都號稱「無需用戶干預」的自動化運維,不須要用戶本身去部署服務器、配置軟件等等,但這種能力究竟是怎樣,也是一個很是重要的部分。
  • 關聯配套:一個在PaaS上運行的程序,是完成不了太多的任務的,起碼須要有一個數據庫之類的存儲軟件。實際上的商業應用中,除了數據庫之外,還可能須要大量其餘的配套程序,才能讓你的業務邏輯程序運行完整,好比Memcache,甚至Crontab這樣的程序。因爲PaaS號稱「幫你運維」一切,因此不少都直接把這些服務也安裝部署好給你用,你只要用服務商提供的接入參數,直接使用便可。那麼服務商提供怎樣的配套服務,有什麼能力,是PaaS服務裏面一個相當重要的特性,也是各類服務商「爭奇鬥豔」的主戰場。

GAE(Google App Engine)

應用場景緩存

Google本身的Web服務,是具有一整套「基礎設施」的,包括Web應用(如PHP)的運行框架、BigTable、GFS等等廣爲人知的服務器端軟件。因此Google App Engine的設計目標,就是讓用戶能夠很方便的使用這一整套「基礎設施」。從某種意義上來講,爲了使用Google的配套服務,可能會比託管運行本身的Web應用程序,更吸引人。Google的基礎設施,通常都是以「分佈式」爲賣點,提供超大承載量,和高度可用性。若是要本身去重建這一整套體系,對於通常的公司來講都幾乎是不可能的。但實際上真正須要用到這麼大的承載量,也極可能不是「通常的公司」。不過慕名而來的使用者,在Google的保證下得到信心上的安慰,也是一種重要的價值。服務器

開發支持

Google不愧是以技術著稱的公司,其運行容器,支持Python\Java\PHP\Go等等幾乎全部主流的編程語言,及這些編程語言在Web應用程序方面的標準框架,如Servlet for Java。看到這裏,不由嘆息於,遊戲領域並無什麼「應用框架標準」——因此遊戲服務器程序的模型真是五花八門無奇不有,這也讓遊戲服務的提供變得異常繁複困難。微信

GAE提供的開發工具,能夠幫助開發者很方便的測試和部署代碼到PaaS上。這些開發工具包括一套結合Eclipse的IDE插件,以及一組命令上傳部署工具。用戶可使用這些工具,好像開發測試本地程序同樣來使用。固然使用以前仍是須要配置本身在GAE上的賬號之類的參數。網絡

GAE另一個頗有特點(也許是缺點)的地方,就是開發者只能在「沙箱」裏運行本身的程序,所以你不能用到代碼去操做socket、本地文件、線程等等「原生資源」。由於有這樣的約束,因此開發者上傳的APP能夠被認爲是「無損」的自動部署到不一樣的硬件、網絡環境上。同時,GAE也提供了大量的配套服務,用來補償沙箱環境帶來的功能缺失。app

運維管理

GAE的運維管理從代碼部署開始就是全套的。首先是支持從Maven這類代碼管理庫拉取程序部署,其次是能夠部署到Google提供的全球機房,期間提供自動擴容和負載均衡。其中比較值得注意的是,它的運維環境還支持負載灰度和資源配額,也就是能夠設置各類參數,來限制緩存空間、實例數、最大線程數、存儲空間、使用帶寬等等。這些配額並非簡單的基於IaaS的功能繼承而來,而是能夠針對應用容器,或者各類配套服務爲目標來設置。負載均衡

GAE另一個很棒的功能是所謂GoogleAnalytics功能。幾乎全部雲服務商都會帶統計功能,可是Google Anlytics由於是針對GAE這種全託管沙箱服務作統計分析的,因此能夠得到不少具體的服務統計的細節指標,而不只僅是操做系統層次的CPU、內存、帶寬這種大路貨。咱們本身部署任何一個服務,對於特定的服務進程,也會想要詳盡的統計分析數據,用以監控問題,若是是用GAE,這些服務都是Google提供的,固然統計也是它的應盡職責。框架

做爲一個Web App的容器,GAE在運維配置工具上,提供了全套Web界面的操做軟件——Google Cloud Platform Console,能夠配置諸如URL、靜態資源、MIME類型、根目錄、SSL等幾乎全部WebServer的配置內容。用了多年的Web Server配置文件終於能夠束之高閣了。固然其餘的管理服務,也都提供了WEB的配置管理工具。若是你不想手工的去配置這些,也可使用GAE提供的Restful接口,去用代碼操做這些服務配置,這樣你能夠本身寫一個喜歡的管理軟件,或者是寫個自動化的工具去作這類的配置工做。

關聯配套

GAE提供的配套服務,都是那些大名鼎鼎的Google系基礎服務,分爲兩大類型,數十種細類:

存儲服務

  • App Engine Datastore:NoSQL對象存儲服務
  • Google Cloud SQL:在GAE上的MySQL,因爲是關係數據庫,因此不能自動擴容
  • Google Cloud Storage:以Restful接口使用的分佈式文件系統

輔助服務

  • 定時任務:相似crontab這種
  • Memcache:最多見的Web後端緩存服務
  • Blobstore:一種「數據塊」存儲服務
  • Oauth API:身份鑑權認證服務
  • 各類Messaging服務,包括電子郵件、短信、語音等等……
  • 全文搜索服務
  • 圖形處理的API庫
  • 各類經常使用的服務器端編程庫

從上面來看,最值得關注就是存儲類服務,畢竟Google是處理大數據的互聯網鼻祖。因爲通常的商業互聯網服務,都很依賴一個容量大、方便擴容的數據存儲層,因此Google這套東西是很是有價值的。惋惜做爲遊戲領域,數據大卻是大,就是其數據關係通常比較簡單,就是玩家的存檔數據而已,因此遊戲開發商若是用這些BigTable、GFS爲基礎的服務,從延遲性和成本上看,好像都不是特別有必要。

另外從輔助服務來看,細節到連crontab都提供,更不用說各類服務器開發庫,只有你想不到,沒有他沒準備到的。這對於開發者來講是一個很方便的地方,由於一來不須要處處找各類開源庫,二來也無需費口舌去和同事統一各類開發庫,只須要用GAE的就行了。

PaaS調研:GAE與AWS(下)

本文來源於 韓大微信公衆號

相關閱讀

 
 
此文已由做者受權騰訊雲技術社區發佈,轉載請註明文章出處
原文連接:https://cloud.tencent.com/community/article/543618
海量技術實踐經驗,盡在騰訊雲社區
海量技術實踐經驗,盡在騰訊雲社區! https://cloud.tencent.com/community
相關文章
相關標籤/搜索