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

时间:2014-03-27 19:13:17

标签: google-app-engine google-compute-engine google-cloud-platform

我想知道App Engine和Pro之间的区别是什么?计算引擎是。有人可以向我解释一下这个区别吗?

11 个答案:

答案 0 :(得分:368)

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上运行的项目可以缩小到零实例。这在开发阶段非常有用,因为您可以持续数周而无需超过实例的慷慨免费配额 - 小时。灵活的运行时(即“托管的虚拟机”)需要至少一个实例不断运行。

编辑(2017年4月):

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

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

这使得Cloud Functions非常适合(a)罕见的调用 - 不需要保存实例以防万一发生,(b)快速更改实例经常旋转和关闭的负载,以及可能更多的用例。 / p>

Read more about Cloud Functions

答案 1 :(得分: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以虚拟机的形式为您提供完整的基础架构。您可以完全控制这些虚拟机'环境和运行时,因为您可以在那里编写或安装任何程序。实际上,GCE是虚拟使用Google数据中心的方式。在GCE中,您必须使用 Load Balancer 手动配置基础架构以处理可伸缩性

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

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

答案 2 :(得分:50)

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

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

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

答案 3 :(得分:22)

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

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

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

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

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

答案 4 :(得分:22)

除了上面的App Engine与计算引擎注释之外,此处的列表还包括与Google Kubernete Engine的比较以及基于从小到大的各种应用程序的经验的一些注释。有关更多要点,请参阅Google Cloud Platform文档,在Choosing an App Engine Environment页面上对App Engine标准版和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版)中。
  • 最小的管理,开发人员只需关注他们的应用程序。 开发人员无需担心以可靠的方式管理VM 在GCE中,或者像GKE一样了解集群。
  • 访问数据存储区很快。首次发布App Engine时,运行时与Datastore位于同一位置。后来的数据存储被拆分了 作为独立产品Cloud Datastore,但App Engine Standard与数据存储区共存的位置仍然存在。
  • 支持访问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通常不可用

Google Kubernetes Engine

赞成

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

缺点

  • 流量分割和管理可能是自己动手做的 利用Istio和特使
  • 一些管理开销
  • 一段时间来提升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慢 发动机
  • 趋势是在雪花GCE实例上安装软件,可以 努力维护

答案 5 :(得分: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云平台平台服务的轻松高效工作能力时,它可能会飙升。

答案 6 :(得分:6)

正如已经说明的那样,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,Cloud Functions,Kubernetes Engine(早期容器引擎),Cloud SQL等。GCE实例是其中最可自定义的单元,因此仅当您的应用程序无法在任何其他GCP服务上运行时才应使用。人们大多数时候都使用GCE将其本地应用程序转移到GCP,因为它需要的更改很少。以后,他们可以选择将其他GCP服务用于其应用程序的单独组件。

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

Standard Environment确实非常快,当没有人使用您的应用程序时,它可以缩减为0个实例,可以在数秒之内扩展和缩减,并且具有专用于Google的服务和库来进行缓存,身份验证等。Standard Environment的警告在于限制非常严格,因为它在沙箱中运行。您只需要对特定的编程语言使用托管运行时。最近添加的是Node.js(8.x)和Python3.x。较早的运行时适用于Go,PHP,Python 2.7,Java等。

Flexible Environment更开放,因为它允许您使用自定义运行时,因为它使用docker容器。因此,如果您的运行时在提供的运行时中不可用,则始终可以为执行环境创建自己的dockerfile。需要注意的是,即使没有人使用您的应用程序,它也需要至少运行1个实例,并且放大和缩小需要几分钟。

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

答案 7 :(得分:4)

云服务提供了从完全托管服务到较少托管服务的一系列选项。较少的托管服务将为开发人员提供更多控制权。 Compute和App Engine的差异也相同。下图详细说明了这一点 enter image description here

答案 8 :(得分:2)

如果您熟悉其他受欢迎的服务:

Google Compute Engine-> AWS EC2

Google App Engine-> Heroku或AWS Elastic Beanstalk

Google云功能-> AWS Lambda函数

答案 9 :(得分:0)

我将以一种对我有意义的方式进行解释:

  • PaaS(计算引擎):如果您是自己动手或拥有IT团队,并且只想在具有特定操作系统的云上租用一台计算机(例如, linux),您可以使用Compute Engine。您必须自己做所有事情。

  • SaaS(App引擎):如果您(例如)是python程序员,并且想在云上租用预配置的计算机,而该计算机上装有运行Web服务器的Linux以及带有必要模块和一些插件以与其他外部服务集成的最新python 3,请使用App Engine。

  • 微服务(云函数):如果您想编写一堆可以完成特定工作的API(函数),则可以使用Google Cloud Functions。您只需关注那些特定的功能,剩下的工作便会完成,以将您的功能公开为微服务。

随着深入,您会失去一些灵活性,但是您不必担心不必要的技术方面。您还可以支付更多费用,但可以节省支持服务(IT部门)的时间和成本:其他人(google)可以为您完成这项工作。

答案 10 :(得分:0)

Google Compute Engine(GCE)

托管在云中的虚拟机(VM)。在云之前,这些通常称为虚拟专用服务器(VPS)。您可以使用与物理服务器相同的方式来使用这些物理服务器,在该物理服务器中,您可以安装和配置操作系统,安装应用程序,安装数据库,使操作系统保持最新状态,等等。这称为基础架构-即服务(IaaS)。

当在数据中心的VM或服务器上运行现有应用程序并希望轻松将其迁移到GCP时,VM最有用。

Google App Engine

App Engine托管并运行您的代码,而无需您处理操作系统,网络以及您必须通过物理服务器或VM管理的许多其他事情。将其视为运行时,可以自动部署,版本化和扩展您的应用程序。这就是所谓的平台即服务(PaaS)。

如果要自动部署和自动缩放应用程序,

App Engine最有用。除非您的应用程序需要自定义操作系统配置,否则App Engine通常比手工配置和管理VM更具优势。