欢迎光临
我们一直在努力

gcp服务器(GCP无服务器的综合指南)

像许多其他营销流行语一样,“无服务器”的概念已经具有了自己的生命,这使得很难理解无服务器实际意味着什么。它真正意味着云提供商完全管理服务器基础设施直到应用层。例如,GCE不是无服务器的,因为在Google管理物理服务器基础架构时,我们仍然需要处理修补操作系统,管理负载平衡器,配置防火墙规则等等。无服务器意味着我们只关心我们的应用程序代码和业务逻辑,而不是别的。这个概念虽然超越了纯计算,但包括数据库,消息队列,流处理,机器学习和其他类型的系统。

无服务器模型有几个好处。首先,它使我们能够专注于构建产品,而不是管理基础架构。这些与运营相关的任务虽然很重要,但通常不会区分业务。这只是为了支持其他业务而必须完成的工作。有了云 – 特别是无服务器 – 许多这些任务正在变得商品化,使我们能够专注于对业务至关重要的事情。

与第一个相关的另一个好处是无服务器系统提供跨多个数据中心的自动扩展和容错,在某些情况下甚至是全局的。当我们利用GCP的无服务器产品时,我们还利用了Google的运营专业知识和一系列SRE的经验。这是一个很大的杠杆作用。很少有公司能够匹配像谷歌或亚马逊这样的投资云提供商能够在基础设施和运营方面做出的贡献,也不应该。如果它不是您的核心业务,请利用规模经济。

最后,无服务器允许我们只为我们使用的东西付费。这与传统IT公司习惯使用的情况有很大不同,在这种情况下,通过合同在大型解决方案上花费数百万美元更为常见。它也与许多基于的公司所使用的不同,在这些公司中,您通常会根据需要提供一些基准容量并支付额外容量的爆发。使用无服务器时,虚拟机将被避开,我们只需为我们用于服务流量的资源付费。这意味着不再担心过度配置或供应不足。

GCP的计算选项

GCP拥有一整套计算选项,从最低管理的VM一直到高度管理的无服务器后端。以下是撰写本文时GCP计算服务的全部内容。我将简要介绍这些服务,以获得土地。我们将从最高级别的抽象开始,然后继续工作,然后我们将研究无服务器解决方案。

GCP计算平台

Firebase是Google管理的Backend-as-a-Service(BaaS)平台。这是GCP提供的最高抽象级别(缺少像G Suite这样的SaaS),并允许您使用最少的服务器端代码快速构建移动和Web应用程序。例如,它可以为您实现用户身份验证和离线数据同步等功能。这通常被称为“后端即服务”,因为没有服务器代码。权衡是您对系统的控制较少,但它非常适合快速原型设计应用程序或以最少的投资建立概念验证。主要优点是您可以将大部分开发工作集中在客户端应用程序代码和用户体验上。请注意,Firebase的某些组件可以在Firebase平台之外使用,例如Cloud Firestore和Firebase身份验证。

云功能是GCP提供的无服务器功能即服务(FaaS)。您上传功能代码,云功能处理它的运行时。因为它是一个沙盒环境,所以对运行时有一些限制,但它是构建事件驱动服务和将系统连接在一起的绝佳选择。虽然您可以开发基本的面向用户的API,但操作工具对于复杂系统来说还不够。优点是云功能具有高弹性,并且由于它是无服务器平台,因此具有最小的操作开销。它们是动态的,事件驱动的管道的最佳选择,例如在服务之间移动数据或对日志事件做出反应。它们适用于基本API,但对于多个端点而言,它们可能会迅速变得复杂。

App Engine是Google的平台即服务(PaaS)。与云函数一样,它是一个固执但完全托管的运行时,允许您上传应用程序代码,同时处理自动调节和容错等操作方面。App Engine有两种模式:Standard,即自负的PaaS运行时,以及Flexible,它允许使用容器提供自定义运行时 – 这通常被称为容器即服务(CaaS)。对于具有快速实例启动时间的无状态应用程序,它通常是一个很好的选择。它提供了云功能的许多优点,但简化了操作方面,因为更大的组件易于部署和管理。App Engine允许开发人员将大部分精力集中在业务逻辑上。Standard非常适合需要服务器端处理和逻辑的绿地应用。

Cloud Run是GCP中的新产品,为无状态容器提供托管计算平台。从本质上讲,Google管理底层计算基础架构,您所要做的就是为它们提供一个应用程序容器。与App Engine一样,它们可以处理上下扩展实例,负载平衡和容错。Cloud Run实际上有两种模式:Google托管版本,在Google的内部计算基础架构(称为Borg)上运行容器以及GKE版本,允许在您自己的GKE集群上运行工作负载。这是因为Cloud Run构建在开源Kubernetes平台上,用于称为Knative的无服务器工作负载。

Cloud Run和App Engine Flex彼此相似,但存在一些细微差别。一个关键的区别是Cloud Run由于依赖于gVisor容器运行时而具有非常快的实例启动时间。另一方面,Flex实例通常需要几分钟才能启动,因为它们涉及配置GCE实例,负载平衡器和其他GCP管理的基础架构。Flex还比Cloud Run功能更丰富,支持流量分割,部署回滚,WebSocket连接和VPC连接等功能。

Kubernetes Engine或GKE是Google管理的Kubernetes服务。GKE有效地在GCE之上添加了一个容器编排层,将其放在IaaS(基础架构即服务)和CaaS之间。这通常是大多数现代应用程序应该要求的最低抽象级别。使用托管Kubernetes服务仍然涉及很多操作开销。

最后,Compute Engine或GCE是Google的VM产品。GCE VM通常在多租户主机上运行,​​但GCP还提供单租户节点,其中物理计算引擎服务器专用于托管单个客户的VM。这是GCP提供的最低级别的基础架构,以及公共云中通常可用的最低公分母,通常称为IaaS。这意味着使用它需要承担很多操作责任。通常很少有需要裸VM的用例。

选择无服务器选项

现在我们已经了解了GCP的计算服务,我们可以专注于无服务器选项。

GCP无服务器计算平台

GCP目前有四个无服务器计算选项(强调计算,因为还有其他无服务器产品,如数据库,队列等,但这些超出了本讨论的范围)。

  • 云运行:无服务器容器(CaaS)
  • App Engine:无服务器平台(PaaS)
  • 云功能:无服务器功能(FaaS)
  • Firebase:无服务器应用程序(BaaS)

有四种不同的无服务器选项可供选择,我们如何确定哪一种是正确的?首先要指出的是,我们不一定需要选择单一解决方案。在构建系统时,我们最终可能会使用这些服务的组合。但是,我在下面提供了一些标准,为不同类型的问题选择解决方案。

火力地堡

如果您希望快速构建应用程序原型或仅关注编写代码,Firebase可能非常适合。如果您希望将大部分投资和时间都集中在客户端应用程序代码和用户体验上,则尤其如此。同样,如果您想构建一个支持移动设备的应用程序,并且不想实现用户身份验证等功能,那么这是一个不错的选择。

Firebase显然是最具限制性和固执己见的解决方案,但它对于快速原型设计和加速MVP开发非常有用。对于需要服务器端计算的情况,您还可以使用App Engine或Cloud Functions等服务对其进行补充。

良好的适应特征

  • 移动优先(或就绪)应用程序
  • 快速原型制作应用程序
  • 大多数逻辑是(或可以)客户端的应用程序
  • 在其他平台上使用Firebase组件,例如在App Engine上使用Cloud Firestore或Firebase身份验证,以最大限度地减少对非差异化工作的投资

不合身特征

  • 需要复杂服务器端逻辑或体系结构的应用程序
  • 需要控制运行时的应用程序

云功能

如果您希望对实时事件做出反应,将系统粘合在一起,或者构建一个简单的API,那么只要您能够使用其中一个受支持的运行时(Node.js,Python和Go),云函数就是一个不错的选择。 )。如果运行时是限制,请查看Cloud Run。

良好的适应特征

  • 事件驱动的应用程序和系统
  • “粘合”系统在一起
  • 部署简单的API

不合身特征

  • 高度有状态的系统
  • 部署大型复杂API
  • 需要高级别控制或需要自定义运行时或二进制文件的系统

App Engine

如果您希望部署完整的应用程序或复杂的API,App Engine值得关注。标准适用于能够适应运行时约束的绿地应用程序。它可以扩展到零并部署占用秒。对于您不愿意或无法进行更改以适应标准的现有应用程序,灵活性更容易。部署到Flex可能需要几分钟,并且您必须始终至少运行一个实例。

良好的适应特征

  • 无状态应用程序
  • 快速开发CRUD重型应用程序
  • 应用程序由一些服务组成
  • 部署复杂的API

不合身特征

  • 需要大量内存状态以满足性能或功能要求的有状态应用程序
  • 使用大型或固定框架或启动时间较慢的应用程序构建的应用程序(这可以通过Flex实现)
  • 需要除HTTP之外的协议的系统

云运行

如果您希望对实时事件做出反应但需要云功能不支持的自定义运行时或二进制文件,则Cloud Run是一个不错的选择。它也是构建无状态基于HTTP的Web服务的好选择。与App Engine Flex相比,它被削减了,这意味着它具有更少的功能,但它也具有更快的实例启动时间,可以扩展到零,并且仅由实际请求处理时间而不是实例时间计费。

良好的适应特征

  • 容易集装箱化的无状态服务
  • 事件驱动的应用程序和系统
  • 需要自定义系统和语言依赖性的应用程序

不合身特征

  • 高度有状态的系统或系统,需要HTTP以外的协议
  • 需要严格控制低级环境和基础架构的合规性要求(Knative GKE模式可能没问题)

最后,Google还提供了一个用于选择无服务器计算平台的决策树。

* App Engine标准环境支持Node.js,Python,Java,Go,PHP

* Cloud Function支持Node.js,Python,Go

摘要

无服务器可以通过释放资源和投资来提供大量的效率,从而专注于对业务而非商品基础架构更具战略性和差异性的事物。使用托管服务和无服务器解决方案时需要权衡利弊。我们失去了一些控制和可见性。在某些使用级别可能存在溢价,因此一旦您破解该障碍,最终租用VM可能是更具成本效益的解决方案。但是,重要的是不仅要考虑管理基础设施所涉及的运营成本,还要考虑机会成本。必须仔细权衡这些权衡取决于它们为企业带来的好处。

值得指出的一件事是,向下移动抽象水平往往比向上移动更容易。也就是说,从更加自以为是的平台转向不那么自以为是的平台,反之亦然,所以通常涉及的摩擦力较小。这就是为什么我们通常建议从最高级别的抽象开始,并在需要时下降。

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。