Google App Engine和Google Compute Engine有什么区别?

问题描述 投票:342回答:8

我想知道App Engine和Compute Engine之间有什么区别。任何人都可以向我解释这个区别吗?

google-app-engine google-compute-engine google-cloud-platform
8个回答
377
投票

App Engine是一种平台即服务。这意味着您只需部署代码,平台即可为您完成其他任务。例如,如果您的应用程序变得非常成功,App Engine将自动创建更多实例来处理增加的卷。

Read more about App Engine

计算引擎是基础架构即服务。您必须创建和配置自己的虚拟机实例。它为您提供了更大的灵活性,并且通常比App Engine的成本低得多。缺点是您必须自己管理您的应用程序和虚拟机。

Read more about Compute Engine

如有必要,您可以混合App Engine和Compute Engine。它们都与Google Cloud Platform的其他部分配合得很好。

编辑(2016年5月):

一个更重要的区别:如果没有请求进入,在App Engine上运行的项目可以缩小到零实例。这在开发阶段非常有用,因为您可以持续数周而无需超过实时小时的慷慨免费配额。灵活的运行时(即“受管VM”)需要至少一个实例不断运行。

编辑(2017年4月):

云功能(目前处于测试阶段)是抽象方面的App Engine的下一级别 - 没有实例!它允许开发人员部署一小部分代码,这些代码可以响应不同的事件而执行,这些事件可能包括HTTP请求,云存储中的更改等。

与App Engine最大的区别在于功能的价格是每100毫秒,而App Engine的实例仅在15分钟不活动后关闭。另一个优点是Cloud Functions立即执行,而对App Engine的调用可能需要一个新实例 - 冷启动新实例可能需要几秒或更长时间(取决于运行时和代码)。

这使得云功能成为(a)罕见呼叫的理想选择 - 不需要保留实例以防万一发生,(b)快速改变实例经常旋转和关闭的负载,以及可能更多的用例。

Read more about Cloud Functions


74
投票

基本的区别是Google App Engine (GAE)Platform as a Service (PaaS)Google Compute Engine (GCE)Infrastructure as a Service (IaaS)

要在GAE中运行您的应用程序,您只需编写代码并将其部署到GAE中,没有其他问题。由于GAE是完全可扩展的,因此它会在流量增加时自动获取更多实例,并在流量减少时减少实例。您将需要为您真正使用的资源付费,我的意思是,您需要为您的应用程序真正使用的实例时间,传输数据,存储等付费。但是限制是,您可以仅使用Python,PHP,Java,NodeJS,.NET,Ruby和** Go创建应用程序。

另一方面,GCE以虚拟机的形式为您提供完整的基础架构。您可以完全控制这些VM的环境和运行时,因为您可以在那里编写或安装任何程序。实际上,GCE是虚拟使用Google数据中心的方式。在GCE中,您必须使用Load Balancer手动配置基础架构以处理可伸缩性。

GAE和GCE都是Google Cloud Platform的一部分。

更新:2014年3月,Google在App Engine下宣布了一项名为Managed Virtual Machine的新服务。托管虚拟机为应用程序引擎应用程序提供了比应用程序平台,CPU和内存选项更多的灵活性。与GCE一样,您可以在这些VM中为应用程序引擎应用程序创建自定义运行时环境。实际上,App Engine的托管虚拟机在一定程度上模糊了IAAS和PAAS之间的边界。


50
投票

简单地说:计算引擎为您提供了一个您完全控制/负责的服务器。您可以直接访问操作系统,并安装所需的所有软件,通常是Web服务器,数据库等...

在app引擎中,您不管理任何底层软件的操作系统。你只上传代码(Java,PHP,Python或Go)和瞧 - 它只是运行...

应用程序引擎可以节省大量的头痛,特别是对于没有经验的人来说,但它有两个明显的缺点:1。更昂贵(但它确实有一个免费配额计算引擎没有)2。你控制较少,因此某些事情不是可能的,或者只能以一种特定的方式实现(例如保存和写入文件)。


24
投票

或者使其更简单(因为有时我们无法区分GAE标准和GAE Flex):

计算引擎类似于虚拟PC,例如,您可以在其中部署小型网站+数据库。您可以管理所有内容,包括控制已安装的磁盘驱如果您部署网站,则负责设置DNS等。

Google App Engine(标准版)就像一个只读沙盒文件夹,您可以在其中上传要执行的代码,而不用担心其余部分(是:只读 - 为您安装了一组固定的库,您无法部署第三方图书馆随意)。 DNS /子域等更容易映射。

谷歌应用引擎(灵活)实际上就像一个完整的文件系统(不仅仅是一个锁定的文件夹),你的功能比标准引擎更强大,例如您具有读/写权限(但与计算引擎相比较少)。在GAE标准中,您为您安装了一组固定的库,您无法随意部署第三方库。在Flexible环境中,您可以安装应用程序所依赖的任何库,包括自定义构建环境(例如Python 3)。

尽管GAE标准处理起来非常麻烦(尽管Google让它听起来很简单),但是当它处于压力之下时,它的扩展性非常好。这很麻烦,因为您需要测试并确保与锁定环境的兼容性,并确保您使用的任何第三方库不使用您不知道哪些可能无法在GAE标准上运行的其他第三方库。在实践中设置它需要更长的时间,但对于简单部署而言,从长远来看可能会更有价值。


23
投票

除了上面的App Engine与计算引擎注释之外,此处的列表还包括与Google Kubernete Engine的比较以及基于从小到大的各种应用程序的经验的一些注释。有关更多要点,请参阅Google Cloud Platform文档,页面Choosing an App Engine Environment上的App Engine Standard和Flex功能的高级描述。有关App Engine和Kubernetes部署的另一个比较,请参阅Daz Wilkin App Engine Flex or Kubernetes Engine的帖子。

App Engine标准版

优点

  • 对于低流量应用而言,直接成本和维护应用的成本非常经济。
  • 自动缩放很快。 App Engine中的自动缩放基于轻量级instance classes F1-F4
  • 版本管理和traffic splitting快速方便。这些功能本身内置于App Engine(标准版和Flex版)中。
  • 最小的管理,开发人员只需关注他们的应用程序。与GKE一样,开发人员无需担心像GCE一样可靠地管理VM,也不需要像GKE一样了解集群。
  • 访问数据存储区很快。首次发布App Engine时,运行时与Datastore位于同一位置。后来的Datastore被拆分为独立产品Cloud Datastore,但App Engine标准服务与数据存储的共同位置仍然存在。
  • 支持访问Memcache。
  • App Engine沙箱非常安全。与GCE或其他虚拟机上的开发相比,您需要自己努力防止虚拟机在操作系统级别被接管,默认情况下,App Engine Standard沙箱相对安全。

缺点

  • 通常比其他环境更受限制实例更小。虽然这有利于快速自动扩展,但许多应用程序可以从更大的实例中受益,例如GCE实例大小高达96个内核。
  • 网络未与GCE集成
  • 无法将App Engine置于Google Cloud Load Balancer之后。仅限于支持的运行时:Python 2.7,Java 7和8,Go 1.6-1.9和PHP 5.5。在Java中,有一些对Servlet的支持,但不支持完整的J2EE标准。

App Engine Flex

优点

  • 可以使用自定义运行时
  • 与GCE网络的本地集成
  • 版本和流量管理方便,与标准相同
  • 较大的实例大小可能更适合于大型复杂应用程序,尤其是可以使用大量内存的Java应用程序

缺点

  • 网络集成并不完美 - 不与内部负载平衡器或共享虚拟私有云集成
  • 访问托管的Memcache通常不可用

谷歌Kubernetes引擎

优点

  • 与容器的本机集成允许自定义运行时和对集群配置的更大控制。
  • 体现了许多使用虚拟机的最佳实践,例如immutable runtime environments以及回滚到以前版本的简单能力
  • 提供一致且可重复的部署框架
  • 基于开放标准,特别是Kubernetes,用于云和本地之间的可移植性。
  • 可以使用Docker容器和Google Container Registry完成版本管理

缺点

  • 交通分裂和管理是自己动手,可能利用Istio和Envoy
  • 一些管理开销
  • 一段时间可以提升Kubernetes概念,例如pod,部署,服务,入口和命名空间
  • 需要暴露一些公共IP,除非使用Private Clusters,现在处于测试阶段,消除了这种需求,但您仍然需要提供对将运行kubectl命令的位置的访问。
  • 监控集成并不完美
  • 虽然Kubernetes Engine本身支持L3内部负载平衡,但L7内部负载平衡是自己动手,可能利用Envoy

计算引擎

优点

  • 易于提升 - 无需增加Kubernetes或App Engine,只需重复使用您之前的经验。这可能是直接使用Compute Engine的主要原因。
  • 完全控制 - 您可以直接利用许多计算引擎功能并安装最新的所有您喜欢的东西,以保持最前沿。
  • 不需要公共IP。如果在公共IP上暴露任何内容,某些遗留软件可能难以锁定。
  • 您可以利用容器优化的操作系统来运行Docker容器

缺点

  • 虽然您可以重复使用来自各个地方的解决方案,包括Cloud Launcher,但大多数情况下都是自己动手,这对于提高可靠性和安全性可能具有挑战性。
  • 更多管理开销。 Compute Engine有许多管理工具,但他们不一定了解您如何部署应用程序,例如App Engine和Kubernetes Engine监控工具。
  • 自动缩放基于GCE实例,可能比App Engine慢
  • 趋势是在雪花GCE实例上安装软件,这可能需要一些维护工作

10
投票

App Engine使开发人员能够控制Google Compute Engine核心,并为Google Compute Engine数据处理应用程序提供面向Web的前端。

另一方面,Compute Engine为您的虚拟机提供直接和完整的操作系统管理。要展示您的应用程序,您将需要资源,而Google云端存储非常适合存储您的资产和数据,无论它们用于何种用途。您可以通过全球托管获得快速数据访问。可靠性保证在99.95%的正常运行时间内,Google还提供备份和恢复数据的功能,不管您信不信,存储是无限的。

您可以使用Google云端存储管理资产,存储,检索,显示和删除资产。您还可以快速读取和写入保存在云存储中的平面数据表。 Google Cloud阵容中的下一个是BigQuery。使用BigQuery,您可以在几秒钟内分析大量数据,我们正在谈论数百万条记录。通过简单的UI或Representational State Transfer或REST接口处理访问。

正如您可能怀疑的那样,数据存储不是问题,并且可以扩展到数百TB。 BigQuery可以通过许多客户端库访问,包括Java,.NET,Python,Go,Ruby,PHP和Javascript。可以使用类似SQL的语法NoSQL,可以通过这些客户端库或Web用户界面访问。最后,我们来谈谈Google云平台数据库选项,Cloud SQL和Cloud Datastore。

有一个主要的区别。 Cloud SQL用于关系数据库,主要是MySQL,而Cloud Datastore用于使用noSQL的非关系​​数据库。使用Cloud SQL,您可以选择在美国,欧洲或亚洲托管,每个数据库实例具有100 GB的存储空间和16 GB的RAM。

Cloud Datastore每月最多可提供50 K读/写指令,每月也可存储1 GB数据。但是,如果超过这些配额,则需要付费。 App Engine还可以与其他鲜为人知,更具针对性的Google云平台成员合作,包括用于创建API后端的Cloud Endpoints,用于数据分析和趋势预测的Google Prediction API,或用于多语言输出的Google Translate API。

虽然您可以单独使用App Engine,但当您考虑到其Google云平台平台服务能够轻松高效地工作时,它可能会飙升。


7
投票

如前所述,Google Compute Engine(GCE)是基础架构即服务(IaaS),而Google App Engine(GAE)是平台即服务(PaaS)。您可以查看下图以更好的方式理解差异(取自here并更好地解释) -

Cloud Computing Types

Google Compute Engine GCE是Google Cloud Platform(GCP)提供的一项重要服务,因为大多数GCP服务在管理层下使用GCE实例(VM)(不确定哪一个没有)。这包括App Engine,云功能,Kubernetes引擎(早期容器引擎),Cloud SQL等.GCE实例是那里最可定制的单元,因此只应在您的应用程序无法在任何其他GCP服务上运行时使用。大多数时候,人们使用GCE将其Pre-Prem应用程序转移到GCP,因为它只需要很少的更改。之后,他们可以选择将其他GCP服务用于其应用的单独组件。

Google App Engine GAE是GCP提供的第一项服务(在Google进入云业务之前很久)。它从0到无限制实例自动缩放(它在下面使用GCE)。它有2种口味的标准环境和灵活的环境。

标准环境非常快,当没有人使用你的应用程序时可以缩小到0实例,在几秒钟内可以放大和缩小,并且有专门的Google服务和库用于缓存,身份验证等。标准环境的警告是它非常严格因为它在沙箱中运行。您必须仅为特定编程语言使用托管运行时。最近添加的是Node.js(8.x)和Python 3.x.较旧的运行时可用于Go,PHP,Python 2.7,Java等。

灵活环境更加开放,因为它允许您使用自定义运行时,因为它使用docker容器。因此,如果运行时在提供的运行时中不可用,则始终可以为执行环境创建自己的dockerfile。需要注意的是,它需要至少运行一个实例,即使没有人正在使用你的应用程序,加上向上和向下扩展需要几分钟。

不要将GAE flexible与Kubernetes Engine混淆,因为后者使用实际的Kubernetes并提供更多的自定义和功能。当您需要无状态容器并且您的应用程序仅依赖HTTP或HTTPS协议时,GAE Flex非常有用。对于其他协议,Kubernetes Engine(GKE)或GCE是您唯一的选择。检查my other answer以获得更好的解释。


0
投票

我将以对我有意义的方式解释它:

  • PaaS(计算引擎):如果您是自己动手的人或拥有IT团队并且您只想在具有特定操作系统(例如Linux)的云上租用计算机,那么您可以使用计算引擎。你必须自己做所有事情。
  • SaaS(App Engine):如果您是(例如)python程序员,并且您希望在云上租用预先配置的计算机,该计算机具有运行的Web服务器的Linux和具有必要模块和一些插件的最新python 3要与其他外部服务集成,请转到App Engine。
  • 微服务(云功能):如果您想编写一系列执行特定工作的API(功能),您可以使用Google Cloud Functions。您只需关注这些特定功能,剩下的工作就是为您完成,以便将您的功能公开为微服务。

随着您的深入,您会失去一些灵活性,但您并不担心不必要的技术方面。您还需要支付更多费用,但您可以节省支持服务的时间和成本(IT部分):其他人(谷歌)正在为您做这件事。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.