使用Cloud Run实现强大的无服务器 - MásMóvilEngineering


遗留应用程序堆栈已被搁置,基于容器的应用程序已经上升。

在应用程序开发中使用Docker容器有很多好处,现在已经很明显了。我们可以突出其中一些:

  • 亮度
  • 可移植性
  • 几个环境
  • 简易CI / CD

但是容器的所有开发优势导致在生产中操作它们的高度复杂性,这就是新容器编排出现的原因。最受欢迎的协调器Kubernetes为我们提供了安全运行生产工作负载所需的所有工具。

我们的所有资源分组为计算集群,服务发现和开箱即用的负载平衡,内置自我修复和水平扩展,直接与集中式日志系统集成,并提供强大的界面,允许Kubernetes与CI集成CD工具。

所有这些都是有代价的,管理Kubernetes并不容易,这就是为什么云提供商提供托管Kubernetes,如Google Kubernetes EngineAzure Kubernetes服务IBM Kubernetes服务Digital Ocean Kubernetes服务

此外,为了能够使用Kubernetes你需要了解Kubernetes。
但它并没有结束,为了将我们的容器部署到Kubernetes,我们实际上需要一个运行的Kubernetes集群,它具有分配的资源(CPU和RAM可用)。听起来合乎逻辑,对吧?

如果作为开发人员,我有我的容器化应用程序并且我想在不了解Kubernetes以及拥有正在运行的集群的成本和开销的情况下运行它,该怎么办?
在这里它无需救援服务。无服务器并不仅仅意味着您不需要运行基础架构,这也意味着如果您的应用程序未被使用(即它没有收到任何请求),您将不会支付任何费用。我们在市场上有几个无服务器框架,其中一些是商业的,另一些是开源和自托管的。如果我们只关注商业和托管应用程序,我们将看到我们的无服务器应用程序必须满足一些要求:

  • 您必须使用无服务器框架(即Google Cloud Functions)检测应用程序
  • 您的应用程序受无服务器运行时的限制。
  • 您不能简单地使用容器化应用程序。
  • 它们专为不同的用例而设计。

Google推出一款新产品:Google Cloud Run。它为我们提供了最好的编排平台,如Kubernetes,已经提到过,但不需要拥有和维护一个运行不足的基础架构。它就像一个托管的“托管Kubernetes”,我们只要求我们的容器运行。

它提供了额外的好处,例如Zero的真正可扩展性,这意味着如果您的应用程序未被使用,它将自动关闭,如果必须处理请求,那么我们的应用程序将通过快速冷启动进行扩展。
与许多产品一样,谷歌也提供慷慨的免费套餐,非常适合开发。另一方面,它有一个很好的定价模型,我相信我们的许多基于Web的工作负载都可以从中受益,从而降低成本。

Cloud Run构建于Knative之上。它确实是一个有管理的Kubernetes + Istio + Knative集群,所以你不必担心被绑在商业产品上,你无法从中获取。您可以简单地在任何Knative动力基础架构上运行您的工作负载,它将以相同的方式工作。

我们可以说,这是基础架构团队结束和完整的DevOps体验的一步,开发团队负责应用程序的整个生命周期。我们可以真正关注对我们来说重要的事情。