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
相关文章
相关标签/搜索